Database MCP Server
Servidores MCP que fornecem acesso seguro e estruturado a bancos de dados SQL para clientes de IA. Um pacote instalável por mecanismo de banco de dados. Cada pacote expõe a mesma superfície mínima de duas ferramentas, execute_sql e search_objects, com proteções ativadas por padrão: modo somente leitura, limites de linhas e timeouts de instrução.
Documentação
database-mcp
Servidores MCP que oferecem a clientes de IA acesso seguro e estruturado a bancos de dados SQL.
Um pacote instalável por mecanismo de banco de dados, em TypeScript (npm) e Python (PyPI). Cada pacote expõe a mesma superfície mínima de duas ferramentas, execute_sql e search_objects, com proteções ativadas por padrão: modo somente leitura, limites de linhas e tempos limite de execução de instruções.
Pacotes
| Mecanismo | TypeScript (npm) | Python (PyPI) |
|---|---|---|
| SQLite | @database-mcp/sqlite | database-mcp-sqlite |
| libSQL | @database-mcp/libsql | database-mcp-libsql |
| MySQL | @database-mcp/mysql | database-mcp-mysql |
| MariaDB | @database-mcp/mariadb | database-mcp-mariadb |
| Postgres | @database-mcp/postgres | database-mcp-postgres |
Ambas as linhas são publicadas e passam na mesma suíte de conformidade agnóstica de linguagem contra bancos de dados reais em CI, portanto o comportamento é idêntico independentemente da linguagem. Cada mecanismo também está listado no MCP Registry com ambas as opções de instalação.
Implementações em Go e Rust estão planejadas.
Princípios de design
- Duas ferramentas, nada mais. Uma superfície mínima de ferramentas mantém a janela de contexto do modelo limpa.
search_objectsrevela progressivamente o esquema: chame sem argumentos para listar tabelas, com um nome de tabela para obter colunas, índices e chaves estrangeiras. - Seguro por padrão. O modo somente leitura é aplicado em duas camadas: um guarda SQL conservador, além de uma configuração de sessão somente leitura no próprio banco de dados. As linhas são limitadas (padrão 1000) e as instruções têm tempo limite (padrão 30s).
- Configurado na inicialização, nunca via chat. Os detalhes de conexão vêm de flags, um arquivo de configuração YAML ou variáveis de ambiente. Credenciais nunca são aceitas por meio de uma chamada de ferramenta.
- Segredos nunca aparecem em logs. Senhas vivem em tipos secretos não imprimíveis, DSNs são sanitizados antes do registro em log e um filtro de redação protege o limite do log.
Início rápido
Escolha o pacote do seu mecanismo; cada README tem a superfície completa de configuração. SQLite via npm:
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["-y", "@database-mcp/sqlite", "--dsn", "/absolute/path/to/database.db"]
}
}
}
Ou via PyPI: use "command": "uvx" e "args": ["database-mcp-sqlite", "--dsn", "/absolute/path/to/database.db"]. Flags, variáveis de ambiente e configuração YAML são idênticas em ambas as linhas.
Mecanismos de rede obtêm credenciais do ambiente (MYSQL_*, MARIADB_*, POSTGRES_*/DATABASE_URL, LIBSQL_URL/LIBSQL_AUTH_TOKEN), segredos montados via *_FILE ou um arquivo YAML via --config. Nunca de um prompt de chat.
Contribuindo
Veja CONTRIBUTING.md. A versão curta: a suíte de conformidade é a definição de pronto. Uma alteração só pode ser mesclada quando conformance/run.mjs passa contra todos os servidores afetados.