返回博客列表

一个 MCP Server 连接多种数据库

2026年07月07日
apiSQL 团队
一个 MCP Server 连接多种数据库

让大模型直接"读懂"数据库,是 AI Agent 落地的关键一步。但真实环境往往是:MySQL、PostgreSQL、Oracle各有一套连接方式,数据库还躲在内网里,公网访问不到。

apisql-mcp 用一个 MCP Server 解决了这两个问题:一个 MCP 连接多种数据库,并借助 apiSQL 网关,让大模型隔着互联网也能安全地操作内网数据库。它是数据库MCP Server 的"瑞士军刀"。

一、它解决了什么

  • 一个 MCP,连接多种数据库——MySQL、PostgreSQL、SQL Server、Oracle、SQLite、StarRocks、达梦、DuckDB、OceanBase、Trino/Presto,以及任何兼容 JDBC 的数据库。
  • 动态数据源切换——无需重启 MCP 服务器,运行时即可在不同数据库之间切换。
  • 随时随地可访问——通过 apiSQL 网关,从互联网轻松访问到内网数据库,无需内网穿透、公网 IP 或端口映射等繁杂配置。
  • 完整 SQL 支持——支持 DDL 与 DML 操作,执行存储过程和函数 UDF。
  • 安全与可观测——通过 apiSQL 平台提供 API Key 授权、内置日志记录与审计。
  • 多种传输模式——支持 STDIO 与 Streamable HTTP 两种传输方式。

二、整体架构

apisql-mcp 本身是一个轻量的"翻译层":把 MCP 协议的调用转成对 apiSQL 平台 SUDB 接口的 HTTPS 请求;平台再经由 MQTT 把指令下发给部署在你内网的 apiSQL 网关,最终由网关连接数据库执行。

🤖 MCP 客户端(Claude 等)  ⇄ MCP 协议 ⇄  🔌 apisql-mcp(本工具)
        ⇄ HTTPS ⇄  ☁️ apiSQL 平台  ⇄ MQTT ⇄  🛡️ apiSQL 网关(内网)  ⇄ TCP ⇄  🗄️ 数据库(内网)

这条链路的关键在于:数据库无需暴露到公网,网关主动向平台建立连接,因此"从互联网访问内网数据库"这件事,不再需要内网穿透或公网IP。

三、一分钟上手(以 ChatBox 为例)

下面用公开演示环境走一遍完整流程,无需自己的数据库即可体验。

1、打开 ChatBox 设置 → MCP:

ChatBox 设置

进入 MCP 配置

2、复制以下配置:

{
  "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 URL 与 Key 均为公开演示环境,可直接使用。注意 APISQL_MCP_API_URL 必须以 /$sudb 结尾——这是 SUDB 功能的固定地址,而非变量。

3、选择"从剪贴板中的 JSON 导入",即可完成配置:

从 JSON 导入

4、启用刚配置的 MCP:

启用 MCP

四、让大模型直接操作数据库

配置完成后,就可以用自然语言与数据库对话了。

5、问一句表结构:

你帮看一下有没有 DW 开头的表?

查询表

6、让它写一份数据分析报告:

你是数据分析师,你来分析一下这 3 张表,写一个简单的数据分析报告。

数据分析报告

大模型会自行发起若干次 SQL 查询、汇总结果,再组织成一份可读的报告——整个过程你只说了一句话。

五、一个 MCP,切换多个数据库

apisql-mcp 最实用的能力,是在同一个会话里动态切换数据源,无需重启服务。

7、切换到 Oracle 11g 操作:

切换 Oracle

说明:这里的 oracle 数据源是一个临时内网数据库;后续公开演示只保留 mysql 和 postgresql 两个数据源。

数据源说明

8、再切到 PostgreSQL:

再切换到 postgresql 数据库,看一下都有什么表?

切换 PostgreSQL

PostgreSQL 查询结果

一个 MCP Server,就这样把 MySQL、Oracle、PostgreSQL 串了起来。实践中一般会把数据源名称写进提示词,让大模型明确知道该操作哪个库。

六、可观测:后台日志与审计

每一次经由 apisql-mcp 的数据库操作,都会在 apiSQL 后台留下记录,便于排查与审计:

后台日志

七、更多客户端接入

除了 ChatBox,apisql-mcp 同样适配主流 MCP 客户端,配置结构基本一致。

Claude Desktop / Claude Code,编辑配置文件(macOS:~/Library/Application Support/Claude/claude_desktop_config.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"
      }
    }
  }
}

用 Claude Code CLI 也可一行接入:

claude mcp add apisql-mcp --scope user -- npx apisql-mcp

Cursor、VS Code / Copilot、Cline、Windsurf 的配置同理,均为同一套 command + args + env,只是写入各自的配置位置。对于基于 HTTP 的客户端,还可用 Streamable HTTP 模式启动:

APISQL_MCP_API_URL=https://open.apisql.cn/api/mytest/$sudb \
APISQL_MCP_API_KEY="Bearer sk-7dd9b66d38f8aff81f091ecfcf259f70" \
APISQL_MCP_DS=mysql \
npx apisql-mcp --transport streamable-http --port 9090 --host 0.0.0.0

八、接入自己的数据库

演示环境之外,把 apisql-mcp 指向你自己的数据库只需几步:

  1. open.apisql.cn 注册账号;
  2. 创建项目并安装 apiSQL 网关 连接数据库;
  3. 将你的数据库添加为数据源;
  4. 在项目设置中启用 SUDB 功能;
  5. 创建访问控制策略,为 API Key 分配可访问 SUDB 的权限;
  6. 从策略页面复制 API URL 与 Key,替换到上面的配置里即可。

前提条件很轻量:Node.js >= 18.0.0,加上一个 apiSQL 账号与一个已连接数据库的网关。

九、安全提醒

apisql-mcp 提供的是完整的数据库访问能力,包括结构修改与数据操作。生产环境请遵循最小权限原则:

  • 为 MCP 创建专用数据库用户,只授予所需的最小权限;
  • 生产环境优先使用只读账号,或通过视图限制可访问的表;
  • 在 apiSQL 平台启用访问控制策略(IP 白名单、API Key),先从测试环境开始验证。

正如我们在《把数据库交给 AI 之前,我先替你撞了三次“安全墙”》中反复强调的:把授权交给数据库本身,MCP能做什么,由你为它配置的数据库账号权限决定。

结语

apisql-mcp 把"让大模型访问数据库"这件事收敛成了一次简单的 MCP 配置:一个 Server 连接多种数据库,动态切换数据源,还能隔着互联网安全地操作内网数据。对于正在搭建 AI Agent、内部数据助手或自动化报表的团队,它是一块值得一试的拼图。

项目地址:github.com/apisql-dev/apisql-mcp · npm:apisql-mcp

立即体验:apiSQL 官网 · 在线云平台