MCP DB Python 是一个基于 Python 的 Model Context Protocol (MCP) 数据库服务,通过标准输入输出上的 JSON-RPC 提供安全的数据库结构检查和只读查询能力。
该项目封装了基本的 MCP 服务器启动逻辑和数据源适配层,目前专注于 MySQL,以方便快速访问数据库模式信息和只读查询结果在 LLM 工具链中。随着持续维护,接口和数据源适配器将继续扩展,使 MCP 协议能够在各种场景中得到更广泛的集成。
此仓库打包了核心 MCP 服务器循环以及专注于 MySQL 的数据库适配器,使其易于在 LLM 代理工作流中暴露模式元数据和只读查询结果。随着项目的积极维护,API 表面和连接器集将继续扩展。
.env 配置的数据源参数,便于跨环境部署 .env 驱动的连接器设置,实现无缝环境切换。git clone https://github.com/your-account/mcp-db-python.git
cd mcp-db-python
python -m venv venv
# Windows
.\venv\Scripts\activate
# macOS / Linux
source venv/bin/activate
pip install -r requirements.txt
.env 文件,填写 DB_TYPE、DB_HOST、DB_PORT、DB_USER、DB_PASS、DB_NAME。DB_TYPE、DB_HOST、DB_PORT、DB_USER、DB_PASS 和 DB_NAME 值更新 .env 文件。使用 Python 启动 MCP 服务器(通过标准输入输出进行通信)
python server.py
终端将输出 MCP Python Server started,等待提示后,可以通过 MCP 支持的客户端或自定义脚本发送 JSON-RPC 请求。
控制台日志显示 MCP Python Server started,之后 MCP 意识到的客户端或自定义脚本可以与服务器交换 JSON-RPC 消息。
| 方法名称 / 方法 | 描述 / 描述 | 状态 / 状态 |
|---|---|---|
listTables 列出配置数据库中的每个表。 | 完成 | |
getTableSchema | 获取给定表的列元数据。 | 完成 |
runQuery | 执行只读 SQL 查询并返回带有数据行的列 / 执行只读 SQL 并返回带有行的列。 | 实现 / 完成 |
getProcedureDefinition | 获取存储过程的 CREATE 语句。 | 完成 |
listDatabases 列出可访问的数据库以进行跨模式检查。 | 完成 | |
listViews | 枚举带有定义片段的视图。 | 完成 |
getTableStats | 返回表的行数和大小统计信息。 | 完成 |
getIndexInfo | 检查列的索引、类型和唯一性。 | 完成 |
findForeignKeys 列出外键约束和关系。 | 完成 | |
getTriggers | 返回触发器列表和定义 / 获取触发器列表和定义。 | 完成 / 已实现 |
sampleRows | 从指定表中采样几行。 | 完成 |
searchColumns | 按关键字搜索列名和注释。 | 完成 |
describeColumn 提供列的类型、默认值和约束详情。 | 完成 | |
explainQuery 对只读 SQL 运行 EXPLAIN 以检查计划。 | 完成 | |
listProcedures | 列出存储过程和函数。 | 完成 |
listUsers | 概述用户和权限(在允许的情况下) / 概述实例中的用户和权限信息(在允许的情况下)。 | 完成 / 已实现 |
getServerStatus | 返回服务器状态,如版本、连接、引擎等。 | 完成 |
compareSchemas | 比较数据库/表之间的模式结构。 | 完成 |
generateDDL | 输出完整的 CREATE TABLE 语句 / 生成完整的 CREATE TABLE DDL。 | 完成 / 已实现 |
.env 文件由 python-dotenv 自动加载,未配置的项将使用 config/settings.py 中的默认值。.env 文件通过 python-dotenv 自动加载;未设置的键将回退到 config/settings.py 中的默认值。DB_TYPE 不是 mysql,则会抛出 NotImplementedError。DB_TYPE 值将引发 NotImplementedError。db_connectors/ 层实现和注册更多的方法。db_connectors/ 包,并在新的后端可用时注册额外的工具。如果您发现此项目有用,可以通过 Issues 或 Pull Requests 提交需求;接口将继续改进,以涵盖更多的数据库操作和数据分析场景。
欢迎反馈和贡献——新的端点将继续到来,以覆盖更广泛的数据库操作和分析用例。
如果这个项目证明是有用的,您可以赞助继续开发
191341025@qq.com 支持我。191341025@qq.com 捐款。如有任何问题、建议或合作意向,请通过上述邮箱联系,我会尽快回复。
如有疑问、功能请求或合作提案,请通过上述电子邮件联系。
请随意提交一个 Issue 来描述您遇到的问题,或直接发起一个 Pull Request 来贡献代码。当前 main 分支已被保护,只有仓库维护者可以直接推送。请从最新的 main 分支拉取代码,在提交 PR 之前创建自己的功能分支。如果您需要在此仓库中启用额外的受保护分支,请随时通过提供的地址邮件联系我。
请打开问题报告错误或想法,并在希望贡献改进时提交拉取请求。main 分支已受保护,只有维护者可以推送到它;从 main 分支创建您的功能分支,然后打开一个 PR。如果您需要额外的受保护分支进行协作,请通过上述联系方式邮件联系我。