无论多么优秀的模型,都会囿于信息孤岛与老旧系统的藩篱。
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 的实时性、可操作性与协作性,核心能力包括:
使 LLM 能够实时访问和更新外部数据,突破静态推理的局限;
为智能体提供共享上下文,支持更复杂的推理与协作;
使 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 协议,用户可以轻松执行以下操作:
生成查询:LLM 根据用户需求(例如,查询过去三年内的企业注册趋势)自动生成对应的 SQL 查询。
执行查询:通过 MCP 协议,LLM 将查询发送至 OceanBase,直接从数据库中获取实时数据。
数据分析与呈现:返回的结果可以进一步用于生成趋势图、报表和其他业务分析,帮助用户做出更精准的决策。
在这一过程中,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 的集成,用户需要准备:
准备 MCP 客户端:任意支持 MCP 协议的客户端,例如 Claude Desktop、Cline 等。
准备 OceanBase 实例:OceanBase 实例可通过 Docker 快速部署,或者通过 OB Cloud 云数据库免费试用。确保 MCP 客户端与 OceanBase 数据库的网络连接正常。
配置步骤如下:
克隆 OceanBase MCP Server 仓库:
git clone https://github.com/oceanbase/mcp-oceanbase
安装 Python 环境并安装依赖,这里推荐使用 uv 工具简化操作;
打开 Claude Desktop 设置,编辑配置文件;
通过 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"
}
}
}
}
重新启动 Claude Desktop,预期应当能看到有新的 MCP Tool 可用。
MCP 作为标准化协议,使 LLM 具备了与外部数据交互的能力。随着智能体生态的演进,MCP 有望成为连接 LLM、智能体与企业数据的关键桥梁。借助 OceanBase 与 MCP 的结合,LLM 不再是静态的知识库,而是能够实时查询和处理数据、执行 SQL、跨任务协作的智能体,在企业级 AI 应用中发挥更大价值,助力企业加速 AI 与数据的深度融合,简化 AI 技术栈。