【产品公告牌 2025-04-30】打破数据孤岛 —— OceanBase 现已支持 MCP

无论多么优秀的模型,都会囿于信息孤岛与老旧系统的藩篱。

Yet even the most sophisticated models are constrained by their isolation from datatrapped behind information silos and legacy systems.

—— Introducing the Model Context Protocol

背景

当下,大模型的能力已经很厉害了。但是有一点必须承认:无论是多厉害的大模型,都没办法打破信息屏障。无论多厉害的大模型,都没有办法给出超出它训练集范畴的信息,或者执行除了文本输出之外的操作。

这也是 AI Agent 的大问题:做题做得再好,如果没有办法和现实世界的业务系统和数据集成,用处会很有限。正如最近试用了各种 ChatBot APP 后得出的一个结论:如果大模型应用只能用来陪聊,其实没啥意思,往往玩儿一下就厌了。

但 MCP 通过定义 “如何将现有数据源”(文件系统、数据库、API 等)连接到 AI 工作流中,解决了这一问题。

MCP 出现之前是怎么做的?

先一起看看在 MCP 出现之前,业界是怎么做的。

  • RAG 和向量数据库

    • 关注数据库的朋友们应该早就都知道了。就是调用大模型之前,先把问题拿去向量数据库里检索一下,把匹配到的 Top N 结果放到大模型上下文中。

    • 不过这个显然是前 Agent 时代的做法。现在可以把向量数据库工具化。让 Agent 在生成结果的时候自主调用向量数据库。但是这个依然是 RAG 的范畴。

  • 大模型插件

    • 典型的就是 GPT-4 的插件(这个是 OpenAI 提出的插件规范。当时 OpenAI 还计划搞市场)。

    • 不过众所周知,这家公司现在叫 CloseAI,所以这个协议是私有的。

  • Function Call / Tool Use:

    • 除了 DeepSeek 之外的绝大部分大模型提供了 function call 的 API,可以让大模型通过调用 function call 来获取信息,或者调用外部工具。

    • 比如下面这个对 qwen-plus 的调用,就声明了一个 describe_image 的 tool。在调用大模型后,会接收一个结构化的返回。根据这个结构化的返回调用本地的相关工具,把信息再吐给大模型。

到这里会发现一个问题。使用这种方式构建的 Agent 和 Tool 体系,是一个封闭系统。如果想要给它增加一个新功能,必须由 Agent 开发者在 Agent 内部定义并实现一个新的 Tool。

MCP 是什么?

MCP 其实是一个标准和协议。它提供了一个通用的开放标准,用于将 AI 系统与数据源连接起来,用单一协议取代碎片化的集成。最终目的是通过一种更简单、更可靠的方法,使 AI 系统能够访问所需的数据(和工具)。

MCP 有两个最大的价值:

  • Agent 应用通过接入 MCP 把自己变成开放系统。
    • 一方面得以让外部信息进来,拥抱了无限多的信息源。
    • 另一方面可以让原先物理上隔离的各种服务进到大模型的上下文里。
  • 关注点分离。MCP 体系中的功能提供方和 Agent 应用维护者的关注点分离:
    • 服务提供者只需要按 MCP 协议暴露服务即可。
    • Agent 应用只需要知道它能够按协议访问哪些服务即可。

从 MCP 协议视角来看:

上面的图比官方的架构图更好,因为 MCP 架构中的 MCP Host 跟 MCP Client 是两回事,必须严格区分,否则容易搞混。

MCP 架构中的几个重要角色:

  • MCP Host

    • 想要通过 MCP 协议访问数据、工具的应用程序。

    • 通过内部集成 MCP Client 来访问 MCP。应用中的 AI 部分在这,跟 MCP 协议无关。

  • MCP Client

    • 与服务器 1:1 连接的 MCP 协议客户端。仅有连接功能。
  • MCP Server

    • 仅用来按协议公开功能的服务。

从 MCP 服务视角来看:

是不是感觉 MCP 并不难?这玩意儿正如它的名字所说 Model Context Protocol ,只是一个协议,只要能想到就能把它定义出来,然后一开源,就有望成为一个重要标准。只可惜没有诞生在国内的科技公司。

MCP 和 OceanBase 有啥关系?

今天从 OceanBase 官方的文章中看到:OB 正在让自己融入 AI 编程工具,而不是自己再做一个新的入口。看起来 OB 已经从 “下场做 Agent” 向 “提供 MCP 服务” 转变,并且会逐步把数据库及其周边的运维工具通过 MCP 协议暴露给用户。

接下来的内容均出自 OceanBase 官方文章《OceanBase 现已支持 MCP:打破数据孤岛,加速 AI 创新》,可以帮助大家快速体验 MCP 与 OceanBase 的集成,OB 社区版同样支持,欢迎大家试用!

MCP 提供了一种标准化的方式,使 LLM 可以与外部数据库、API 和工具进行高效交互,从而打破“数据孤岛”,提升 AI 的实时性、可操作性与协作性,核心能力包括:

:bulb: 使 LLM 能够实时访问和更新外部数据,突破静态推理的局限;

:bulb: 为智能体提供共享上下文,支持更复杂的推理与协作;

:bulb: 使 LLM 具备“可执行性”,能够直接与数据库、工具和业务系统对接,提升应用落地能力。

OceanBase 在 4.3.x 版本中针对分析处理(AP)场景进行大量集中优化,并成功实现了事务处理(TP)与分析处理(AP)的深度结合。依托 OceanBase 的 LSM-Tree 架构,系统实现了行存列存一体化,同时推出了基于列存的全新向量化引擎及代价评估模型。这些技术增强了对宽表的处理能力,显著提升了 AP 场景下的查询性能,并支持实时导入、二级索引、高并发主键查询等 AP 典型需求。

目前,OceanBase 已实现 MCP 协议的对接,OceanBase MCP Server 已收录在官方仓库,能够与各类 MCP 客户端(如 Claude Desktop、Cline 等)共同使用。用户可以基于 OceanBase 的私有化部署环境使用,还可以支持 OB Cloud 云数据库云上使用,结合 LLM 帮助企业数据分析变得更加简单与高效,简化 AI 应用技术栈。

图:MCP 官方代码仓库 (GitHub - modelcontextprotocol/servers: Model Context Protocol Servers)

图:OceanBase MCP Server 工作流

假设我们有一个包含企业注册信息的表格,用户希望查询过去三年内企业注册的趋势数据。借助 MCP 协议,LLM 能够生成针对该数据集的 SQL 查询,并直接在 OceanBase 中执行,返回实时的结果。这些数据可以进一步用于生成图表和报告,最终为用户提供准确的业务洞察。

以新加坡会计与企业管制局(ACRA)提供的注册实体数据集为例,该数据集包含约 160 万条企业注册信息,涵盖了每个企业的唯一实体编号(UEN)、注册日期、实体类型、街道名称和邮政编码等字段。通过 Claude Desktop 配合 MCP 协议,用户可以轻松执行以下操作:

:closed_book: 生成查询:LLM 根据用户需求(例如,查询过去三年内的企业注册趋势)自动生成对应的 SQL 查询。

:closed_book: 执行查询:通过 MCP 协议,LLM 将查询发送至 OceanBase,直接从数据库中获取实时数据。

:closed_book: 数据分析与呈现:返回的结果可以进一步用于生成趋势图、报表和其他业务分析,帮助用户做出更精准的决策。

在这一过程中,MCP 协议不仅让 LLM 能够与 OceanBase 数据库实现无缝对接,还使得数据访问更加灵活和实时,为用户提供了一个集成化的分析平台。这种技术的进步使得复杂的查询、数据分析和智能决策变得更加高效与直观。

数据表结构示例:

CREATE TABLE acra_entities (
    uen VARCHAR(20) COMMENT '唯一实体编号 (Unique Entity Number),用于唯一标识每个注册实体',
    issuance_agency_desc VARCHAR(50) COMMENT '签发机构描述,表示负责签发UEN的机构(如ACRA)',
    uen_status_desc VARCHAR(20) COMMENT 'UEN状态描述,表示实体的当前状态(如注册、注销)',
    entity_name VARCHAR(255) COMMENT '实体名称,表示注册实体的全称',
    entity_type_desc VARCHAR(100) COMMENT '实体类型描述,表示实体的法律结构(如本地公司、独资企业/合伙企业)',
    uen_issue_date DATE COMMENT 'UEN签发日期,表示实体注册的日期',
    reg_street_name VARCHAR(255) COMMENT '注册街道名称,表示实体注册地址的街道名称',
    reg_postal_code VARCHAR(10) COMMENT '注册邮政编码,表示实体注册地址的邮政编码'
) COMMENT '新加坡会计与企业管制局(ACRA)注册实体数据集,包含实体的注册信息';

快速导入数据:

SET SESSION ob_query_timeout=1000000000;

LOAD DATA local infile 'EntitiesRegisteredwithACRA.csv' INTO TABLE acra_entities fields terminated by ',' IGNORE 1 LINES;

使用 Claude Desktop 输入需要分析的问题:

从 OceanBase 中查询 acra_entities 表,给出实体注册趋势分析。分析结果应当包含 HTML 格式的图表,回答请保持简洁。

这里有个视频演示,帖子暂不支持插入视频,感兴趣的朋友可以详见这里:原文链接

读者可能会觉得 —— 这不就是 Chat2DB 吗?

还真不一样,Chat2DB 是自己训练了一个大模型,实现自然语言到 SQL 的转换。

这个 MCP 更像大模型一个通用的“外挂”,它是一种更具普遍性的协议,更加灵活,它可以支持各种数据源:数据库、文件、GitHub、Google Drive…

它的架构是这样的(典型的 Client / Server):

当然,对于Server的每个操作,MCP协议都精确地定义了输入和输出 ,这样Client才可以理解它有哪些能力。

体验 MCP 与 OceanBase 的集成,用户需要准备:

:key: 准备 MCP 客户端:任意支持 MCP 协议的客户端,例如 Claude Desktop、Cline 等。

:key: 准备 OceanBase 实例:OceanBase 实例可通过 Docker 快速部署,或者通过 OB Cloud 云数据库免费试用。确保 MCP 客户端与 OceanBase 数据库的网络连接正常。

配置步骤如下:

:one: 克隆 OceanBase MCP Server 仓库:
git clone https://github.com/oceanbase/mcp-oceanbase

:two: 安装 Python 环境并安装依赖,这里推荐使用 uv 工具简化操作;

:three: 打开 Claude Desktop 设置,编辑配置文件;

:four: 通过 Edit Config 增加配置。

{
  "mcpServers": {
    "oceanbase": {
      "command": "uv",
      "args": [
        "--directory", 
        "path/to/mcp-oceanbase",
        "run",
        "oceanbase_mcp_server"
      ],
      "env": {
        "OB_HOST": "localhost",
        "OB_PORT": "2881",
        "OB_USER": "your_username",
        "OB_PASSWORD": "your_password",
        "OB_DATABASE": "your_database"
      }
    }
  }
}

:five: 重新启动 Claude Desktop,预期应当能看到有新的 MCP Tool 可用。

MCP 作为标准化协议,使 LLM 具备了与外部数据交互的能力。随着智能体生态的演进,MCP 有望成为连接 LLM、智能体与企业数据的关键桥梁。借助 OceanBase 与 MCP 的结合,LLM 不再是静态的知识库,而是能够实时查询和处理数据、执行 SQL、跨任务协作的智能体,在企业级 AI 应用中发挥更大价值,助力企业加速 AI 与数据的深度融合,简化 AI 技术栈。

18 个赞

本帖内容来源是在 OB 社区负责人的公众号 “老纪的技术唠嗑局” 中首发的《打破数据孤岛 —— OceanBase 现已支持 MCP》

我们会在这个公众号上持续更新技术内容!欢迎大家扫码关注!

14 个赞

:+1: :+1: :+1:

17 个赞

:+1: :+1: :+1:

17 个赞

学习了

16 个赞

学习了

15 个赞

厉害了,DATA x AI越来越强!

15 个赞

:wave: :wave: :wave: :wave:

12 个赞

学习了!!!

14 个赞

:wave: :wave: :wave: :wave:

13 个赞

强,传统DBA确实不够用了,这些概念竟然很陌生

14 个赞

厉害仔细读完知道是干啥的了

10 个赞

很棒

11 个赞

这都用上了AI了啊

10 个赞

学习

9 个赞

:wave: :wave: :wave: :wave:

9 个赞

很棒啊

9 个赞

紧跟时代的步伐

7 个赞

厉害了

6 个赞

:wave: :wave: :wave: :wave::wave::wave:

6 个赞