Database
Servidor MCP de base de datos universal que admite múltiples tipos de bases de datos, incluyendo PostgreSQL, Redshift, CockroachDB, MySQL, RDS MySQL, Microsoft SQL Server, BigQuery, Oracle DB y SQLite
Documentación
Multi-Database MCP Server (por Legion AI)
Un servidor que ayuda a las personas a acceder y consultar datos en bases de datos utilizando el Legion Query Runner con integración del SDK de Python del Model Context Protocol (MCP).
Inicio de Generación Aquí
Esta herramienta es proporcionada por Legion AI. Para utilizar la herramienta de análisis de datos de IA completa y totalmente potenciada, visite el sitio. Envíenos un correo electrónico si hay una base de datos que desee que soportemos.
Fin de Generación Aquí
Por qué elegir Database MCP
Database MCP se destaca de otras soluciones de acceso a bases de datos por varias razones convincentes:
- Interfaz unificada de múltiples bases de datos: Conéctese a PostgreSQL, MySQL, SQL Server y otras bases de datos a través de una API consistente única: no es necesario aprender diferentes bibliotecas de cliente para cada tipo de base de datos.
- Integración lista para IA: Construido específicamente para interacciones de asistentes de IA a través del Model Context Protocol (MCP), permitiendo operaciones de bases de datos en lenguaje natural.
- Descubrimiento de esquemas sin configuración: Descubre y expone automáticamente los esquemas de bases de datos sin configuración o mapeo manual.
- Herramientas independientes de la base de datos: Encuentre tablas, explore esquemas y ejecute consultas con el mismo conjunto de herramientas independientemente de la tecnología de base de datos subyacente.
- Gestión segura de credenciales: Maneja los detalles de autenticación de la base de datos de forma segura, separando las credenciales del código de la aplicación.
- Implementación simple: Funciona con entornos modernos de desarrollo de IA como LangChain, FastAPI y otros con una configuración mínima.
- Diseño extensible: Agregue fácilmente herramientas y avisos personalizados para mejorar la funcionalidad para casos de uso específicos.
Ya sea que esté construyendo agentes de IA que necesiten acceso a bases de datos o simplemente desee una interfaz unificada para múltiples bases de datos, Database MCP proporciona una solución optimizada que reduce drásticamente el tiempo y la complejidad del desarrollo.
Características
- Soporte de múltiples bases de datos: conéctese a múltiples bases de datos simultáneamente
- Acceso a bases de datos a través de Legion Query Runner
- Soporte del Model Context Protocol (MCP) para asistentes de IA
- Exponer operaciones de bases de datos como recursos, herramientas y avisos de MCP
- Múltiples opciones de implementación (servidor MCP independiente, integración con FastAPI)
- Ejecución de consultas y manejo de resultados
- Configuración flexible mediante variables de entorno, argumentos de línea de comandos o JSON de configuración de MCP
- Selección de base de datos impulsada por el usuario para configuraciones de múltiples bases de datos
Bases de datos soportadas
| Base de datos | 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 la biblioteca Legion Query Runner como conectores. Puede encontrar más información en su documentación de API.
¿Qué es MCP?
El Model Context Protocol (MCP) es una especificación para mantener el contexto en aplicaciones de IA. Este servidor utiliza el SDK de Python de MCP para:
- Exponer operaciones de bases de datos como herramientas para asistentes de IA
- Proporcionar esquemas y metadatos de bases de datos como recursos
- Generar avisos útiles para operaciones de bases de datos
- Habilitar interacciones con estado con bases de datos
Instalación y configuración
Parámetros requeridos
Para configuración de una sola base de datos:
- DB_TYPE: El código de tipo de base de datos (ver tabla anterior)
- DB_CONFIG: Una cadena de configuración JSON para la conexión a la base de datos
Para configuración de múltiples bases de datos:
- DB_CONFIGS: Una matriz JSON de configuraciones de bases de datos, cada una con:
- db_type: El código de tipo de base de datos
- configuration: Configuración de conexión a la base de datos
- description: Una descripción legible por humanos de la base de datos
El formato de configuración varía según el tipo de base de datos. Consulte la documentación de API para obtener detalles de configuración específicos de la base de datos.
Métodos de instalación
Opción 1: Usando UV (Recomendado)
Cuando se usa uv, no se necesita una instalación específica. Usaremos uvx para ejecutar directamente database-mcp.
Ejemplo de configuración UV (una sola base de datos):
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": []
}
}
}
Ejemplo de configuración UV (múltiples bases de datos):
{
"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": []
}
}
}
Opción 2: Usando PIP
Instale mediante pip:
pip install database-mcp
Ejemplo de configuración PIP (una sola base de datos):
{
"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\"}"
}
}
}
}
Ejecutando el servidor
Modo de producción
python mcp_server.py
Métodos de configuración
Variables de entorno (una sola base de datos)
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
Variables de entorno (múltiples bases de datos)
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
Si no especifica un ID, el sistema generará uno automáticamente basado en el tipo y la descripción de la base de datos:
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 línea de comandos (una sola base de datos)
python mcp_server.py --db-type pg --db-config '{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
Argumentos de línea de comandos (múltiples bases de datos)
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"}]'
Tenga en cuenta que puede especificar IDs personalizados para cada base de datos usando el campo id, o dejar que el sistema los genere basándose en el tipo y la descripción de la base de datos.
Soporte para múltiples bases de datos
Al conectarse a múltiples bases de datos, debe especificar qué base de datos usar para cada consulta:
- Use la herramienta
list_databasespara ver las bases de datos disponibles con sus IDs - Use
get_database_infopara ver los detalles del esquema de las bases de datos - Use
find_tablepara localizar una tabla en todas las bases de datos - Proporcione el parámetro
db_ida herramientas comoexecute_query,get_table_columns, etc.
Las conexiones a bases de datos se gestionan internamente como un diccionario de objetos DbConfig, con cada base de datos teniendo un ID único. La información del esquema se representa como una lista de objetos de tabla, donde cada tabla contiene su nombre e información de columnas.
El aviso select_database guía a los usuarios a través del proceso de selección de bases de datos.
Representación del esquema
Los esquemas de bases de datos se representan como una lista de objetos de tabla, donde cada tabla contiene información sobre sus columnas:
[
{
"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 representación facilita el acceso programático a la información de tablas y columnas mientras se mantiene una estructura jerárquica limpia.
Capacidades MCP expuestas
Recursos
| Recurso | Descripción |
|---|---|
resource://schema/{database_id} | Obtener los esquemas de una o todas las bases de datos configuradas |
Herramientas
| Herramienta | Descripción |
|---|---|
execute_query | Ejecutar una consulta SQL y devolver resultados como tabla markdown |
execute_query_json | Ejecutar una consulta SQL y devolver resultados como JSON |
get_table_columns | Obtener nombres de columnas para una tabla específica |
get_table_types | Obtener tipos de columnas para una tabla específica |
get_query_history | Obtener el historial reciente de consultas |
list_databases | Listar todas las conexiones de bases de datos disponibles |
get_database_info | Obtener información detallada sobre una base de datos, incluido el esquema |
find_table | Encontrar qué base de datos contiene una tabla específica |
describe_table | Obtener descripción detallada de una tabla, incluidos nombres y tipos de columnas |
get_table_sample | Obtener una muestra de datos de una tabla |
Todas las herramientas específicas de bases de datos (como execute_query, get_table_columns, etc.) requieren un parámetro db_id para especificar qué base de datos usar.
Avisos
| Aviso | Descripción |
|---|---|
sql_query | Crear una consulta SQL contra la base de datos |
explain_query | Explicar qué hace una consulta SQL |
optimize_query | Optimizar una consulta SQL para un mejor rendimiento |
select_database | Ayudar al usuario a seleccionar qué base de datos usar |
Desarrollo
Usando MCP Inspector
ejecute esto para iniciar el inspector
npx @modelcontextprotocol/inspector uv run src/database_mcp/mcp_server.py
luego, en el campo de entrada de comandos, establezca 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"}'
Pruebas
uv pip install -e ".[dev]"
pytest
Publicación
# 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/*
Licencia
Este repositorio está licenciado bajo GPL