/ 目录 / 演练场 / db-mcp-server
● 社区 FreePeak ⚡ 即开即用

db-mcp-server

作者 FreePeak · FreePeak/db-mcp-server

一个 MCP 服务器,多个数据库 — MySQL、Postgres、SQLite、Oracle、TimescaleDB。每个连接都配备自己的查询/schema/性能工具集。

db-mcp-server (FreePeak) 同时连接多个数据库。对于每个配置的连接,它自动生成查询/执行/事务/schema/性能工具。支持 TimescaleDB(超表、连续聚合)和 Oracle 特性(RAC、钱包)。

为什么要用

核心特性

实时演示

实际使用效果

db.replay ▶ 就绪
0/0

安装

选择你的客户端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "db": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/FreePeak/db-mcp-server"
      ],
      "_inferred": true
    }
  }
}

打开 Claude Desktop → Settings → Developer → Edit Config。保存后重启应用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "db": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/FreePeak/db-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用与 Claude Desktop 相同的 mcpServers 格式。项目级配置优先于全局。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "db": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/FreePeak/db-mcp-server"
      ],
      "_inferred": true
    }
  }
}

点击 Cline 侧栏中的 MCP Servers 图标,然后选 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "db": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/FreePeak/db-mcp-server"
      ],
      "_inferred": true
    }
  }
}

格式与 Claude Desktop 相同。重启 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "db",
      "command": "TODO",
      "args": [
        "See README: https://github.com/FreePeak/db-mcp-server"
      ]
    }
  ]
}

Continue 使用服务器对象数组,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "db": {
      "command": {
        "path": "TODO",
        "args": [
          "See README: https://github.com/FreePeak/db-mcp-server"
        ]
      }
    }
  }
}

加入 context_servers。Zed 保存后热重载。

claude mcp add db -- TODO 'See README: https://github.com/FreePeak/db-mcp-server'

一行命令搞定。用 claude mcp list 验证,claude mcp remove 卸载。

使用场景

实战用法: db-mcp-server

从 Claude 运行跨数据库分析

👤 数据工程师 ⏱ ~25 min intermediate

何时使用: 你需要从 Postgres(应用)和 MySQL(遗留系统)同时拉取数据,不想切换工具。

前置条件
  • 包含两个连接的 config.json — 仓库文档展示了文件格式;将凭据存储在环境变量中,不要硬编码
步骤
  1. 启动服务器
    运行 ./bin/server -t sse -c config.json 并确认两个连接都成功了。✓ 已复制
    → 服务器日志显示 2 个连接正常
  2. 分别查询
    prod(Postgres)查询:上周注册的用户。从 legacy(MySQL)查询:与他们相关的订单。在内存中合并。✓ 已复制
    → 合并后的数据集

结果: 无需数据仓库即可获得跨系统洞察。

注意事项
  • 只读假设被打破 — agent 运行了 INSERT — 为每个连接使用数据库级别的只读用户;不要依赖 agent 的纪律性
搭配使用: google-sheets

从 Claude 管理 TimescaleDB 超表

👤 可观测性 / IoT 团队 ⏱ ~20 min advanced

何时使用: 你想创建/检查超表和连续聚合,而不用死记 Timescale DDL。

步骤
  1. 检查现有超表
    列出 metrics 数据库中的所有超表,包括分块间隔和行数。✓ 已复制
    → 超表表格
  2. 创建连续聚合
    sensor_readings 上创建 1 小时的汇总,按 device_id 分组,计算 avg、max、min。✓ 已复制
    → CAgg 已创建;刷新策略已配置

结果: 数分钟内完成 Timescale 操作,而不是 Google 搜索。

解释陌生 schema 快速上手

👤 接手数据库的工程师 ⏱ ~30 min beginner

何时使用: 加入新团队的第一天;你需要一个数据库的地图。

步骤
  1. 导出 schema
    prod 上使用 schema_<conn_id>。返回表、外键图和行数排序。✓ 已复制
    → Schema + FK 图
  2. 生成术语表
    对每个表,从列名和示例行(每个表最多 5 行)推断 1 行描述。✓ 已复制
    → 入职速查表

结果: 30 分钟内形成有效的心智模型。

组合

与其他 MCP 搭配,撬动十倍杠杆

将查询结果导出到共享 Sheet 供非技术人员查看

从 prod 查询按 LTV 排序的前 50 个客户;写入'Top LTV' sheet。✓ 已复制

用数据库级别的 Prometheus metrics 交叉验证数据库慢查询发现

对于通过 performance_prod 发现的慢查询,显示同一时间窗口内 Prometheus 中的 pg_stat_statements metrics。✓ 已复制

工具

此 MCP 暴露的能力

工具输入参数何时调用成本
query_<db_id> sql: str (SELECT) 读取数据 1 query
execute_<db_id> sql: str (DDL/DML) 写操作 — 由数据库权限控制 1 query
transaction_<db_id> statements: str[] 多语句原子性变更 1 tx
schema_<db_id> table?: str 发现 / 入职 metadata query
generate_schema_<db_id> format: sql|json 为文档/版本控制导出 schema metadata queries
performance_<db_id> sql?: str 优化缓慢查询 plan + stats

成本与限制

运行它的成本

API 配额
你的数据库容量
每次调用 Token 数
大结果集消耗 token 很快 — 要积极使用 LIMIT
费用
MCP 免费;数据库托管成本由你承担
提示
总是添加 LIMIT / 限制输出;对于更大的拉取,通过文件系统 MCP 流到文件

安全

权限、密钥、影响范围

最小权限: 建议对探索使用数据库级别的只读用户
凭据存储: config.json 引用环境变量;永远不要用内联密码提交
数据出站: 仅到配置的数据库主机
切勿授予: 除非绝对必要,不要将数据库超级用户权限授予 MCP 连接

故障排查

常见错误与修复

连接池耗尽

在 config.json 中调整池大小;在数据库端杀死僵尸会话;验证没有失控的 agent 循环

验证: SELECT * FROM pg_stat_activity (for Postgres)
Oracle 钱包认证失败

TNS_ADMIN 路径必须可被 MCP 进程读取;在 Mac/Linux 上留意 SELinux/AppArmor

一个数据库的工具名没有出现

该连接可能初始化失败;检查服务器日志 — 通常是凭据错误或防火墙问题

替代方案

db-mcp-server 对比其他方案

替代方案何时用它替代权衡
postgres-mcp (官方)你只需要 Postgres单数据库
mysql-mcp (社区)你只需要 MySQL单数据库

更多

资源

📖 阅读 GitHub 上的官方 README

🐙 查看未解决的 issue

🔍 浏览全部 400+ MCP 服务器和 Skills