ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MCP协议:Agent工具调用的新标准

MCP协议:Agent工具调用的新标准 MCP协议Agent工具调用的新标准工具不是API列表而是Agent的行动边界工具描述、参数Schema、返回值、权限边界、错误恢复这些东西设计不好Agent一定会乱但是如果每个工具都要自己接那不同工具、不同产品、不同模型之间岂不是又要重复造轮子所以这就是MCP要解决的问题现在很多Agent项目最大的问题不是模型不会调用工具而是工具接入太碎接Github要写一套接数据库要写一套接本地文件要写一套MCP是一套标准协议用来让AI应用以统一方式接外部工具、数据和提示模板注意它不是模型也不是Agent框架更像是Agent时代的“工具接入协议”为什么会有MCP假如你要做一个代码助手让它能完成这些事读本地文件搜Github Issue查数据库读公司知识库如果没有统一协议每接一个系统都要自己定义一套工具格式工具怎么发现参数Schema怎么描述工具怎么调用工具结果怎么返回工具权限如何设置这些问题如果每个产品都自己解决就会非常混乱对工具提供方也很痛苦比如你做了一个数据库查询工具你想让Claude Destop能用想让Cusor能用想让公司Agent能用难道每个宿主都要写一套插件这就太浪费了MCP的思路是工具提供方按MCP标准暴露能力AI应用按照MCP标准连接这些能力这样工具和AI应用之间就有了一层统一协议就像前后端之间用的HTTP API通信就像数据库客户端通过统一协议链接数据库它解决的是AI应用怎么标准化地拿到上下文、调用工具、使用提示模板MCP不是Function Calling的替代品这两有关系但是不是一回事Function Calling解决的是模型这一次响应里面要不要调用某个函数以及参数是什么它更贴近模型调用层比如你把工具定义发给模型模型返回{ name:get_order_detail, arguments:{ order_id:38275923 } }然后你的程序执行这个函数把结果再发回模型这个是Function CallingMCP解决的是另一个层面这些工具从哪里来怎么发现怎么连接怎么通信怎么暴露给不同的AI应用也就是说Function Calling更像“模型和工具之间的一次调用格式”MCP更像“AI应用和工具服务器之间的一套连接协议”可以理解为Function Calling关注模型怎么调用工具MCP关注工具怎么标准化接入AI应用他们不是排斥关系很多AI应用会先通过MCP发现工具再把这些工具转换成模型可以用的Function Calling格式让模型决定调用哪一个**Function Calling是模型侧的工具调用机制重点是模型输出哪个函数和参数MCP是应用侧的工具接入协议重点是AI应用如何发现、连接和调用外部工具、资源和提示模板。实际系统里面MCP可以作为工具来源Function Calling可以作为模型选择和调用工具的方式MCP的核心架构Host、Client、ServerMCP官方架构里面有三个角色Host、Clinet、Server这三个词一定要分清HostAI应用本体Host就是用户真正使用的AI应用比如Claude Desktop、Claude CodeHost负责用户交互、模型调用、权限决策、上下文聚合简单说Host是“大脑所在的应用壳”用户不是直接和MCP Server聊聊天而是在Host里面提问ClientHost里面负责连接某个Server的组件MCP Client不是一个独立产品它通常是Host里面的一段连接组件一个Host可以连接多个MCP Server每连接一个ServerHost里面通常就会创建一个对应的Clinet所以Client的职责是和某个MCP Server建立连接做协议版本和能力协商发送工具列表请求接收结果和通知维护这条连接的安全边界你可以把它理解成一个MCP Client对应一个MCP Server的连接通道Server提供工具、资源和提示模板MCP Server是真正提供能力的一方比如文件系统Server暴露读文件、列目录等能力Github Server暴露issue、PR、代码仓库能力数据库Server暴露schema、查询工具Server不负责和用户聊天只负责按照MCP协议提供能力这些能力主要有三类Tools、Resources、Prompts这套架构的最大好处是隔离一个Host可以连接多个Server但是每个Server不应该直接看到全部对话也不应该随便访问其他Server的数据Host负责统一管理权限和上下文Server只暴露自己该暴露的能力MCP不是让所有工具都互相打通是让Host在可控边界内组合多个工具服务器MCP有两层数据层和传输层数据层定义消息和语义数据层负责定义初始化怎么做能力怎么协商工具怎么列出工具怎么调用MCP的数据层基于JSON-RPC比如工具发现可以是tools/list工具调用可以是toos/call资源读取可以是resource/readPrompt获取可以是prompts/get注意MCP不是随便使用HTTP路径写几个接口他有自己的协议方法请求结构和响应结构传输层定义消息怎么传传输层负责把这些JSON-RPC消息送过去常见有两种stdio本地进程之间通过标准输入输出通信这种方式适合本地工具性能好不需要网络Streamable HTTP通过HTTP和远程Server通信也可以支持流式能力和标准鉴权比如远程连接Sentry MCP Server 、公司内部的MCP网关这种方式适合远程服务、多用户场景、需要认证授权的场景MCP暴露的三类能力Tools、Resources、Prompts这是MCP最重要的一块MCP Server不只是暴露工具主要暴露三类能力Tools模型可以主动调用的动作Tools是最像Function Calling的部分他表示模型可以主动调用的函数比如查询订单搜索日志创建工单修改文件Tool通常有名称、描述、参数Schema模型根据用户问题和上下文决定要不要调用它一句话Tools解决Agent能做什么动作Resources提供上下文的数据源Resources是给AI应用读取的上下文数据它更偏向“被动提供信息”比如文件内容数据库schemaAPI文档用户偏好Resources不一定是模型主动调用的动作很多时候是Host或者应用根据需要读取然后放进上下文Resources解决的是“Agent能看到什么信息”Prompts:可复用的提示模板Prompts是预先定义好的交互模块比如帮我规划一次旅行帮我总结会议Prompt可以告诉模型应该怎么使用某些工具和资源prompts解决的是Agent应该按照什么套路做事一句话总结Tools是能做什么Resources是能看到什么Prompts是怎么做更稳很多人只把MCP理解成工具调用协议其实有点窄MCP真正想标准化的是AI应用和外部上下文之间的连接方式MCP一次工具调用大概怎么跑简单的例子“帮我查一下支付服务昨天晚上为什么变慢”假设Host已经连接了一个监控的MCP Server和一个日志MCP Server第一步初始化连接Host为每个MCP Server创建ClientClient和Server做协议初始化协商版本和能力第二步发现工具Client向Server发tools/lsitServer返回自己有哪些工具比如query_api_latencyget_deploy_recordsHost把这些工具整理成模型可用的工具列表第三步模型决定调用工具模型看到用户问题后决定先调用query_api_latency生成工具名和参数第四步:Client调用MCP serverHost通过对应Client发出tools/callMCP Server执行真实查询返回结构化结果第五步模型根据结果继续判断Agent的规划、判断、反思仍然由Host里面的模型和应用逻辑负责MCP为什么适合AgentAgent最怕什么不是没有工具而是工具太多、太散、太不统一MCP对Agent的价值主要有四个工具接入标准化没有MCP每个AI应用都要自己写工具适配层有了MCP工具提供方可以按照标准暴露能力Host只要支持MCP就能连接不同Server这会明显降低接入成本工具发现动态化传统Function Calling往往是开发者在代码里面写死工具列表MCP里面Client可以向Server发tools/list动态发现当前Server提供什么工具如果工具变化Server还可以通过通知让Client知道这对大型Agent平台很重要因为工具不是一成不变的上下文和动作分开Tools是动作Resources是上下文Prompts是模板这比所有东西都包装成函数更清楚比如数据库schema更适合作为Resources查询SQL才适合作为Tool多工具组合更自然一个Host可以连接多个MCP Server比如文件系统ServerGithub Server数据库ServerHost把这些能力聚合之后模型可以围绕一个任务组合使用这就是agent需要的能力但是要注意MCP让工具接入更标准不代表Agent自动变可靠工具描述栏、参数设计栏、权限边界栏MCP也救不了MCP只是把“怎么接入”标准化不是把“怎么设计好工具”自动解决本地MCP和远程MCP怎么选MCP Server可以跑在本地可以跑在远程本地MCP适合文件、命令行、开发环境本地MCP Server常用stdioHost启动一个本地进程通过标准输入输出通信适合读本地文件搜索代码操作本地Git优点是快、简单、没有网络开销缺点是更依赖本地环境也更需要注意本地权限远程MCP:适合企业服务和平台能力远程MCP Server常用Streamable HTTP适合公司知识库监控平台工单系统CRM优点是集中部署、统一鉴权、方便多人使用缺点是要处理认证、授权、网络延迟、审计和多租户隔离所以对于本地文件、代码和开发工具适合本地MCP企业系统、多人共享和需要统一鉴权的能力适合远程MCP不要把所有东西都做成本地要不要把所有东西都做成远程看数据在哪里、权限怎么管、谁在使用MCP的安全边界不能只靠模型自觉MCP让AI应用更容易连接工具但是连接越容易安全问题也就越明显MCP的安全边界核心在HostHost要负责连接哪些Server给每个Server什么权限工具调用前是否需要用户确认传给Server哪些上下文是否允许执行高风险动作调用记录是否可审计Server也要克制不应该默认读取所有上下文不应该默认访问所有文件这些都不应该让模型“想调就调”应该有权限限制、用户确认和审计记录MCP不是安全魔法它提供了标准协议和边界设计空间但是最终安不安全取决于Host怎么设计权限、Server怎么暴露能力、工具怎么做确认和审计别把MCP神化MCP很重要但是不要把它神化他不是万能的agent框架不是用了MCPAgent就会自动规划、自动排版、自动反思MCP解决的是连接问题它让工具、资源、提示模版能以标准方式接入AI应用但是Agent能不能稳定完成任务还要看工具描述清不清楚参数Schema严不严返回值能不能驱动下一步所以你可以这样理解Function Calling是模型调用工具的一种方式MCP是工具接入AI应用的一套标准协议Agent是围绕目标持续行动的系统这三者不是互相替代而是在不同层面解决不同问题
返回列表