关于 Multi-Database MCP Server (by Legion AI)
Multi-Database MCP Server 由 Legion AI 提供,基于 Python 与 MCP SDK,让 AI 助手通过统一接口查询多种数据库。它使用 Legion Query Runner 作为连接器,并支持同时配置多个数据库。
主要功能
- 01统一接口访问多种数据库
- 02同时连接多个数据库
- 03自动发现数据库模式
- 04支持 SQL 查询并返回表格或 JSON
- 05提供 SQL 编写、解释与优化提示词
- 06通过环境变量或命令行参数配置
适用场景
- 01让 AI 助手查询 PostgreSQL 或 MySQL 中的数据
- 02在多个数据库之间查找包含某张表的数据库
- 03为 SQL 查询生成解释与优化建议
MCP 相关
该服务以 MCP 服务形式运行,向客户端暴露数据库 schema 资源,以及 execute_query、list_databases、find_table 等工具和若干提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
多数据库 MCP 服务(由 Legion AI 提供)
借助 Legion Query Runner 并集成 Model Context Protocol(MCP)Python SDK,帮助用户访问和查询数据库的服务。
Start Generation Here
此工具由 Legion AI 提供。如需使用功能齐全、性能强大的 AI 数据分析工具,请访问该网站。如果您希望我们支持某种数据库,请发送邮件联系我们。
End Generation Here
为什么选择 Database MCP
与其他数据库访问解决方案相比,Database MCP 具有以下突出优势:
- 统一的多数据库接口:通过单一且一致的 API 连接 PostgreSQL、MySQL、SQL Server 等数据库,无需为每种数据库类型学习不同的客户端库。
- 面向 AI 的集成:专为通过 Model Context Protocol(MCP)与 AI 助手交互而构建,可使用自然语言执行数据库操作。
- 零配置架构发现:无需手动配置或映射,即可自动发现并公开数据库架构。
- 与数据库无关的工具:无论底层数据库技术如何,都可以使用同一套工具查找表、探索架构和执行查询。
- 安全的凭据管理:安全处理数据库身份验证信息,并将凭据与应用程序代码分离。
- 简单部署:只需最少的设置,即可与 LangChain、FastAPI 等现代 AI 开发环境协同工作。
- 可扩展设计:轻松添加自定义工具和提示词,以增强特定使用场景的功能。
无论您是在构建需要访问数据库的 AI Agent,还是只想通过统一接口访问多个数据库,Database MCP 都能提供简化的解决方案,大幅缩短开发时间并降低复杂度。
功能
- 支持多数据库,可同时连接多个数据库
- 通过 Legion Query Runner 访问数据库
- 支持 Model Context Protocol(MCP),供 AI 助手使用
- 将数据库操作公开为 MCP 资源、工具和提示词
- 提供多种部署方式(独立 MCP 服务、FastAPI 集成)
- 执行查询并处理结果
- 可通过环境变量、命令行参数或 MCP 设置 JSON 灵活配置
- 支持多数据库设置下由用户选择数据库
支持的数据库
| 数据库 | 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 Query Runner 库作为连接器。更多信息请参阅其 API 文档。
什么是 MCP?
Model Context Protocol(MCP)是一项用于在 AI 应用程序中维护上下文的规范。本服务使用 MCP Python SDK 来:
- 将数据库操作公开为供 AI 助手使用的工具
- 将数据库架构和元数据作为资源提供
- 为数据库操作生成实用的提示词
- 支持与数据库进行有状态交互
安装与配置
必需参数
单数据库配置:
- DB_TYPE:数据库类型代码(见上表)
- DB_CONFIG:用于数据库连接的 JSON 配置字符串
多数据库配置:
- DB_CONFIGS:数据库配置的 JSON 数组,每项包含:
- db_type:数据库类型代码
- configuration:数据库连接配置
- description:便于用户理解的数据库说明
配置格式因数据库类型而异。有关特定数据库的配置详情,请参阅 API 文档。
安装方式
选项 1:使用 UV(推荐)
使用 uv 时,无需进行特定安装。我们将使用 uvx 直接运行 database-mcp。
UV 配置示例(单个数据库):
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": []
}
}
}
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": []
}
}
}
选项 2:使用 PIP
通过 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" # 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
环境变量(多个数据库)
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,系统会根据数据库类型和描述自动生成一个 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"}]'
# IDs will be generated as something like "pg_postgres_0" and "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,也可以让系统根据数据库类型和描述自动生成 ID。
多数据库支持
连接多个数据库时,你需要为每个查询指定要使用的数据库:
- 使用
list_databases工具查看可用数据库及其 ID - 使用
get_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"}
]
}
]
这种表示方式便于以编程方式访问表和列信息,同时保持清晰的层级结构。
暴露的 MCP 功能
资源
| 资源 | 描述 |
|---|---|
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 | 帮助用户选择要使用的数据库 |
开发
使用 MCP Inspector
运行以下命令启动检查器
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
发布
# 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/*
许可证
此仓库采用 GPL 许可
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。