A server that helps people access and query data in databases using the Legion Query Runner with integration of the Model Context Protocol (MCP) Python SDK.
This tool is provided by Legion AI. To use the full-fledged and fully powered AI data analytics tool, please visit the site.
- Database access via Legion Query Runner
- Model Context Protocol (MCP) support for AI assistants
- Expose database operations as MCP resources, tools, and prompts
- Multiple deployment options (standalone MCP server, FastAPI integration)
- Query execution and result handling
- Flexible configuration via environment variables, command-line arguments, or MCP settings JSON
Database | DB_TYPE code |
---|---|
PostgreSQL | pg |
Redshift | redshift |
CockroachDB | cockroach |
MySQL | mysql |
RDS MySQL | rds_mysql |
Microsoft SQL Server | mssql |
Big Query | bigquery |
Oracle DB | oracle |
SQLite | sqlite |
We use Legion Query Runner library as connectors. You can find more info on their api doc.
The Model Context Protocol (MCP) is a specification for maintaining context in AI applications. This server uses the MCP Python SDK to:
- Expose database operations as tools for AI assistants
- Provide database schemas and metadata as resources
- Generate useful prompts for database operations
- Enable stateful interactions with databases
Two parameters are required for all installation methods:
- DB_TYPE: The database type code (see table above)
- DB_CONFIG: A JSON configuration string for database connection
The DB_CONFIG format varies by database type. See the API documentation for database-specific configuration details.
When using uv
, no specific installation is needed. We will use uvx
to directly run database-mcp.
UV Configuration Example:
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": []
}
}
}
Install via pip:
pip install database-mcp
PIP Configuration Example:
{
"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\"}"
}
}
}
}
mcp dev mcp_server.py
python mcp_server.py
export DB_TYPE="pg" # or mysql, postgresql, etc.
export DB_CONFIG='{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
mcp dev mcp_server.py
python mcp_server.py --db-type pg --db-config '{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
Or with UV:
uv mcp_server.py --db-type pg --db-config '{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
Resource | Description |
---|---|
schema://all |
Get the complete database schema |
Tool | Description |
---|---|
execute_query |
Execute a SQL query and return results as a markdown table |
execute_query_json |
Execute a SQL query and return results as JSON |
get_table_columns |
Get column names for a specific table |
get_table_types |
Get column types for a specific table |
get_query_history |
Get the recent query history |
Prompt | Description |
---|---|
sql_query |
Create an SQL query against the database |
explain_query |
Explain what a SQL query does |
optimize_query |
Optimize a SQL query for better performance |
uv pip install -e ".[dev]"
pytest
rm -rf dist/ build/ *.egg-info/ && python -m build
python -m build
python -m twine upload dist/*
This repository is licensed under GPL