Legion-MCP 数据库查询服务器添加福利群:解决AI开发者的「MCP实战痛点」这是一个帮助用户通过Legion查询运行器访问和查询数据库数据的服务器,集成了模型上下文协议(MCP)Python SDK。
本工具由Legion AI提供。如需使用功能完备的AI数据分析工具,请访问该网站。如果您希望我们支持某个特定数据库,请通过邮件联系我们。
数据库MCP因其以下显著优势而从其他数据库访问方案中脱颖而出:
无论您是在构建需要数据库访问的AI代理,还是仅仅想要一个统一的多数据库接口,数据库MCP都提供了一个简化的解决方案,大大减少了开发时间和复杂性。
| 数据库 | 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 |
我们使用Legion查询运行器库作为连接器。您可以在他们的API文档中找到更多信息。
模型上下文协议(MCP)是一种用于在AI应用程序中维护上下文的规范。该服务器使用MCP Python SDK来:
对于单数据库配置:
对于多数据库配置:
配置格式因数据库类型而异。有关特定数据库的配置详情,请参阅API文档。
使用uv时,不需要特定的安装。我们将使用uvx直接运行database-mcp。
UV配置示例(单数据库):
将DB_TYPE和DB_CONFIG替换为您的连接信息。
{
"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": []
}
}
}

UV配置示例(多数据库):
{
"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": []
}
}
}

通过pip安装:
pip install database-mcp
PIP配置示例(单数据库):
{
"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\"}"
}
}
}
}

python mcp_server.py
export DB_TYPE="pg" # 或mysql,postgresql等
export DB_CONFIG='{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
uv run src/database_mcp/mcp_server.py

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

如果您没有指定ID,系统将根据数据库类型和描述自动生成一个:
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"}]'
# ID将自动生成为类似"pg_postgres_0"和"my_mysqldb_1"的形式
uv run src/database_mcp/mcp_server.py

python mcp_server.py --db-type pg --db-config '{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'

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"}]'

请注意,您可以使用id字段为每个数据库指定自定义ID,或者让系统根据数据库类型和描述生成它们。
当连接到多个数据库时,您需要为每个查询指定使用哪个数据库:
list_databases工具查看可用数据库及其IDget_database_info查看数据库的模式详情find_table在所有数据库中查找表execute_query、get_table_columns等工具提供db_id参数数据库连接在内部作为DbConfig对象的字典进行管理,每个数据库都有唯一的ID。模式信息表示为表对象的列表,其中每个表包含其名称和列信息。
select_database提示引导用户完成数据库选择过程。
数据库模式表示为表对象的列表,其中每个表包含有关其列的信息:
[
{
"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"}
]
}
]

这种表示方式使得可以以编程方式访问表和列信息,同时保持清晰的层次结构。
| 资源 | 描述 |
|---|---|
resource://schema/{database_id} |
获取一个或所有配置数据库的模式 |
| 工具 | 描述 |
|---|---|
execute_query |
执行SQL查询并以markdown表格形式返回结果 |
execute_query_json |
执行SQL查询并以JSON形式返回结果 |
get_table_columns |
获取特定表的列名 |
get_table_types |
获取特定表的列类型 |
get_query_history |
获取最近的查询历史 |
list_databases |
列出所有可用的数据库连接 |
get_database_info |
获取包括模式在内的数据库详细信息 |
find_table |
查找包含特定表的数据库 |
describe_table |
获取表的详细描述,包括列名和类型 |
get_table_sample |
从表中获取数据样本 |
所有特定于数据库的工具(如execute_query、get_table_columns等)都需要一个db_id参数来指定使用哪个数据库。
| 提示 | 描述 |
|---|---|
sql_query |
针对数据库创建SQL查询 |
explain_query |
解释SQL查询的作用 |
optimize_query |
优化SQL查询以获得更好的性能 |
select_database |
帮助用户选择要使用的数据库 |
运行以下命令启动检查器:
npx @modelcontextprotocol/inspector uv run src/database_mcp/mcp_server.py
然后在命令输入字段中设置类似以下内容:
run src/database_mcp/mcp_server.py --db-type pg --db-config '{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
uv pip install -e ".[dev]"
pytest

# 清理构建工件
rm -rf dist/ build/
# 如果存在,删除任何.egg-info目录
find . -name "*.egg-info" -type d -exec rm -rf {} + 2>/dev/null || true
# 构建包
uv run python -m build
# 上传到PyPI
uv run python -m twine upload dist/*

本仓库采用GPL许可证。