Database
Servidor MCP de banco de dados universal com suporte a múltiplos tipos de banco de dados, incluindo PostgreSQL, Redshift, CockroachDB, MySQL, RDS MySQL, Microsoft SQL Server, BigQuery, Oracle DB e SQLite
Documentação
Servidor MCP Multi-Banco de Dados (por Legion AI)
Um servidor que ajuda pessoas a acessar e consultar dados em bancos de dados usando o Legion Query Runner com integração do Model Context Protocol (MCP) Python SDK.
Início da Geração Aqui
Esta ferramenta é fornecida pela Legion AI. Para usar a ferramenta completa e totalmente poderosa de análise de dados com IA, visite o site. Envie-nos um e-mail se houver um banco de dados que você queira que suportemos.
Fim da Geração Aqui
Por que escolher o Database MCP
O Database MCP se destaca de outras soluções de acesso a banco de dados por vários motivos convincentes:
- Interface Unificada Multi-Banco de Dados: Conecte-se a PostgreSQL, MySQL, SQL Server e outros bancos de dados através de uma única API consistente - sem necessidade de aprender diferentes bibliotecas de cliente para cada tipo de banco de dados.
- Integração Pronta para IA: Construído especificamente para interações com assistentes de IA através do Model Context Protocol (MCP), permitindo operações de banco de dados em linguagem natural.
- Descoberta de Esquema com Zero Configuração: Descobre e expõe automaticamente esquemas de banco de dados sem configuração ou mapeamento manual.
- Ferramentas Agnósticas de Banco de Dados: Encontre tabelas, explore esquemas e execute consultas com o mesmo conjunto de ferramentas, independentemente da tecnologia de banco de dados subjacente.
- Gerenciamento Seguro de Credenciais: Lida com detalhes de autenticação de banco de dados de forma segura, separando credenciais do código da aplicação.
- Implantação Simples: Funciona com ambientes modernos de desenvolvimento de IA como LangChain, FastAPI e outros com configuração mínima.
- Design Extensível: Adicione facilmente ferramentas e prompts personalizados para melhorar a funcionalidade para casos de uso específicos.
Esteja você construindo agentes de IA que precisam de acesso a banco de dados ou simplesmente queira uma interface unificada para múltiplos bancos de dados, o Database MCP fornece uma solução simplificada que reduz drasticamente o tempo de desenvolvimento e a complexidade.
Recursos
- Suporte a múltiplos bancos de dados - conecte-se a vários bancos de dados simultaneamente
- Acesso a banco de dados via Legion Query Runner
- Suporte ao Model Context Protocol (MCP) para assistentes de IA
- Exponha operações de banco de dados como recursos, ferramentas e prompts MCP
- Múltiplas opções de implantação (servidor MCP autônomo, integração FastAPI)
- Execução de consultas e tratamento de resultados
- Configuração flexível via variáveis de ambiente, argumentos de linha de comando ou JSON de configurações MCP
- Seleção de banco de dados orientada pelo usuário para configurações multi-banco de dados
Bancos de Dados Suportados
| Banco de Dados | Código DB_TYPE |
|---|---|
| PostgreSQL | pg |
| Redshift | redshift |
| CockroachDB | cockroach |
| MySQL | mysql |
| RDS MySQL | rds_mysql |
| Microsoft SQL Server | mssql |
| Big Query | bigquery |
| Oracle DB | oracle |
| SQLite | sqlite |
Usamos a biblioteca Legion Query Runner como conectores. Você pode encontrar mais informações na documentação da API.
O que é MCP?
O Model Context Protocol (MCP) é uma especificação para manter contexto em aplicações de IA. Este servidor usa o MCP Python SDK para:
- Expor operações de banco de dados como ferramentas para assistentes de IA
- Fornecer esquemas e metadados de banco de dados como recursos
- Gerar prompts úteis para operações de banco de dados
- Habilitar interações com estado com bancos de dados
Instalação e Configuração
Parâmetros Necessários
Para configuração de banco de dados único:
- DB_TYPE: O código do tipo de banco de dados (veja a tabela acima)
- DB_CONFIG: Uma string de configuração JSON para conexão com o banco de dados
Para configuração multi-banco de dados:
- DB_CONFIGS: Um array JSON de configurações de banco de dados, cada uma contendo:
- db_type: O código do tipo de banco de dados
- configuration: Configuração de conexão do banco de dados
- description: Uma descrição legível do banco de dados
O formato de configuração varia por tipo de banco de dados. Veja a documentação da API para detalhes de configuração específicos de cada banco de dados.
Métodos de Instalação
Opção 1: Usando UV (Recomendado)
Ao usar uv, nenhuma instalação específica é necessária. Usaremos uvx para executar diretamente o database-mcp.
Exemplo de Configuração UV (Banco de Dados Único):
REPLACE DB_TYPE and DB_CONFIG with your connection info.
{
"mcpServers": {
"database-mcp": {
"command": "uvx",
"args": [
"database-mcp"
],
"env": {
"DB_TYPE": "pg",
"DB_CONFIG": "{\"host\":\"localhost\",\"port\":5432,\"user\":\"user\",\"password\":\"pw\",\"dbname\":\"dbname\"}"
},
"disabled": true,
"autoApprove": []
}
}
}
Exemplo de Configuração UV (Múltiplos Bancos de Dados):
{
"mcpServers": {
"database-mcp": {
"command": "uvx",
"args": [
"database-mcp"
],
"env": {
"DB_CONFIGS": "[{\"id\":\"pg_main\",\"db_type\":\"pg\",\"configuration\":{\"host\":\"localhost\",\"port\":5432,\"user\":\"user\",\"password\":\"pw\",\"dbname\":\"postgres\"},\"description\":\"PostgreSQL Database\"},{\"id\":\"mysql_data\",\"db_type\":\"mysql\",\"configuration\":{\"host\":\"localhost\",\"port\":3306,\"user\":\"root\",\"password\":\"pass\",\"database\":\"mysql\"},\"description\":\"MySQL Database\"}]"
},
"disabled": true,
"autoApprove": []
}
}
}
Opção 2: Usando PIP
Instale via pip:
pip install database-mcp
Exemplo de Configuração PIP (Banco de Dados Único):
{
"mcpServers": {
"database": {
"command": "python",
"args": [
"-m", "database_mcp",
"--repository", "path/to/git/repo"
],
"env": {
"DB_TYPE": "pg",
"DB_CONFIG": "{\"host\":\"localhost\",\"port\":5432,\"user\":\"user\",\"password\":\"pw\",\"dbname\":\"dbname\"}"
}
}
}
}
Executando o Servidor
Modo de Produção
python mcp_server.py
Métodos de Configuração
Variáveis de Ambiente (Banco de Dados Único)
export DB_TYPE="pg" # or mysql, postgresql, etc.
export DB_CONFIG='{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
uv run src/database_mcp/mcp_server.py
Variáveis de Ambiente (Múltiplos Bancos de Dados)
export DB_CONFIGS='[{"id":"pg_main","db_type":"pg","configuration":{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"},"description":"PostgreSQL Database"},{"id":"mysql_users","db_type":"mysql","configuration":{"host":"localhost","port":3306,"user":"root","password":"pass","database":"mysql"},"description":"MySQL Database"}]'
uv run src/database_mcp/mcp_server.py
Se você não especificar um ID, o sistema gerará um automaticamente com base no tipo e na descrição do banco de dados:
export DB_CONFIGS='[{"db_type":"pg","configuration":{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"},"description":"PostgreSQL Database"},{"db_type":"mysql","configuration":{"host":"localhost","port":3306,"user":"root","password":"pass","database":"mysql"},"description":"MySQL Database"}]'
# IDs will be generated as something like "pg_postgres_0" and "my_mysqldb_1"
uv run src/database_mcp/mcp_server.py
Argumentos de Linha de Comando (Banco de Dados Único)
python mcp_server.py --db-type pg --db-config '{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
Argumentos de Linha de Comando (Múltiplos Bancos de Dados)
python mcp_server.py --db-configs '[{"id":"pg_main","db_type":"pg","configuration":{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"},"description":"PostgreSQL Database"},{"id":"mysql_users","db_type":"mysql","configuration":{"host":"localhost","port":3306,"user":"root","password":"pass","database":"mysql"},"description":"MySQL Database"}]'
Observe que você pode especificar IDs personalizados para cada banco de dados usando o campo id, ou deixar o sistema gerá-los com base no tipo e na descrição do banco de dados.
Suporte a Múltiplos Bancos de Dados
Ao conectar-se a múltiplos bancos de dados, você precisa especificar qual banco de dados usar para cada consulta:
- Use a ferramenta
list_databasespara ver os bancos de dados disponíveis com seus IDs - Use
get_database_infopara visualizar detalhes do esquema dos bancos de dados - Use
find_tablepara localizar uma tabela em todos os bancos de dados - Forneça o parâmetro
db_ida ferramentas comoexecute_query,get_table_columns, etc.
As conexões de banco de dados são gerenciadas internamente como um dicionário de objetos DbConfig, com cada banco de dados tendo um ID único. As informações de esquema são representadas como uma lista de objetos de tabela, onde cada tabela contém seu nome e informações de coluna.
O prompt select_database guia os usuários pelo processo de seleção de banco de dados.
Representação de Esquema
Os esquemas de banco de dados são representados como uma lista de objetos de tabela, com cada tabela contendo informações sobre suas colunas:
[
{
"name": "users",
"columns": [
{"name": "id", "type": "integer"},
{"name": "username", "type": "varchar"},
{"name": "email", "type": "varchar"}
]
},
{
"name": "orders",
"columns": [
{"name": "id", "type": "integer"},
{"name": "user_id", "type": "integer"},
{"name": "product_id", "type": "integer"},
{"name": "quantity", "type": "integer"}
]
}
]
Esta representação facilita o acesso programático às informações de tabelas e colunas, mantendo uma estrutura hierárquica limpa.
Capacidades MCP Expostas
Recursos
| Recurso | Descrição |
|---|---|
resource://schema/{database_id} | Obter os esquemas de um ou todos os bancos de dados configurados |
Ferramentas
| Ferramenta | Descrição |
|---|---|
execute_query | Executar uma consulta SQL e retornar resultados como tabela markdown |
execute_query_json | Executar uma consulta SQL e retornar resultados como JSON |
get_table_columns | Obter nomes de colunas para uma tabela específica |
get_table_types | Obter tipos de colunas para uma tabela específica |
get_query_history | Obter o histórico recente de consultas |
list_databases | Listar todas as conexões de banco de dados disponíveis |
get_database_info | Obter informações detalhadas sobre um banco de dados, incluindo esquema |
find_table | Encontrar qual banco de dados contém uma tabela específica |
describe_table | Obter descrição detalhada de uma tabela, incluindo nomes e tipos de colunas |
get_table_sample | Obter uma amostra de dados de uma tabela |
Todas as ferramentas específicas de banco de dados (como execute_query, get_table_columns, etc.) exigem um parâmetro db_id para especificar qual banco de dados usar.
Prompts
| Prompt | Descrição |
|---|---|
sql_query | Criar uma consulta SQL contra o banco de dados |
explain_query | Explicar o que uma consulta SQL faz |
optimize_query | Otimizar uma consulta SQL para melhor desempenho |
select_database | Ajudar o usuário a selecionar qual banco de dados usar |
Desenvolvimento
Usando o MCP Inspector
execute isto para iniciar o inspector
npx @modelcontextprotocol/inspector uv run src/database_mcp/mcp_server.py
depois, no campo de entrada de comando, defina algo como
run src/database_mcp/mcp_server.py --db-type pg --db-config '{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
Testes
uv pip install -e ".[dev]"
pytest
Publicação
# Clean up build artifacts
rm -rf dist/ build/
# Remove any .egg-info directories if they exist
find . -name "*.egg-info" -type d -exec rm -rf {} + 2>/dev/null || true
# Build the package
uv run python -m build
# Upload to PyPI
uv run python -m twine upload dist/*
Licença
Este repositório é licenciado sob GPL