Database MCP Server (by Legion AI)
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 |
Tools
| 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