关于 db-gateway
db-gateway 是面向 AI Agent 的多数据库 MCP 服务,提供跨关系型、NoSQL、搜索和流式引擎的工具。可按配置启用引擎,并通过只读模式隐藏写入工具。
主要功能
- 01覆盖 8 种数据库引擎
- 02提供 145+ 个数据库工具
- 03按配置注册启用的工具
- 04只读模式隐藏写入工具
- 05支持多实例别名连接
适用场景
- 01让 Agent 检查数据库结构并查询数据
- 02在单个服务中连接多种数据库
- 03限制生产环境连接为只读操作
MCP 相关
该项目是 MCP 服务,向 MCP 客户端提供数据库工具。配置决定启用哪些引擎及其工具;只读模式会移除写入工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y db-gatewayDBSEngines to enable, comma-separated. Only the listed engines get their tools registered. Example: mysql,redis,kafkaREAD_ONLYSet to true to hide every write tool and restrict *_execute_query to SELECT-style statements. Recommended when pointing at production.MYSQL密钥MySQL connection string(s), semicolon-separated for multiple instances. Format: mysql://<user>:<password>@<host>:3306/<database>?alias=dev&default=true — alias is required.POSTGRESQL密钥PostgreSQL connection string(s), semicolon-separated. Format: postgresql://<user>:<password>@<host>:5432/<database>?alias=dev&ssl=true — alias is required.REDSHIFT密钥Redshift connection string(s), semicolon-separated. Format: redshift://<user>:<password>@<host>:5439/<database>?alias=dev&ssl=true — alias is required.MONGODB密钥MongoDB connection string(s), semicolon-separated. Format: mongodb://<user>:<password>@<host>:27017/<database>?alias=dev — alias is required.REDIS密钥Redis connection string(s), semicolon-separated. Format: redis://:<password>@<host>:6379/0?alias=dev — leave the password empty for a no-auth instance. alias is required.ELASTICSEARCH密钥Elasticsearch connection string(s), semicolon-separated. Format: elasticsearch://<user>:<password>@<host>:9200?alias=dev, or http(s)://<host>:9200?alias=dev for no auth. alias is required.KAFKA密钥Kafka connection string(s), semicolon-separated. Format: kafka://<user>:<password>@<broker1>:9092,<broker2>:9092?alias=dev&mechanism=plain — alias is required.DYNAMODB_REGIONAWS region for DynamoDB. DynamoDB is configured with discrete variables instead of a connection string.DYNAMODB_ACCESS_KEY_ID密钥AWS access key ID for DynamoDB.DYNAMODB_SECRET_ACCESS_KEY密钥AWS secret access key for DynamoDB.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
DB Gateway MCP 服务
English | 한국어
一个 MCP 服务,可让 AI Agent 直接访问你的数据库,支持 8 种引擎和 145 多种工具。
关键在于,Agent 会自行读取你的架构,而不需要你把 DDL 粘贴到提示词中:
You: "Find users who signed up last month and never placed an order"
1. mysql_get_all_schemas → reads every table definition
2. mysql_get_table_relationships → finds the users ↔ orders foreign key
3. mysql_execute_query → runs the LEFT JOIN
为什么选择 db-gateway?
大多数数据库 MCP 服务只支持一种引擎,或少数几种关系型数据库。如果你的技术栈中,应用使用 MySQL、分析使用 Redshift、缓存使用 Redis、事件使用 Kafka,就意味着要配置 4 个服务,而且每个服务的配置方式都不相同。
现在只需一个服务和一个配置块:
| 引擎 | 工具 | |
|---|---|---|
| 关系型 | MySQL、PostgreSQL、Redshift | 59 |
| NoSQL | MongoDB、Redis、DynamoDB | 48 |
| 搜索 | Elasticsearch | 19 |
| 流处理 | Kafka | 19 |
DBS 决定启用哪些引擎——只有对应的工具会注册,因此仅使用 MySQL 的配置只会显示 MySQL 工具列表。
查看实际效果
下面每张截图都是在一个包含 249 行数据的开发 MySQL 数据库上进行的真实会话,展示的是未经编辑的输出,不是模拟数据。Agent 调用单个工具 mysql_execute_query,且完全看不到主机、端口或密码:这些信息保存在客户端配置中,Agent 只会指定 alias。





将同一服务指向生产环境并设置 READ_ONLY=true 后,步骤 2 到 4 就不复存在——写入工具不会注册,因此 Agent 看不到这些工具,也就无法调用它们。
快速开始
需要 Node.js 18 或更高版本。将其注册到 MCP 客户端即可,无需安装:
{
"mcpServers": {
"db-gateway": {
"command": "npx",
"args": ["-y", "db-gateway"],
"env": {
"DBS": "mysql,redis",
"MYSQL": "mysql://<user>:<password>@<host>:3306/<database>?alias=dev&default=true",
"REDIS": "redis://:@<host>:6379/0?alias=dev&default=true"
}
}
}
}
DBS 决定启用哪些引擎——只有对应的工具会注册。
连接字符串
每种引擎使用一个字符串。多个实例之间用分号分隔。
| 变量 | 格式 |
|---|---|
MYSQL | mysql://<user>:<password>@<host>:<port>/<db>?alias=name |
POSTGRESQL | postgresql://<user>:<password>@<host>:<port>/<db>?alias=name&ssl=true |
REDIS | redis://:<password>@<host>:<port>/<db-index>?alias=name |
MONGODB | mongodb://<user>:<password>@<host>:<port>/<db>?alias=name |
REDSHIFT | redshift://<user>:<password>@<host>:<port>/<db>?alias=name&ssl=true |
ELASTICSEARCH | elasticsearch://<user>:<password>@<host>:<port>?alias=name,或 http(s)://<host>:<port>?alias=name |
KAFKA | kafka://<user>:<password>@<broker>:<port>,<broker2>:<port>?alias=name&mechanism=plain |
必须设置
alias。 工具通过它指定某个实例;省略后,该引擎将无法连接。
同一种引擎的多个实例——用分号分隔其连接字符串。Agent 调用任何工具时传入 alias 参数,即可选择一个实例;default=true 用于标记未指定别名时使用的实例:
MYSQL="mysql://<user>:<password>@<dev-host>:3306/<db>?alias=dev&default=true;mysql://<user>:<password>@<prod-host>:3306/<db>?alias=prod"
DynamoDB 是个例外——它使用 DYNAMODB_REGION、DYNAMODB_ACCESS_KEY_ID 和 DYNAMODB_SECRET_ACCESS_KEY。所有选项请参阅 .env.example。
只读模式
READ_ONLY=true 会从工具列表中完全隐藏写入工具,并将 *_execute_query 限制为 SELECT 类语句。
启用此标志,将生产环境注册为第二个 MCP 服务。这样,Agent 就无法修改生产数据——对它而言,写入工具根本不存在。
"db-gateway-prod": {
"command": "npx",
"args": ["-y", "db-gateway"],
"env": { "READ_ONLY": "true", "DBS": "mysql", "MYSQL": "..." }
}
文档
- 工具参考 — 所有 145+ 个工具,按引擎分类
- 连接管理 — 连接池、健康检查,以及
connectionLimit为何会按会话倍增 - 部署 — SSE 模式、Nginx、PM2,以及如何在团队中共享一个网关
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。