/ Diretório / Playground / SQLite
● Oficial modelcontextprotocol ⚡ Instantâneo

SQLite

por modelcontextprotocol · modelcontextprotocol/servers

Consulte um arquivo SQLite local. Perfeito para projetos pessoais, dumps de dados exportados ou análise em um arquivo de diário/log/db.

A MCP SQLite de referência. Aponta para um único arquivo SQLite e expõe introspecção de esquema, consultas de leitura e consultas de escrita (configurável). Zero configuração, sem servidor, sem rede — e diferentemente da MCP Postgres, também pode escrever se você permitir.

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

sqlite.replay ▶ pronto
0/0

Instalar

Escolha seu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

Cursor usa o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

Clique no ícone MCP Servers na barra lateral do Cline, depois "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "sqlite",
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  ]
}

O Continue usa um array de objetos de servidor em vez de um map.

~/.config/zed/settings.json
{
  "context_servers": {
    "sqlite": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-server-sqlite",
          "--db-path",
          "/data/sample.db"
        ]
      }
    }
  }
}

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

claude mcp add sqlite -- uvx mcp-server-sqlite --db-path /data/sample.db

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: SQLite

Analise um dump CSV/JSON carregando-o no SQLite

👤 Analistas, engenheiros explorando dados exportados ⏱ ~15 min beginner

Quando usar: Alguém lhe enviou um CSV com 200k linhas e a pergunta 'qual segmento converte melhor?' — muito grande para planilhas, muito pequeno para um DB real.

Pré-requisitos
  • Arquivo de origem no disco — Salve como .csv ou .json em uma pasta de trabalho
  • Um caminho de arquivo SQLite vazio — Escolha um local como /tmp/analysis.db; a MCP irá criá-lo
Fluxo
  1. Criar a tabela e carregar
    Crie uma tabela signups em /tmp/analysis.db correspondendo às colunas de /data/signups.csv. Carregue todas as linhas. Me diga a contagem de linhas.✓ Copiado
    → Tabela criada, contagem de linhas corresponde ao arquivo
  2. Explorar o esquema
    Quais colunas existem? Para cada uma, qual é a distribuição de valores (top 5 valores distintos para categóricas; min/max/avg para numéricas)?✓ Copiado
    → Perfil por coluna
  3. Responda a pergunta real
    Agrupe por signup_source. Para cada um, calcule: total de inscrições, taxa de conversão (inscrições com completed_onboarding=true / total). Classifique por taxa de conversão.✓ Copiado
    → Tabela com qualidade de decisão com o SQL mostrado

Resultado: Respostas defensáveis em 5 minutos, com um arquivo .db que você pode re-consultar quando surgem novas perguntas.

Armadilhas
  • Colunas CSV tipadas automaticamente de forma errada (números como TEXT) — Após carregar, execute PRAGMA table_info(signups) e CAST ou recrie colunas com tipos explícitos se necessário
  • Strings de data não classificam/comparam corretamente como TEXT — Armazene datas como ISO 8601 (YYYY-MM-DDTHH:MM:SSZ) para que lexicográfico = cronológico; ou use julianday() para cálculos
Combine com: filesystem · antv-chart

Inspecione e edite um banco de dados SQLite de um aplicativo pessoal

👤 Devs construindo ferramentas CLI, aplicativos de diário ou software local-first ⏱ ~10 min beginner

Quando usar: Você está construindo um aplicativo local-first, quer ver o que está no DB sem escrever uma CLI para isso.

Fluxo
  1. Pesquise o esquema
    Liste todas as tabelas em /Users/me/Library/Application Support/MyApp/data.db. Para cada uma, mostre esquema e contagem de linhas.✓ Copiado
    → Inventário do DB ao vivo do aplicativo
  2. Investigue uma linha
    Encontre o registro do usuário onde email = '[email protected]'. Mostre a linha e quaisquer linhas relacionadas em outras tabelas (pedidos, sessões).✓ Copiado
    → Visão completa dos dados de um usuário
  3. Corrija dados ruins
    Há um pedido preso em estado 'pending' para esse usuário de 2 dias atrás. Atualize para 'cancelled'. Mostre o SQL antes de executar.✓ Copiado
    → Pré-visualização SQL antes da mutação, depois linha atualizada

Resultado: Depuração de aplicativo sem escrever scripts SQL descartáveis.

Armadilhas
  • O aplicativo pode ter o DB bloqueado aberto com modo WAL — Se você receber 'database is locked', pare o aplicativo ou consulte o snapshot read-only mesclado WAL via ?mode=ro&immutable=1
Combine com: filesystem

Construa acessórios de teste determinísticos a partir de uma amostra de dados de prod

👤 Engenheiros escrevendo testes de integração ⏱ ~25 min intermediate

Quando usar: Você quer dados de teste repetíveis que se pareçam com prod, mas pequenos e seguros.

Fluxo
  1. Amostra de linhas anonimizadas
    De /prod-export/orders.db, amostra 100 linhas de orders cobrindo cada status. Anonimize nomes e e-mails.✓ Copiado
    → Amostra com PII anonimizado
  2. Salve como arquivo fixture
    Escreva as linhas amostradas em /test/fixtures/orders.db como um novo arquivo SQLite. Inclua esquema.✓ Copiado
    → Novo arquivo fixture criado
  3. Verifique contra seu carregador de teste
    Execute meu suite de testes (npm test) — ele pega o novo fixture? Se não, qual é o primeiro teste com falha?✓ Copiado
    → Testes executados; falhas pinçadas

Resultado: Fixtures realistas que não divergem das formas de dados reais.

Armadilhas
  • Anonimização que quebra integridade referencial — Anonimize chaves de junção consistentemente (mesmo hash) em todas as tabelas; nunca randomize por linha
Combine com: filesystem · github

Analise um arquivo de log/evento apoiado por SQLite

👤 Engenheiros depurando ferramentas CLI ou aplicativos que registram no SQLite ⏱ ~10 min beginner

Quando usar: Muitas ferramentas modernas (homebrew, alguns navegadores, caches de aplicativos) armazenam estado em SQLite. Você quer consultá-las.

Fluxo
  1. Confirme que é o arquivo certo
    Abra ~/Library/Application Support/SomeApp/cache.db. Liste tabelas e uma amostra de linhas recentes.✓ Copiado
    → Esquema reconhecível confirma que você tem o arquivo certo
  2. Encontre a resposta
    Quantas entradas o cache contém por domínio de origem? Top 20.✓ Copiado
    → Resultado de agregação
  3. Opcionalmente limpe
    Exclua entradas de domínios que não foram acessados em 90 dias. Mostre contagem primeiro, pergunte antes de deletar.✓ Copiado
    → Pré-visualização, confirmação, depois deletar

Resultado: Respostas sobre o comportamento do aplicativo sem necessidade de um comando 'stats' integrado.

Armadilhas
  • Modificar um DB ao vivo de um aplicativo enquanto o aplicativo está em execução pode corrompê-lo — Sempre feche o aplicativo primeiro ou trabalhe em uma cópia do arquivo .db
Combine com: filesystem

Combinações

Combine com outros MCPs para 10× de alavancagem

sqlite + filesystem

Leia um CSV do disco e carregue no SQLite para análise

Leia /data/orders.csv com MCP do filesystem, infira tipos e carregue em /tmp/analysis.db como tabela orders via MCP sqlite.✓ Copiado
sqlite + antv-chart

Consulte um banco de dados SQLite e gráfico dos resultados

De /tmp/analysis.db, obtenha inscrições mensais para 2026. Renderize como um gráfico de barras via antv-chart.✓ Copiado
sqlite + github

Analise dados, escreva descobertas em um GitHub Issue

Execute minha análise de churn em /tmp/users.db. Crie um GitHub Issue em acme/analytics resumindo os 3 principais descobertas com o apêndice SQL.✓ Copiado

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
list_tables nenhum Primeiro passo em qualquer sessão free
describe_table table_name: str Inspecione o esquema de uma única tabela free
read_query query: str (SELECT apenas) Execute um SELECT — seguro por padrão free
write_query query: str (INSERT/UPDATE/DELETE) Mutate dados — portão; requer consentimento explícito na maioria dos clientes free
create_table query: str (CREATE TABLE ...) DDL — criar ou alterar esquema free
append_insight insight: str Adicione uma descoberta ao memorando da sessão (usado por alguns clientes para construir um relatório) free

Custo e limites

O que custa rodar

Cota de API
Ilimitado — local
Tokens por chamada
Consultas de esquema: pequenas. Conjuntos de resultados dimensionam com contagem de linhas — sempre LIMIT para consultas exploratórias
Monetário
Gratuito
Dica
Adicione LIMIT 100 a cada consulta exploratória e remova apenas quando souber o que está recebendo.

Segurança

Permissões, segredos, alcance

Armazenamento de credenciais: Sem credenciais. O arquivo DB é qualquer caminho que você inicia via --db-path.
Saída de dados: Nenhum do servidor. Os resultados da consulta são enviados para seu provedor de LLM como contexto.
Nunca conceda: nunca aponte para um arquivo contendo dados sensíveis a menos que pretenda que o modelo os veja

Solução de problemas

Erros comuns e correções

database is locked

Outro processo (geralmente o aplicativo que possui o DB) mantém o bloqueio. Feche esse processo ou copie o arquivo .db e consulte a cópia.

Verificar: lsof <db file>
no such table: X

Arquivo DB errado ou esquema não é o que você pensa. Execute list_tables para ver o que realmente está lá. Verifique o arg de inicialização --db-path na configuração do cliente MCP.

datatype mismatch / unexpected NULL

SQLite é dinamicamente tipado — uma coluna declarada INTEGER pode conter TEXT. Use CAST(col AS INTEGER) defensivamente ou corrija no carregamento.

Disk image is malformed

DB corrompido, geralmente por matar um processo durante uma escrita. Tente sqlite3 file.db .recover > out.sql e reconstrua a partir do dump.

Alternativas

SQLite vs. outros

AlternativaQuando usarTroca
Postgres MCPAcesso concorrente multi-usuário, DB em rede ou você já está no PostgresPrecisa de um servidor; MCP Postgres é somente leitura por design
DuckDB (via shell)Mesmo modelo de um arquivo, mas para análises em forma OLAP com varreduras muito mais rápidasSem MCP first-party ainda; colunar, portanto características de desempenho diferentes
dbHubVocê precisa de um MCP para SQLite + Postgres + MySQL + outrosMais novo; menos testado em batalha

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills