DBAPI MCP 功能详解:基于 MCP 协议将数据 API 接入 AI 智能体

概述

MCP(Model Context Protocol,模型上下文协议)是由 Anthropic 提出并开源的开放标准协议,用于规范 AI 模型与外部工具、数据源之间的交互方式。该协议被业界类比为"AI 领域的 USB-C 接口"——任何实现 MCP 规范的客户端与服务端均可通过统一协议完成集成。

DBAPI 企业版 4.5.0 起内置 MCP Server 能力,可将 DBAPI 中已发布的 API 映射为 MCP 工具,供 AI 客户端发现与调用。

核心价值

在企业数据应用场景中,AI 模型需访问数据库、查询业务数据并调用内部服务。传统模式下,每个业务场景均需独立开发接口与集成代码,开发与维护成本较高。

DBAPI 的 MCP 功能提供以下能力:

  • 零代码集成:DBAPI 中已发布的 API 可直接作为 AI 可调用的工具,无需编写额外的 AI 集成代码
  • 统一管控:所有数据工具在 DBAPI 后台统一管理,权限、限流与监控能力开箱即用
  • 开放生态:兼容 Claude Desktop、Cursor、LangChain、Spring AI 等主流 AI 客户端与开发框架
  • 企业级安全:私有 API 通过 Token 认证,访问权限可精细控制

工作原理

AI 客户端 / AI 框架(Claude Desktop / Cursor / LangChain / Spring AI)
        │  MCP 协议(Streamable HTTP)
        ▼
  DBAPI MCP Server(端口 8526)
        │  HTTP 调用
        ▼
  DBAPI 服务端(端口 8520 / Gateway)
        │
        ▼
      数据库 / Elasticsearch / 第三方接口

MCP Server 作为协议层网关,将 DBAPI 服务端发布的 API 注册为 MCP 工具。AI 客户端通过标准 MCP 协议发现工具列表并发起调用,MCP Server 将请求转发至 DBAPI 服务端执行,最终将结果返回给 AI 客户端。

快速开始

前提条件

  • DBAPI 企业版 4.5.0 及以上版本
  • DBAPI 服务端已启动(默认地址 http://127.0.0.1:8520
  • 至少有一个已发布的 API

启动 MCP Server

# 1. 编辑配置文件
vim mcp/mcp-config.yaml

# 2. 启动 MCP 服务
bash bin/dbapi-mcp.sh start

发布 API 至 MCP

已发布开启 MCP 开关的 API 才会暴露为 MCP 工具。

  1. 登录 DBAPI 管理后台
  2. 进入 API 管理页面
  3. 定位目标 API,点击操作栏中的 MCP 开关
  4. 开启后,MCP Server 将在下一个刷新周期自动同步该 API

开启 MCP 开关

调用 MCP 工具

MCP 端点地址:http://<MCP_SERVER_HOST>:8526/mcp

# 1. 调用 initialize 获取 Session ID(位于响应头 Mcp-Session-Id 中)
curl -v http://127.0.0.1:8526/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

# 2. 携带 Session ID 调用 tools/list(请替换为实际 Session ID)
curl http://127.0.0.1:8526/mcp \
  -H "Content-Type: application/json" \
  -H "Mcp-Session-Id: mcp-session-xxxxx" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

# 3. 调用指定工具(私有 API 需同时携带 Token)
curl http://127.0.0.1:8526/mcp \
  -H "Content-Type: application/json" \
  -H "Mcp-Session-Id: mcp-session-xxxxx" \
  -H "Authorization: YOUR_BUSINESS_TOKEN" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"dbapi_xxxx","arguments":{"key":"value"}}}'

AI 客户端接入

DBAPI 的 MCP Server 使用 Streamable HTTP 协议。

Claude Code

执行以下命令注册 MCP Server:

claude mcp add --transport http dbapi_mcp http://127.0.0.1:8526/mcp --header "Authorization: YOUR_TOKEN"

执行以下命令验证连接状态:

claude mcp list

输出如下结果表示连接成功:

dbapi_mcp: http://127.0.0.1:8526/mcp (HTTP) - ✓ Connected

opencode

opencode.json 中添加以下配置:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dbapi": {
      "type": "remote",
      "url": "http://127.0.0.1:8526/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "YOUR TOKEN"
      }
    }
  }
}

OpenClaw

openclaw.json 中添加以下配置:

{
  "mcp": {
    "servers": {
      "dbapi": {
        "url": "http://127.0.0.1:8526/mcp",
        "transport": "streamable-http",
        "headers": {
          "Authorization": "YOUR TOKEN"
        }
      }
    }
  }
}

Cursor

编辑 .cursor/mcp.json

{
  "mcpServers": {
    "dbapi": {
      "url": "http://127.0.0.1:8526/mcp",
      "transport": "streamable_http",
      "headers": {
        "Authorization": "YOUR_BUSINESS_TOKEN"
      }
    }
  }
}

Cherry Studio

Cherry Studio 配置示例

Chatbox

Chatbox 配置示例

LangChain

LangChain 提供原生 MCP 客户端支持。以下示例展示最小化调用方式:

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient(
    {
        "dbapi": {
            "transport": "http",  # Streamable HTTP 传输方式
            "url": "http://127.0.0.1:8526/mcp",  # MCP 服务地址
            "headers": {
                # 鉴权令牌(JWT)
                "Authorization": "YOUR TOKEN",
            },
        }
    }
)

以下为结合 LLM 的完整调用示例:

import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent


async def main():
    # 初始化 MCP 客户端,配置 MCP 服务连接信息(使用 HTTP 传输协议)
    client = MultiServerMCPClient(
        {
            "dbapi": {
                "transport": "http",  # Streamable HTTP 传输方式
                "url": "http://127.0.0.1:8526/mcp",  # MCP 服务地址
                "headers": {
                    # 鉴权令牌(JWT)
                    "Authorization": "YOUR TOKEN",
                },
            }
        }
    )

    # 异步获取 MCP 服务端暴露的所有工具列表
    tools = await client.get_tools()

    # 初始化 DeepSeek 大模型(OpenAI 兼容接口)
    model = ChatOpenAI(
        model="deepseek-v4-flash",  # 使用的模型名称
        api_key="sk-xxx",  # DeepSeek API Key
        base_url="https://api.deepseek.com",  # DeepSeek API 地址
        temperature=0,  # 温度设为 0,输出更稳定
    )

    # 创建 ReAct 风格的 Agent,将 LLM 与 MCP 工具绑定
    # Agent 可自主决定何时调用哪个工具
    agent = create_react_agent(model, tools)

    # 接收用户输入,调用 Agent 异步执行
    result = await agent.ainvoke({"messages": [{"role": "user", "content": input("请输入您的问题: ")}]})

    # 输出 Agent 最终回复(消息列表中最后一条)
    print(result["messages"][-1].content)


# 启动异步事件循环,运行 main 函数
asyncio.run(main())

认证机制

API 类型 说明 是否需要 Token
开放 API 任何客户端均可访问
私有 API 仅经授权的客户端可访问 是,需在请求头 Authorization 中携带

获取 Token

# 通过 clientId 与 secret 申请 Token(需先在客户端管理中创建)
curl "http://127.0.0.1:8520/token/generate?clientId=YOUR_CLIENT_ID&secret=YOUR_CLIENT_SECRET"

将返回的 Token 配置至 MCP 客户端的 headers.Authorization 字段即可。

Token 具有过期时间,过期后需重新获取。建议在客户端管理中配置较长的有效期,以减少续签频率。

应用场景

场景一:自然语言数据查询

将数据库查询类 API 发布为 MCP 工具后,业务人员可在 Claude Desktop 中通过自然语言发起查询,例如:

“上个月华东区销售额排名前 10 的产品有哪些?”

LLM 将自动识别意图,调用 DBAPI 中对应的查询 API,并以自然语言形式返回结果。该方案无需业务人员掌握 SQL 语法,亦无需登录业务系统。

场景二:智能报表生成

通过编排 API 将多个数据查询组合为完整的报表接口,并发布为 MCP 工具。AI 客户端调用后,可自动生成结构化的数据分析报告。

场景三:数据异常巡检 Agent

将数据监控类 API 注册为 LangChain Agent 的工具。Agent 可基于定时任务自动巡检业务数据,并在检测到异常时通过钉钉 / 飞书机器人推送告警。

场景四:企业知识库增强

将企业内部系统中的数据查询接口(如订单查询、客户信息、库存状态等)发布为 MCP 工具,并集成至企业自建的 AI 助手,使其具备实时查询企业数据的能力。

注意事项

  • MCP Server 默认监听 8526 端口,可在 mcp-config.yaml 中调整
  • 已发布开启 MCP 开关的 API 才会暴露为 MCP 工具
  • API 修改后,MCP Server 将自动同步 URL、参数定义等元数据,无需重启服务
  • DBAPI 具备完整的 API 鉴权体系(Token 认证、客户端授权)及 IP 防火墙规则,MCP 客户端自动继承上述安全能力,无需额外配置访问控制
  • 调用私有 API 时,请确保对应客户端已获得相应 API 的访问授权

版本要求:DBAPI 企业版 4.5.0 及以上版本支持 MCP 功能。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐