MCP协议让AI Agent开发进入“书同文,车同轨”时代。
一、大模型应用的痛点,MCP协议解决痛点
1、大模型需要访问外部数据源和调用外部系统
大模型拥有丰富的通用知识,但却无法访问专属内容,无法联网获取实时信息。它的核心功能是生成token,无法精细化操作具体的任务。
2、每家大模型与每个数据源对接,与每个外部系统集成,工作量大,且重复
1)AI应用进入深水区后,模型与外部数据/工具的集成呈现"烟囱式开发"(每个模型需单独对接不同数据源),导致开发成本高、安全性差、扩展困难。
2)AI 模型和已有系统集成发展缓慢,一方面是企业级的数据很敏感,大多数企业都要很长的时间和流程来动;另一个方面是缺少一个开放的、通用的、有共识的协议标准。
3、MCP应运而生,解决上述痛点
MCP提供了一套标准协议来解决这些问题,大模型通过MCP协议获取外部的信息或者执行调用系统的调用操作。遵守这个协议的大模型就可以重用包装好的外部数据源和调用外部系统。
二、MCP协议定义
MCP(Model Context Protocol,模型上下文协议)是由Anthropic公司于2024年11月推出的开放协议,旨在为大型语言模型(LLM)与外部数据源、工具之间建立标准化交互接口。
其核心作用是通过统一的通信协议,解决AI模型与多样化资源(如数据库、API、本地文件)的连接难题,使模型能够安全、动态地访问实时数据并执行复杂操作。
1、核心功能包括:
1)统一翻译器:
将不同数据源的API转换为模型可理解的标准化请求。
2)安全连接层:
支持本地与远程资源访问,数据无需上传至云端。
2、核心目标:
1)建立类似USB-C的标准化协议,统一AI模型与外部资源的交互接口,实现“一次集成,处处运行”。
2)解决当前 AI 模型因数据孤岛限制而无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。
3、MCP协议是啥?打个比方,方便理解
1)万能遥控器
不同品牌的智能家电(电视、空调、音响),原本每个设备都需要专属遥控器(定制接口)。MCP就像一个定义了所有家电必须遵守的协议,成为了遵守协议的电器遥控的“万能遥控器”,所有操作都通过标准化指令完成,无需再为每个设备配置专用遥控器。
2)AI的USB-C接口
官方将MCP比作AI领域的USB-C接口。MCP提供了一个统一的细窄接口,让AI能够即插即用各种外设。
三、MCP的核心原理和技术架构
1、核心架构
1)client-server架构
(1)MCP采用客户端-服务器的分布式架构,它将 LLM 与资源之间的通信划分为三个主要部分:客户端、服务器和资源。
(2)客户端负责发送请求给 MCP 服务器,服务器则将这些请求转发给相应的资源。这种分层的设计使得 MCP 协议能够更好地控制访问权限,确保只有经过授权的用户才能访问特定的资源。
2)分别介绍
(1)MCP Host(主机应用):
Hosts 是指 LLM 启动连接的应用程序,像Cursor、Claude、Desktop、Cline 这样的应用程序。
(2)MCP Client(客户端):
客户端是用来在 Hosts 应用程序内维护与 Server 之间 1:1 连接。一个主机应用中可以运行多个MCP客户端,从而同时连接多个不同的服务器。
(3)MCP Server(服务器):
独立运行的轻量程序,通过标准化的协议,为客户端提供上下文、工具和提示,是MCP服务的核心。
(4)本地数据源:本地的文件、数据库和 API。
(5)远程服务:外部的文件、数据库和 API。
2、这样架构的好处
这种架构下,AI主机通过MCP客户端同时连接多个MCP服务器,每个服务器各司其职,提供对一种数据源或应用的标准化接入。这样设计有几个好处:
1)模块化
增加或移除某个数据源只需启用或停用对应的服务器,不影响AI主体或其他部分;
2)解耦
AI模型与具体数据源实现隔离开,通过协议交互,不直接依赖数据源的内部细节;
3)双向通信
不仅AI可以请求数据源,某些情况下数据源也能要求AI执行操作或生成内容,从而支持更复杂的交互流程。
四、协议解析
1、通信方式
MCP定义了一套基于JSON-RPC 2.0的消息通信协议。
1)核心特点如下:
(1)传输灵活:
原生支持两种传输方式——进程管道的STDIO(本地场景)和SSE+HTTP POST(网络通信),同时允许开发者自定义其他传输通道。
(2)消息透明:
采用纯JSON格式封装三种消息类型——请求(带唯一ID)、响应(含结果/错误)和通知(无回复)。每条消息包含方法名和参数,类似函数调用,直观表达"执行操作/获取数据"等行为。
(3)开发友好:
相比二进制协议(如gRPC),JSON消息可人工阅读,配合结构化日志更易调试。协议层自动处理请求响应匹配、错误传递和并发管理,开发者只需关注业务逻辑。
2、关键机制–“Primitives”(原语)概念:MCP将AI与外部系统交互的内容抽象为几类原语,以此规范客户端和服务器各自能提供的功能。
1)MCP服务器可以提供三种原语:
(1)Prompts(提示):
预先编写的提示词或模板,相当于一段指导性文字片段,可以插入到模型的输入中去影响其行为。例如服务器可以提供一个“代码审查提示模板”,供模型在阅读代码时使用。
(2)Resources(资源):
结构化的数据或文档内容,可供客户端读取并提供给模型作为上下文。例如从数据库查询到的一条记录、用户的笔记文档内容等,都是资源类型。资源类似于“只读文件”,模型可以请求某个资源,服务器会返回相应的数据内容。
(3)Tools(工具):
可以被模型调用的可执行操作或函数。这是MCP最强大也最具互动性的部分,模型可以要求服务器执行某个工具函数来获取信息或改变外部状态,比如调用“发送邮件”工具发送一封邮件,调用“查询天气”工具获取天气数据等。由于工具调用可能带来副作用和安全风险,MCP规定模型调用工具必须经由用户批准后才执行。换言之,工具就像模型可用的“按键”,但每次按键需要真人确认,避免模型滥用外部操作权限。
2)MCP客户端提供两种原语能力用于辅助服务器完成复杂任务:
(1)Roots(根):
这是一种由客户端提供的文件系统入口或句柄。服务器可以通过Root来访问客户端这侧的本地文件或目录内容。例如客户端可以授权服务器读取某个文件夹(作为Root),那么服务器就能代表模型浏览那个文件夹下的文件内容(通常仍以资源形式提供给模型)。Roots机制确保服务器只能访问经授权的本地数据范围,增强安全性。
(2)Sampling(采样):
这一机制允许服务器向客户端发起请求,要求客户端这侧的LLM模型生成一段文本(即一次补全/推理)。简单说,服务器也可以“反过来”调用模型,让模型基于一些额外提示执行推理。Sampling可以用于构建多轮交互的智能Agent:服务器在执行某工具过程中,发现需要模型进一步推理决定下一步时,就可以用Sampling请求模型产出结果,再继续后续操作。不过Anthropic也强调应谨慎使用这一机制,始终保持人类在环监督,以避免AI代理失控循环调用模型。Sampling机制并非所有MCP服务器均支持,需依赖客户端实现。
3)综上
通过上述原语分类,MCP清晰地定义了模型与外部交互的意图类型。
例如,让模型获取一段参考资料应该作为Resource提供,而不是混同于调用Tool;又如要求模型执行某操作就用Tool明确表示。这样的设计使AI系统的上下文管理更结构化:模型知道某段信息是只读资料还是可执行操作,用户也能对不同类型请求进行针对性地审批或监控。这比起简单地给模型一个隐式“工具插件”要透明得多。
-END-
联系入群|加微信89931668
免费DeepSeek教程与学习资料
请先 登录后发表评论 ~