数据库MCP
英语| 简体中文
  
一个开源的MCP服务器,用于在AI代理、IDE助手和桌面MCP客户端中访问数据库。
为真实项目存储数据库设置的方式而构建:在存储库配置文件中,而不仅仅是在shell环境变量中。
数据库MCP为模型提供了一种干净、结构化的工作方式:
| 数据源 | 核心能力 |
|---|---|
| MySQL | 连接、查询、写入、过程、状态 |
| PostgreSQL | 连接、查询、写入、元数据、状态 |
| Redis | 连接、命令、Lua、状态 |
| SQLite | 查询、写入、项目感知路径解析 |
它是为许多团队所面临的现实约束而构建的:
数据库凭据通常不存储在系统环境变量中。它们位于项目文件中,例如 .env, application.yml, application.properties, config.json,或 config.toml.
数据库MCP可以检测这些项目配置,并帮助AI自动连接。
为什么这个项目存在
架构和执行逻辑
graph TD
AI[AI Agent / IDE] -->|Tool Call| MCP[MCP Client]
MCP -->|JSON-RPC| DBMCP[Database MCP Server]
DBMCP -->|Read| Config[Project Config
.env / application.yml, etc.]
DBMCP -->|Connect & Execute| DB[(Database
MySQL / PostgreSQL / Redis / SQLite)]
Config -.->|Auto Detect| DBMCP大多数“AI+数据库”工作流程在以下两点之一发生故障:
- 该模型没有安全、结构化的执行接口
- 模型不知道数据库配置的位置
数据库MCP解决了以下两个问题:
- 它将数据库功能作为MCP工具公开
- 它添加了项目感知配置检测,因此AI可以直接从存储库配置中工作
这使得它在PHP、Go、Java、Spring、Node、Python和混合monorepo环境中特别有用。
亮点
- MySQL、PostgreSQL、Redis和SQLite的统一MCP接口
- 具有分页和超时控制的有限响应
- 连接生命周期工具,如
connect,status,以及disconnect - 从常见配置文件中进行项目感知检测
- 直接的
*_from_project一步式项目驱动连接工具 - 用于长期维护和开源协作的干净存储库结构
“自动”流程实际上是如何工作的
数据库MCP不会独立扫描或执行您的存储库。
实际运行时流程为:
- 您的MCP客户端启动
database-mcp - 人工智能可以看到哪些MCP工具可用
- 根据您的请求,AI会选择下一个要调用的工具
- 如果项目将凭据存储在文件中,则AI可以调用:
project_detect_database_configs
- 在接收到检测到的配置后,AI可以调用:
mysql_connect_from_project pgsql_connect_from_project redis_connect_from_project 或 sqlite_query_from_project
- 一旦连接,人工智能将继续使用正常的查询或元数据工具
因此,自动化来自人工智能的工具编排,而不是来自MCP过程本身。
支持的项目配置源
当前基于项目的检测支持以下常见来源:
.env.env.localapplication.ymlapplication.yamlapplication.propertiesconfig.jsonconfig.toml
支持的模式包括:
- 主机/端口/用户名/密码字段
- 基于DSN和URL的连接
- Spring数据源配置
- 占位符扩展,例如
${DB_HOST}和${DB_PORT:5432}
工具覆盖范围
| 类别 | 工具 |
|---|---|
| MySQL | 11 |
| PostgreSQL | 11 |
| Redis | 6 |
| SQLite | 2 |
| 项目配置检测 | 1 |
| 总计 | 31 |
快速开始
从源代码构建
git clone https://github.com/Mingcharun/mingcha_sql_mcp.git
cd mingcha_sql_mcp
./scripts/build.sh输出:
dist/database-mcp使用脚本安装
curl -fsSL https://raw.githubusercontent.com/Mingcharun/mingcha_sql_mcp/main/scripts/install.sh | bash使用npm运行
npx -y @mingcharun/database-mcp首次基于项目的工具调用
如果您的数据库凭据位于存储库中,典型的第一次调用是:
project_detect_database_configs然后,人工智能可以继续使用其中一个项目感知工具:
mysql_connect_from_projectpgsql_connect_from_projectredis_connect_from_projectsqlite_query_from_project
MCP客户端设置
法典
[mcp_servers.database_mcp]
command = "/absolute/path/to/database-mcp"克劳德桌面版
{
"mcpServers": {
"database_mcp": {
"command": "/absolute/path/to/database-mcp",
"args": []
}
}
}基于npm的设置
{
"mcpServers": {
"database_mcp": {
"command": "npx",
"args": ["-y", "@mingcharun/database-mcp"]
}
}
}典型使用模式
当凭据已知时
使用直接工具:
mysql_connectpgsql_connectredis_connectsqlite_query
当凭据位于存储库中时
使用项目感知序列:
project_detect_database_configs- 什么之中的一个:
mysql_connect_from_project pgsql_connect_from_project redis_connect_from_project
- 查询、元数据或写入工具
对于SQLite:
project_detect_database_configssqlite_query_from_project
仓库的规划
.
├── cmd/database-mcp/ # binary entrypoint
├── internal/service/ # MCP tool registration and handlers
├── internal/database/ # database implementations
├── internal/projectconfig/ # project config detection and parsing
├── docs/ # project documentation
├── packages/npm/ # npm distribution wrapper
├── scripts/ # build and install scripts
├── README.md # English entry document
└── README.zh-CN.md # Chinese entry document文档
- 安装:
docs/installation.md - 架构:
docs/architecture.md - 工具参考:
docs/tool-reference.md - 开发指南:
docs/development.md - 发布指南:
docs/release.md
验证
go test ./...
go test -race ./...
go vet ./...
./scripts/build.sh设计原则
- 使数据库访问可供代理使用,而不仅仅是人类
- 保持输出有界且可预测
- 将MCP编排与数据库实现分开
- 支持真实的项目配置布局
- 保持存储库干净,对贡献者友好
______________________________________________________________________
署名: 明察网安、涉网犯罪技术侦查实验室
