使用 MCP 打破大语言模型和 SAP 系统集成的屏障之二:理论基础
MCP 通过「标准化接口」,实现大语言模型与本地文件、数据库、API 等外部资源的安全连接,统一了大语言模型与外部资源的交互标准,彻底解决了传统 Function Call 开发模式中「一模型一适配」的低效问题。下图是一个例子,当大语言模型收到用户询问关于天气预报的咨询后,能理解该意图,自主决定最适合的 Function Call,后者关联到一个专门的 Business API 完成「业务查询逻辑
笔者前一篇文章,提到自己最近参加了一个 MCP 学习营。本着「学以致用」的思想,我想尝试使用 MCP 打破大语言模型和 SAP 系统集成的屏障。
使用 MCP 打破大语言模型和 SAP 系统集成的屏障之一:灵感来源。
在实际动手开发之前,有必要梳理 MCP 理论体系和一些前置知识,否则有些第一次接触 MCP 的读者们可能会一头雾水。
谈论 MCP,就不得不先说一说 Function Call. 每个开发者在编程语言里,都和函数调用打过交道。
大家还记得 ChatGPT 刚发布不久,很多人吐槽它,连「今天星期几?」这种最简单的问题也无法正确回答吗?
Function Call 这一概念由 OpenAI 在 2023 年夏天提出后,此类抱怨就消失了。
Function Call 能让 ChatGPT 模型输出一段结构化 JSON,以声明需要哪个工具、哪些调用参数来完成当前的任务。

ChatGPT 模型本身不会直接执行业务逻辑;真正的 I/O 或状态修改由「外层 Function」按 JSON 描述去调用执行。
Function Call 让大语言模型拥有了「间接」调用第三方代码和服务的能力。下图是一个例子,当大语言模型收到用户询问关于天气预报的咨询后,能理解该意图,自主决定最适合的 Function Call,后者关联到一个专门的 Business API 完成「业务查询逻辑」。

Function Call 虽然填补了大语言模型与互联网上海量的存量 API 之间的鸿沟,但其本身也存在很多局限性。
Function Call 本质是单次、「模型→调用者」式的单向接口规范。它并没有定义 Function 如何远程部署、如何被发现、如何分布式复用,也没有事务、权限、版本等企业级需求的解决方案。
此外,上面提到的关于天气预报的 Function Call 例子,场景简单,实现起来复杂度也不高。
然而在企业级应用里,可能混合使用多种不同大语言模型,以充分发挥其长处。比如 ChatGPT 可能擅长内容生成,Claude 精通长文本推理,Gemini Pro 在多模态分析领域已经迎头赶上了;
而大语言模型需要集成的业务侧,除了经典的 CRM、ERP,还可能包含 BI 可视化、邮件服务器、云存储、物联网流数据等诸多系统。
如果为每一类大语言模型分别设计开发能够完成某种业务逻辑的 Function Call,会出现下图左侧所示的弊端:
-
接口异构:不同业务系统暴露的 API 风格迥异,有的采用 REST,有的使用 gRPC,还有一些只提供 SDK。
-
模型能力差异:不同大语言模型对 Function Call 支持程度、上下文窗口、思维链 (Chain-of-Thought) 触发方式各不相同。比如 LangChain、Haystack、AutoGen 等框架各自维护 schema,开发者在迁移模型或替换后端时,需要反复编写适配层。OpenAI Function Calling、Anthropic Tool Use 以及 HuggingFace Agent Toolkit 产出的 JSON 结构并不互认,这也关上了复用的大门。
-
安全与合规:企业需在数据访问层进行细粒度权限控制,否则可能违反 GDPR 或 HIPAA。
-
运维负担:在企业级应用中每增加一个大语言模型或新增一个业务系统,都要修改若干段「点对点连接」代码,最终导致系统级测试矩阵呈指数级膨胀。

为解决上述弊端,MCP 应运而生。
MCP 全称为 Model Context Protocol,最早由 Anthropic 在 2024 年底开源,旨在提供统一的「上下文馈送」与「工具调用」的语义层。
MCP 出现的历史意义,好比秦始皇扫灭六国后,统一了度量衡。

在战国纷争走向极端分裂后,秦始皇采用统一度量衡、货币与车轨的制度化手段,把各地割裂的经济体拼接成高效协同的帝国网络。
法家推行的「书同文」配合「量同衡」,让法律条文与度量单位共同成为可验证的事实模板。
而 MCP 在 AI Agent 领域的引入,具有类似的历史意义。MCP 通过「标准化接口」,实现大语言模型与本地文件、数据库、API 等外部资源的安全连接,统一了大语言模型与外部资源的交互标准,彻底解决了传统 Function Call 开发模式中「一模型一适配」的低效问题。
MCP 协议为大型语言模型与外部工具或数据源之间提供了一条类似 USB-C 风格的通用接口:应用端不再需要为每一个 Function Call 手写胶水代码,而只需一次性声明工具目录,模型即可通过统一的握手流程发现、调用并组合这些工具,如上图右侧所示。
这一设计把以往松散的 Function Call 函数调用范式,升级为跨进程、跨语言甚至跨云的协议层,类似互联网早期通过 HTTP 与 SMTP 将信息互联。
在企业落地中,MCP 既能让 IDE、客服机器人、数据分析平台等场景在数小时内接入 LLM,也能在云端形成可复用的服务市场,让模型调度成本大幅下降。
对于 MCP 的消费者来说,最大的便利性就在于「开箱即用」。
比如 Trae 里可以直接在内置的 MCP Marketplace 里浏览现成的 MCP Server:

扣子空间的 MCP Server 添加界面:

以及全球最繁荣的 MCP 生态圈网站,mcp.so: Connect the world with MCP!

当然这些 MCP Marketplace 里,也少不了 SAP 相关的 MCP:
作为 SAP 开发人员,我们也可以根据实际集成需求,自行创建 MCP Server.
在实际动手做开发之前,我们得先了解 MCP 的组成部分,MCP Client,Server 和 Host 这三者之间的概念和联系。
这部分内容将在笔者下一篇文章里进行介绍。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)