一个MCP操作所有的数据库

一个 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 个 PostgreSQL1 个 Oracle1 个 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 底层驱动
📋 配置毫无标准 各种 HOSTURISERVER 命名五花八门,路径还是硬编码的(/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 平台(如 DifyCozen8n )、云服务器上运行的 OpenClaw(小龙虾),还是大模型厂商 Coding Plan 附赠或托管的 OpenClaw 实例,亦或是 Gemini CLIClaude 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 开放平台

👉 https://open.apisql.cn

📦 开源项目地址

GitHub 源码 & 文档 & 一分钟上手演示

👉 https://github.com/apisql-dev/apisql-mcp

⭐️ 如果这个工具对您有帮助,欢迎在 GitHub 给个 Star,B站点赞!


本文作者:apiSQL 团队 | 转载请注明出处

相关推荐
supersolon2 小时前
OpenClaw安装碰到的一些问题和解决方法
linux·运维·ai·openclaw·龙虾
zone7_2 小时前
008-01:RAG 入门-向量存储与企业级向量数据库 milvus
数据库·milvus
iMingzhen2 小时前
不想引入 Redis,我用一张 SQLite 表实现了消息队列
数据库·redis·ai·sqlite
冷小鱼2 小时前
Milvus 向量数据库完全指南:开源架构与生产级部署实战
数据库·开源·milvus
Curvatureflight2 小时前
Redis实战:缓存设计与高频场景全解析
数据库·redis·缓存
1688red2 小时前
基于Canal实现MySQL到Elasticsearch的数据同步
数据库·mysql·elasticsearch
m0_750580302 小时前
用Python生成艺术:分形与算法绘图
jvm·数据库·python
稻草猫.2 小时前
MyBatis进阶:动态SQL与MyBatis Generator插件使用
java·数据库·后端·spring·mvc·mybatis
华农DrLai2 小时前
什么是Prompt模板?为什么标准化的格式能提高稳定性?
数据库·人工智能·gpt·nlp·prompt