db-mcp
Provides tools for MongoDB document operations including find, insert, update, delete, count, and collection listing.
Provides tools for querying, inserting, updating, and deleting data in MySQL databases with runtime protections and connection management.
Provides tools for Redis key-value operations including get, set, delete, key scanning, and memory usage analysis.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@db-mcpList all tables in the MySQL database"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
db-mcp
为什么做这个项目
大模型很擅长“查数据、做归纳、解释结果”,但直接把数据库完全暴露给模型,通常会遇到几个问题:
凭证不想反复传给模型
查询结果可能过大,把上下文和服务一起拖垮
写操作需要分级控制,不能一把梭哈
连接掉了、池满了、请求排队了,调用方却看不出来
db-mcp 的目标很明确:把数据库接入 AI 的过程做成一个更稳、更可控、也更适合放到真实工作流里的 MCP 服务。
核心特性
能力 | 说明 |
多数据库支持 | 同时支持 |
默认更安全 | 默认 |
运行时保护 | 超时、响应裁剪、并发限制、Mongo 查询 limit、MySQL |
连接感知 | 支持预配置连接、手动连接、实时连接健康检查 |
运维可观测 | 可直接查看连接状态、并发排队、连接池摘要 |
可接入 MCP 客户端 | 标准 MCP Server,可接入 Cursor、Claude Desktop 等客户端 |
示例预览
快速开始
1. 安装
git clone git@github_pig:wannanbigpig/db-mcp.git
cd db-mcp
npm install
npm run build要求:
Node.js >= 18npm >= 9
2. 运行
npm run dev或:
node dist/index.js如果终端输出 db-mcp 服务器已启动,说明服务已正常启动。
3. 可选配置
cp config.json.example config.json编辑 config.json,填入你的数据库连接信息。推荐优先使用预配置连接,而不是把数据库密码作为工具参数传给模型。
MCP 客户端配置
db-mcp 是标准 MCP 服务,可接入支持 MCP 的客户端,例如:
CodexCursorClaude Desktop其他兼容 MCP 的工具
Codex
在 ~/.codex/config.toml 中加入:
[mcp_servers.db-mcp]
command = "node"
args = ["/path/to/db-mcp/dist/index.js"]
enabled = true
[mcp_servers.db-mcp.env]
DB_MCP_SECURITY_MODE = "read_only"
DB_MCP_CONFIG_PATH = "/path/to/config.json"
DB_MCP_MAX_RESPONSE_BYTES = "65536"
DB_MCP_MYSQL_SELECT_LIMIT = "500"也可以直接使用命令添加:
codex mcp add db-mcp \
--env DB_MCP_SECURITY_MODE=read_only \
--env DB_MCP_CONFIG_PATH=/path/to/config.json \
--env DB_MCP_MAX_RESPONSE_BYTES=65536 \
--env DB_MCP_MYSQL_SELECT_LIMIT=500 \
-- node /path/to/db-mcp/dist/index.jsCursor
{
"mcpServers": {
"db-mcp": {
"command": "node",
"args": ["/path/to/db-mcp/dist/index.js"],
"env": {
"DB_MCP_SECURITY_MODE": "read_only",
"DB_MCP_CONFIG_PATH": "/path/to/config.json"
}
}
}
}Claude Desktop
{
"mcpServers": {
"db-mcp": {
"command": "node",
"args": ["/path/to/db-mcp/dist/index.js"],
"env": {
"DB_MCP_SECURITY_MODE": "read_only"
}
}
}
}把 /path/to/db-mcp/dist/index.js 和 /path/to/config.json 替换成你的真实路径即可。
设计理念
预配置连接优先
服务启动时可从 config.json 或环境变量自动建立数据库连接。这样调用 MCP 的 AI 不需要接触数据库密码。
支持的典型环境变量:
MYSQL_HOSTMYSQL_USERMYSQL_PASSWORDREDIS_HOSTREDIS_URLMONGODB_URL
运行时保护不是装饰
以下参数用于防止 MCP 服务被慢查询、大结果集或突发并发打爆:
DB_MCP_OPERATION_TIMEOUT_MSDB_MCP_MAX_RESULT_ITEMSDB_MCP_MAX_RESPONSE_BYTESDB_MCP_DEFAULT_MONGO_LIMITDB_MCP_MAX_MONGO_LIMITDB_MCP_MYSQL_SELECT_LIMITDB_MCP_MAX_CONCURRENT_MYSQLDB_MCP_MAX_CONCURRENT_REDISDB_MCP_MAX_CONCURRENT_MONGO
连接状态可观测
你可以通过工具直接查看:
当前数据库是否配置过
当前连接是否仍然可用
MySQL 连接池摘要
各类工具的并发执行和排队情况
安全模式
通过环境变量 DB_MCP_SECURITY_MODE 或工具 set_security_mode 进行设置。
模式 | 定位 | 适用场景 |
| 默认只读 | 生产排查、只读分析 |
| 允许部分写操作 | 开发调试、日常维护 |
| 完全开放 | 本地开发、受控测试环境 |
read_only
MySQL:允许
SELECT、SHOW、DESCRIBE、DESC、EXPLAINRedis:允许
redis_get、redis_type、redis_memory_usage、redis_top_memory_keys、redis_memory_usage_by_prefixes、redis_auto_prefix_memory_usage、redis_hget、redis_hgetall、redis_keysMongoDB:允许
mongodb_find、mongodb_find_one、mongodb_count、mongodb_list_collections
禁止任何数据修改和结构变更。
restricted
MySQL:允许常见
SELECT、INSERT、UPDATEMySQL:禁止
DROP、TRUNCATE、ALTER TABLEMySQL:
DELETE必须带WHERE,结构化工具mysql_delete仍会被禁止Redis:允许
redis_set,禁止redis_delMongoDB:允许插入和更新,禁止删除
full_access
MySQL:允许查询、写入和结构变更
Redis:允许所有已提供工具
MongoDB:允许所有已提供工具
建议:
默认使用
read_only只在确实需要写数据时切到
restricted只有明确知道要执行高风险操作时,才使用
full_access
数据库配置
config.json 示例
{
"databases": {
"mysql": {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "your_password",
"database": "mydb",
"pool": {
"min": 2,
"max": 10,
"idleTimeout": 60000
}
},
"redis": {
"host": "localhost",
"port": 6379,
"password": "your_password",
"db": 0
},
"mongodb": {
"url": "mongodb://localhost:27017",
"database": "mydb"
}
},
"security": {
"mode": "read_only"
}
}动态连接
除了预配置连接,也支持使用 *_connect 工具在运行时手动连接,使用 *_disconnect 断开。
如果你担心凭证暴露给模型,优先使用预配置连接。
工具一览
MySQL
mysql_connect: 手动连接 MySQL;仅在未预配置连接或需要覆盖默认连接时使用mysql_query: 执行 SQL;已预配置连接时可直接使用mysql_insertmysql_updatemysql_deletemysql_disconnectmysql_pool_statusmysql_connection_status
Redis
redis_connectredis_getredis_typeredis_memory_usageredis_top_memory_keysredis_memory_usage_by_prefixesredis_auto_prefix_memory_usageredis_setredis_keysredis_delredis_hgetredis_hgetallredis_disconnect
MongoDB
mongodb_connectmongodb_findmongodb_find_onemongodb_insert_onemongodb_insert_manymongodb_update_onemongodb_delete_onemongodb_countmongodb_list_collectionsmongodb_disconnect
运行时 / 安全
set_security_modeget_security_modeserver_runtime_status
工具调用示例
以下示例展示各个工具常见的调用参数格式。
MySQL 查询
{ "sql": "SELECT * FROM users WHERE id = ?", "params": [1] }MySQL 插入
{ "table": "users", "data": { "name": "John", "email": "john@example.com" } }Redis 写入
{ "key": "user:1", "value": "John Doe", "ttl": 3600 }Redis 键扫描
{ "pattern": "user:*", "count": 100, "limit": 200 }MongoDB 查询
{ "collection": "users", "filter": { "age": { "$gte": 18 } }, "limit": 10 }运行状态
{}可观测性
server_runtime_status 可用于快速排查:
为什么请求超时
为什么结果被裁剪
为什么查询在排队
为什么 MySQL 连接池被打满
当前服务的保护阈值是多少
当前数据库连接是否真的还活着
开发
npm install
npm run build
npm run dev
npm run watch
npm test常见问题
💝 赞助项目
感谢你使用 db-mcp。
如果这个项目对你有帮助,欢迎赞助项目的持续开发和维护。
许可证
MIT
参与贡献
欢迎提交 Issue 和 Pull Request。
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wannanbigpig/db-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server