数据库 MCP 配置
使用 universal-db-mcp 让 Poco Agent 通过 MCP 访问数据库。
数据库 MCP 用于让 Poco Agent 在任务中读取数据库结构、查询数据并辅助分析业务问题。Poco 执行器镜像已预装 universal-db-mcp,通过页面向导新建的数据库连接会直接调用镜像内命令,不依赖任务启动时临时下载 npm 包。
本文只介绍 Poco 中最常用的 stdio MCP 配置方式。更多高级参数、HTTP/SSE 模式和权限说明,请查看 universal-db-mcp 仓库。
配置前检查
新增数据库 MCP 前,先确认下面几点:
- 数据库地址能从 Executor 容器访问。
localhost表示 Executor 容器自身,不一定是宿主机或数据库容器。- 生产环境建议使用只读数据库账号。
- 使用页面向导时,密码会在测试通过后自动加密保存,MCP 配置只保留环境变量占位符。
- 只给任务选择真正需要的数据库 MCP,避免工具过多影响判断。
常见网络写法:
| 数据库位置 | --host 建议 |
|---|---|
| 与 Executor 在同一个 Docker Compose 网络 | 数据库服务名,例如 mysql |
| 在宿主机上运行 | macOS/Windows 通常用 host.docker.internal |
| 在内网或云数据库中 | 使用 Executor 容器可访问的内网地址或域名 |
使用页面向导添加
- 打开能力配置中的 MCP 管理页面,点击“添加连接”。
- 选择“数据库”,填写连接名称和数据库类型。
- 填写主机、端口、数据库名、用户名和密码。
- 点击“测试并添加”。
Poco 会先使用本次填写的信息测试连接。只有测试通过后,才会加密保存密码、创建 MCP 并自动启用;测试失败时不会留下未完成的配置。
MySQL 配置示例
页面向导生成的配置与下面的 JSON 等价:
{
"mcpServers": {
"mysql-database": {
"command": "universal-db-mcp",
"args": [
"--type",
"mysql",
"--host",
"mysql",
"--port",
"3306",
"--user",
"readonly_user",
"--password",
"${MYSQL_PASSWORD}",
"--database",
"your_database"
]
}
}
}mysql-database 是 MCP 内部服务名。页面向导会自动生成符合要求且不重复的名称。
字段说明:
| 参数 | 说明 |
|---|---|
--type | 数据库类型,例如 mysql、postgres、sqlite |
--host | 数据库主机,注意这是从 Executor 容器视角访问的地址 |
--port | 数据库端口 |
--user | 数据库用户名 |
--password | 数据库密码,推荐使用环境变量占位符 |
--database | 默认连接的数据库名 |
需要上游 MCP 的其他参数时,可以在“添加连接”中选择“导入 JSON”。使用环境变量占位符的高级配置,需要先在环境变量页面保存对应密钥,再执行连接测试。已有的 npx universal-db-mcp 配置仍然兼容,但 npx 是否访问网络取决于容器内 npm 缓存;新建数据库连接建议使用页面向导或直接执行预装命令。
连接启用后,可以在新任务入口、会话能力栏或场景 Agent 中选择这个 MCP。
任务中可以这样提问:
请查看订单表结构,并统计最近 7 天每天的订单数量。
只做查询分析,不要修改数据。切换数据库类型
PostgreSQL 示例:
{
"mcpServers": {
"postgres-database": {
"command": "universal-db-mcp",
"args": [
"--type",
"postgres",
"--host",
"postgres",
"--port",
"5432",
"--user",
"readonly_user",
"--password",
"${POSTGRES_PASSWORD}",
"--database",
"your_database"
]
}
}
}SQLite 示例:
{
"mcpServers": {
"sqlite-database": {
"command": "universal-db-mcp",
"args": ["--type", "sqlite", "--database", "/workspace/data/app.db"]
}
}
}SQLite 文件路径必须是 Executor 容器内可访问的路径。任务需要读取项目内 SQLite 文件时,建议放在工作区内,例如 /workspace/...。
权限建议
universal-db-mcp 默认是只读模式,适合绝大多数分析任务。生产环境建议同时做到:
- 使用只读数据库账号。
- 不在 MCP 配置里写明文密码。
- 不给普通分析任务启用写入权限。
- 涉及敏感数据时,限制数据库账号可访问的库、表和字段。
如果确实要允许写操作,请先确认业务风险,再参考上游仓库的权限配置说明。
支持的数据库
| 数据库 | --type | 默认端口 | 类型 |
|---|---|---|---|
| MySQL | mysql | 3306 | 开源 |
| PostgreSQL | postgres | 5432 | 开源 |
| Redis | redis | 6379 | NoSQL |
| Oracle | oracle | 1521 | 商业 |
| SQL Server | sqlserver | 1433 | 商业 |
| MongoDB | mongodb | 27017 | NoSQL |
| SQLite | sqlite | - | 嵌入式 |
| 达梦 | dm | 5236 | 国产 |
| 人大金仓 | kingbase | 54321 | 国产 |
| GaussDB | gaussdb | 5432 | 国产 |
| OceanBase | oceanbase | 2881 | 国产 |
| TiDB | tidb | 4000 | 分布式 |
| ClickHouse | clickhouse | 8123 | OLAP |
| PolarDB | polardb | 3306 | 云数据库 |
| Vastbase | vastbase | 5432 | 国产 |
| HighGo | highgo | 5866 | 国产 |
| GoldenDB | goldendb | 3306 | 国产 |
更多数据库参数、传输模式和安全配置,请查看 universal-db-mcp 项目文档。