一个 MCP 操作所有数据库
发布时间 :2026 年 3 月
作者 :apiSQL 团队
阅读时间:约 6 分钟
📖 前言
OpenClaw(小龙虾)非常流行,各大云厂商、互联网大厂纷纷推出自家各种形态的新"Claw"。
同时, vibe coding(即兴编程) 带动了Claude Code、Gemini CLI、Codex 这些AI工具的普及,大家越来越习惯让 AI 以自然语言操作数据库,例如
- ✍️ 让 AI 写 SQL 查询
- 📊 让 AI 写业务数据分析报表
- 🔍 让 AI 做数据库慢查询分析
- ⚡ 让 AI 做性能诊断
想法很美好,但真正动手配置时,现实很骨感:
配置 MCP(Model Context Protocol)实在是有点啰嗦。
🌰 举个栗子
假设我们要连 2 个 MySQL(生产/测试) 、1 个 PostgreSQL 、1 个 Oracle 和 1 个 SQL Server。用市面上现有的原生 MCP Server,配置文件大概会长这样:
json
{
"mcpServers": {
"mysql-prod": {
"command": "/usr/local/bin/node",
"args": [
"/Users/dev/.npm/lib/node_modules/mcp-server-mysql/dist/index.js"
],
"env": {
"MYSQL_HOST": "192.168.1.100",
"MYSQL_PORT": "3306",
"MYSQL_USER": "prod_reader",
"MYSQL_PASS": "Pr0d_P@ssw0rd!",
"MYSQL_DB": "orders_prod",
"ALLOW_INSERT_OPERATION": "false",
"ALLOW_UPDATE_OPERATION": "false",
"ALLOW_DELETE_OPERATION": "false",
"PATH": "/usr/local/bin/node:/usr/bin:/bin",
"NODE_PATH": "/usr/local/lib/node_modules"
}
},
"mysql_test": {
"type": "stdio",
"command": "npx",
"args": [
"@benborla29/mcp-server-mysql"
],
"env": {
"MYSQL_HOST": "192.168.1.101",
"MYSQL_PORT": "3306",
"MYSQL_USER": "test_reader",
"MYSQL_PASS": "test_P@ssw0rd!",
"MULTI_DB_WRITE_MODE": "false"
}
},
"postgres-analytics": {
"command": "uvx",
"args": [
"postgres-mcp",
"--access-mode=unrestricted"
],
"env": {
"DATABASE_URI": "postgresql://analytics_user:An@lyt1cs_P@ss@192.168.1.102:5432/data_warehouse",
"PG_SSL_MODE": "require",
"PG_APP_NAME": "claude-mcp"
}
},
"oracle-finance": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--directory",
"/Users/dev/projects/oracle-mcp",
"oracle.oci-api-mcp-server"
],
"env": {
"VIRTUAL_ENV": "/Users/dev/projects/oracle-mcp/.venv",
"FASTMCP_LOG_LEVEL": "ERROR",
"ORACLE_HOST": "192.168.1.103",
"ORACLE_PORT": "1521",
"ORACLE_SERVICE_NAME": "FINDB",
"ORACLE_USER": "finance_read",
"ORACLE_PASSWORD": "F1n@nce_P@ss!",
"OCI_CONFIG_FILE": "/Users/dev/.oci/config",
"OCI_PROFILE": "DEFAULT"
}
},
"mssql-legacy": {
"command": "uvx",
"args": ["microsoft_sql_server_mcp"],
"env": {
"MSSQL_SERVER": "192.168.1.104",
"MSSQL_PORT": "1433",
"MSSQL_DATABASE": "legacy_crm",
"MSSQL_USER": "crm_reader",
"MSSQL_PASSWORD": "L3g@cy_P@ss!",
"MSSQL_TRUST_SERVER_CERTIFICATE": "true"
}
}
}
}
👀 大家一眼就能看出问题
| 问题 | 具体表现 |
|---|---|
| 🔧 运行时依赖割裂 | MySQL 需要 Node.js,PostgreSQL/SQL Server 需要 Python 的 uvx,Oracle 还要额外装一堆 OCI 底层驱动 |
| 📋 配置毫无标准 | 各种 HOST、URI、SERVER 命名五花八门,路径还是硬编码的(/Users/dev/...),换台电脑跑都跑不起来 |
| 🔑 明文密码漫天飞 | 五个数据库账号密码全暴露在本地配置文件里,安全风险极高 |
| 🛡️ 没有审计日志 | 谁在什么时候查了什么数据?无从追溯,生产环境根本不敢用 |
⚠️ 更要命的是:上下文膨胀 + AI 困惑
除了配置繁琐,运行时的问题更严重。
每个 MCP Server 会向大模型注册多个 工具(Tools)。以 PostgreSQL MCP 为例,自带以下工具:
| Tool Name | Description |
|---|---|
list_schemas |
Lists all database schemas |
list_objects |
Lists database objects (tables, views, sequences...) |
get_object_details |
Provides information about a specific database object |
execute_sql |
Executes SQL statements on the database |
explain_query |
Gets the execution plan for a SQL query |
get_top_queries |
Reports the slowest SQL queries |
analyze_workload_indexes |
Analyzes workload and recommends indexes |
analyze_db_health |
Performs comprehensive health checks |
算一笔账:
五个数据库实例 × 平均每个 8 个 Tools = 40 个工具tools
这意味着:
| 问题 | 影响 |
|---|---|
| 📦 上下文开销极大 | 每次 AI 查询都要先"阅读"这 40 个工具的说明,Token 消耗和延迟巨大 |
| 🤖 AI 容易选错工具 | 面对 40 个长得差不多的工具,大模型会困惑,选错工具执行 |
| ⚡ 响应速度变慢 | Tool 定义越多,AI 推理时间越长 |
| 🚫 容易超出上下文限制 | 复杂场景下可能直接触发 Token 上限 |
✨ 解法:用 apisql-mcp 化繁为简
这正是 apisql-mcp 要解决的问题。
既然大模型极其擅长写 SQL,我们为什么不直接让它写 SQL 呢? 根本不需要提供几十个细碎的工具。
直接看对比表:
| 对比项 | 传统方案 | apisql-mcp |
|---|---|---|
| 运行时依赖 | Node.js + Python + OCI | Node.js |
| MCP Server 数量 | 5 个 | 1 个 |
| 密码存储 | 5 处明文 | 0 处(平台安全管理) |
| Tool 数量 | 40+ 个 | 1 个 (只需 execute_sql,直接写 SQL 语句) |
| 上下文开销 | 随数据库数暴涨 | 永远固定(极低开销) |
| 审计日志 | 无 | 有(完整记录追溯) |
| 动态切换 | ❌ 不支持 | ✅ ds 参数丝滑切换 |
🚀 一分钟上手
贴上可以立刻开始演示的 只读示例 MCP Server 配置:
json
{
"mcpServers": {
"apisql-mcp": {
"command": "npx",
"args": ["-y", "apisql-mcp"],
"env": {
"APISQL_MCP_API_URL": "https://open.apisql.cn/api/mytest/$sudb",
"APISQL_MCP_API_KEY": "Bearer sk-7dd9b66d38f8aff81f091ecfcf259f70",
"APISQL_MCP_DS": "mysql"
}
}
}
}
💡 这是公开的只读演示 API Key,可快速测试使用。
💬 AI 调用正确姿势
在系统提示词中写以下,AI 实际进行 MCP Tools 调用时,AI 会更好理解:
你可以通过 execute_sql 工具查询数据库。
默认数据源是 "mysql",如需使用其他数据库,请在 ds 参数中指定:
- postgresql(分析库)
AI 更容易理解,上下文更精简,响应更快速。

AI 发出的请求简单明了,以默认的mysql为例
json
{
"sc": "SELECT * FROM orders WHERE status = 'pending'"
}
切换数据库 只需修改 ds 参数:
json
{
"sc": "SELECT * FROM employees WHERE department = 'finance'",
"ds": "postgresql"
}

AI理解起来简单,人理解也会简单,化繁为简,N个MCP Server转换为一个,tools工具简化为一个,这会减少Token的同时,提升AI的运行效率。
其实在真实开发中,还有一个大痛点,就是下面要讲到的隐藏福利😊
🌐 隐藏福利:内网穿透能力
无论是云端 AI 平台(如 Dify 、Coze 、n8n )、云服务器上运行的 OpenClaw(小龙虾),还是大模型厂商 Coding Plan 附赠或托管的 OpenClaw 实例,亦或是 Gemini CLI 、Claude Code 等本地 AI 工具------它们都面临同一个痛点:无法直接从互联网访问内网数据库。
apisql-mcp 自带了一个数据网关用来连接内网数据库。通过 apiSQL 云(或 apiSQL 专业版、企业版)建立的反向安全隧道,不论是云端还是本地端的 AI ,都可以轻松调用到您自己内网的数据库:
🤖 MCP客户端 (OpenClaw小龙虾 / Claude / Dify / Coze 等)
│
MCP协议 (STDIO / Streamable HTTP)
▼
🔌 apisql-mcp
│
HTTPS
▼
☁️ apiSQL 平台 (云端 / 专业版 / 企业版)
│
MQTT (反向安全隧道,不需公网IP)
▼
🛡️ apiSQL 网关 (部署在你的内网)
│
TCP
▼
🗄️ 您的真实数据库 (内网,各种关系型数据库)
全程不需要在路由器上开公网端口映射,也不需要 FRP 内网穿透。
让 AI 帮你用 SQL 查数据,原本就该是一件轻松愉快的事。不要再忍受啰嗦的 MCP 配置和爆炸的 Token 消耗了。
apisql-mcp 用最简单的配置、最纯粹的一个 Tool 和最安全的内网网关,帮你打造了一个连接所有数据库的终极武器。
🔗 相关链接
📺 视频演示和教程
【一个 MCP 操作所有数据库】
▶️ https://www.bilibili.com/video/BV1TPwrzUEtq
🌐 平台
apiSQL 开放平台
📦 开源项目地址
GitHub 源码 & 文档 & 一分钟上手演示
👉 https://github.com/apisql-dev/apisql-mcp
⭐️ 如果这个工具对您有帮助,欢迎在 GitHub 给个 Star,B站点赞!
本文作者:apiSQL 团队 | 转载请注明出处