首页 / 资讯中心 / 文章详情

MCP协议详解:小白也能学会的大模型通信标准,快来收藏学习!

MCP协议详解:小白也能学会的大模型通信标准,快来收藏学习! ★ FEATURED ARTICLE
MCP协议是Anthropic推出的开放标准旨在统一LLM与外部数据源和工具的通信。本文详细解析了MCP协议的基本概念、功能及JSON格式涵盖初始化、工具发现、工具执行和实时更新等关键方面帮助读者轻松理解和应用这一AI时代的通信标准。一、产生的原因为了解决AI 应用如豆包元宝等的模型能够访问外部工具和数据, 进行统一接口而产生的协议。就比如我们使用某个AI编程工具Trae的模型进行对话有时需要百度地图相关数据或调用外部的excel工具这时候就是通过MCP协议将模型与外部进行连接。各自厂商有各式各样的AI模型外部的工具和数据也是各式各样为了能够统一这些不同的接口MCP协议应运而生。二、MCP基本概念MCPModel Context Protocol模型上下文协议是Anthropic于2024年11月推出的开放标准协议旨在统一大型语言模型LLM与外部数据源和工具之间的通信协议。MCP作为AI时代的通信标准协议简单的讲就是制定了一套请求响应的格式JSON-RPC 2.0以及一些通知。也可以类比代码中的接口 具体的功能的实现各厂商自己去实现。三、MCP在AI应用程序,模型的位置AI应用程序从所有连接的MCP服务器获取可用工具并将其组合到语言模型可以访问的统一工具注册表中。这允许LLM了解它可以执行哪些操作并在对话期间自动生成适当的工具调用。阶段关键操作主要目的通信消息1. 初始化 (Initialization)能力协商、协议版本确认建立会话确定双方能做什么客户端发送 initialize 请求 → 服务器响应 → 客户端发送2. 操作 (Operation)工具调用、资源访问、提示获取正常的业务交互tools/list, tools/call, resources/list 等请求/响应和通知3. 终止 (Shutdown)关闭连接结束会话任何一方可以发起关闭用户交互模型工具是由模型控制的这意味着AI模型可以自动发现和调用它们。然而MCP强调通过多种机制进行人为监督。为了信任和安全应用程序可以通过各种机制实现用户控制例如工具在执行前可能需要用户同意在UI中显示可用工具使用户能够定义工具是否应在特定交互中可用单个工具执行的审批对话框预先批准某些安全操作的权限设置显示所有工具执行及其结果的活动日志四、MCP协议具体功能及json格式4.1 初始化生命周期管理外部工具是由AI应用客户端如豆包元宝等请求外部服务初始化的。 大模型只负责调用外部工具或数据。AI应用客户端会管理、建立、配置MCP服务器的连接并存储其功能以供大模型以后使用。应用程序使用此信息来确定哪些服务器可以提供特定类型的功能工具、资源、提示以及它们是否支持实时更新。1.请求{ jsonrpc: 2.0, id: 1, method: initialize, params: { protocolVersion: 2025-06-18, capabilities: { elicitation: {} }, clientInfo: { name: example-client, version: 1.0.0 } }}字段含义jsonrpc表示JSON-RPC协议的版本固定为2.0id含义请求的标识符用于匹配请求和响应。这里是一个整数1但也可以是字符串或null对于通知method要调用的方法初始化的固定为initializeparams调用方法时传递的参数是一个对象。params.protocolVersion确保客户端和服务器都使用兼容的协议版本。这可以防止不同版本尝试交互时可能发生的通信错误。如果未协商相互兼容的版本则应终止连接。params.capabilities声明支持的功能包括他们可以处理哪些原语工具、资源、提示以及他们是否支持通知等功能。这通过避免不受支持的操作实现了高效的通信。clientInfo客户端的信息是一个对象clientInfo.name客户端名称例如谷歌地图clientInfo.version客户端版本例如1.0.02.响应{ jsonrpc: 2.0, id: 1, result: { protocolVersion: 2025-06-18, capabilities: { tools: { listChanged: true }, resources: { subscribe: true }, prompts: {} }, serverInfo: { name: example-server, version: 1.0.0 } }}字段含义jsonrpc表示JSON-RPC协议的版本固定为2.0id含义请求的标识符用于匹配请求和响应。这里是一个整数1但也可以是字符串或null对于通知result初始化响应的结果对象result.protocolVersion确保客户端和服务器都使用兼容的协议版本。这可以防止不同版本尝试交互时可能发生的通信错误。如果未协商相互兼容的版本则应终止连接。result.capabilities允许各方声明他们支持哪些功能包括他们可以处理哪些原语工具、资源、提示以及他们是否支持通知等功能。这通过避免不受支持的操作实现了高效的通信。result.capabilities.tools工具能力如果支持则包含一个对象其中可以包含listChanged等布尔属性表示工具列表是否可变以及其他属性。listChanged: true 表示工具列表可能会动态变化客户端需要监听变化result.capabilities.resources资源能力如果支持则包含一个对象其中可以包含各种属性如subscribe等。subscribetrue 表示服务器是否支持客户端订阅资源的变化。serverInfo.name服务端名称例如谷歌地图serverInfo.version服务端版本例如1.0.03.初始化成功后通知当客户端初始化成功后AI应用客户端如豆包元宝等会外部服务发送一条通知表示它已准备就绪。初始化在一个会话中只需要进行一次需要重新初始化的情况网络连接中断会话恢复失败主动重启{ jsonrpc: 2.0, method: initialized, // ← 这也是固定写法}4.2 工具发现1.请求{ jsonrpc: 2.0, id: 2, method: tools/list}“method”: “tools/list”请求外部服务列出可用的工具“method”: “resources/list”请求外部服务列出可用的资源2.响应{ jsonrpc: 2.0, id: 2, result: { tools: [ { name: excel处理, title: excel处理标题, description: excel处理描述, inputSchema: { type: object, properties: { expression: { type: string, description: expression参数描述 } }, required: [expression] } }, { name: 谷歌地图, title: 谷歌地图标题, description: 谷歌地图描述信息, inputSchema: { type: object, properties: { location: { type: string, description: location参数描述 }, units: { type: string, enum: [metric, imperial, kelvin], description: units参数描述, default: metric } }, required: [location] } } ] }}响应包含一个result.tools的工具数组该数组提供了每个工具相关数据。这种结构允许服务器同时公开多个工具。字段含义name服务器命名空间中工具的唯一标识符。这是工具执行的主键应遵循明确的命名模式title客户端可以向用户显示的工具的可读显示名称description详细解释工具的功能以及何时使用inputSchema一种JSON模式定义了调用工具时的输入参数支持类型验证并提供有关必需和可选参数的清晰文档inputSchema.type固定为object表示输入是一个对象。inputSchema.properties定义各个参数的属性location第一次参数名不固定根据工具不同而不同type参数的类型值可能是stringnumberarray (额外参数:items)根据工具不同而不同description参数描述enum枚举值说明是其他可能的约束default默认值其他可能的约束required必填参数值是json中声明的参数名如locationexpressioninputSchema 每个可能都不一样根据工具的不同可能会有不同的参数。4.3 工具执行1.请求{ jsonrpc: 2.0, id: 3, method: tools/call, params: { name: 谷歌地图, arguments: { location: Tokyo, Japan, units: metric // 这个参数可选因为有默认值 } }}字段含义method值是tools/call , 调用工具声明params调用参数name工具具体方法的名称必须与发现响应tools/list中的工具名称name完全匹配。arguments方法的参数对象arguments.location方法的参数对象,必须与发现响应tools/list中的工具名称name完全匹配。location值不固定根据工具不同而不同arguments.units方法的参数对象,必须与发现响应tools/list中的inputSchema.properties完全匹配。units值不固定根据工具不同而不同2.响应{ jsonrpc: 2.0, id: 3, result: { content: [ { type: text, text: Current } ] }}表头表头name必须与发现响应weather_current中的工具名称完全匹配。这确保了服务器能够正确识别要执行的工具。arguments包含由工具的inputSchema定义的输入参数content具响应返回一个内容对象数组允许丰富的多格式响应文本、图像、资源等内容类型每个内容对象都有一个类型字段。在这个例子中“type”“text”表示纯文本内容但MCP支持不同用例的各种内容类型。content.type每个内容对象都有一个类型字段。在这个例子中“type”“text”表示纯文本内容但MCP支持不同用例的各种内容类型。content.text实际的字符串数据。工具调用返回结果中的字段没有在其他接口中预先声明, 只能通过工具的使用说明或文档来了解返回值的具体结构。contentd对象中的输出key是动态的, MCP协议规定了Content类型的基本结构它必须包含一个type字段并且根据不同的类型有不同的附加字段。例如对于text类型会有text字段对于image类型会有data和mimeType字段等。这些在协议规范中有定义。当语言模型决定在对话中使用工具时AI应用程序会拦截工具调用将其路由到相应的MCP服务器执行它并将结果作为对话流的一部分返回给LLM。这使得LLM能够访问实时数据并在外部世界中执行操作。3.错误响应如果是一个错误响应则不会包含result而是包含error字段例如{ jsonrpc: 2.0, id: 3, error: { code: -32601, message: Method not found }}4.4 实时更新通知MCP支持实时通知使服务器能够在没有明确请求的情况下通知客户端更改。这是保持MCP连接同步和响应的关键功能。当服务器的可用工具发生变化时例如当新功能可用、现有工具被修改或工具暂时不可用时MCP服务器可以主动通知连接的客户端{ jsonrpc: 2.0, method: notifications/tools/list_changed}MCP通知的主要特征无需响应通知中没有id字段。这遵循JSON-RPC 2.0通知语义其中不期望或发送响应。基于能力此通知仅由在初始化期间在其工具能力中声明“listChanged”true的服务器发送。事件驱动服务器根据内部状态变化决定何时发送通知使MCP连接动态且响应迅速。客户端对通知的响应在收到此通知后客户端通常会通过请求更新的工具列表来做出反应。它会刷新工具注册表并更新LLM的可用功能。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】为什么要学习大模型我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年人才缺口已超百万凸显培养不足。随着AI技术飞速发展预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。大模型入门到实战全套学习大礼包1、大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通2、大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。3、AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。4、大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。5、大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。适用人群第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
阅读完成 · 觉得有帮助?
咨询建站