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.
Features
- 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
Supported Databases
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.
What is MCP?
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
Installation & Configuration
Required Parameters
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.
Installation Methods
Option 1: Using UV (Recommended)
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": []
}
}
}
Option 2: Using PIP
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"}"
}
}
}
}
Running the Server
Development Mode
mcp dev mcp_server.py
Production Mode
python mcp_server.py
Configuration Methods
Environment Variables
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
Command Line Arguments
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"}'
Exposed MCP Capabilities
Resources
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 |
Prompts
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 |
Development
Testing
uv pip install -e ".[dev]"
pytest
Publishing
rm -rf dist/ build/ *.egg-info/ && python -m build
python -m build
python -m twine upload dist/*
License
This repository is licensed under GPL