ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1">ingFang SC", Cambria, Cochin, Georgia, Times, "Times New Roman", serif;font-size: 14px;color: rgb(63, 63, 63);">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0px 1em;color: rgb(63, 63, 63);">一文解读小白怎么快速搭建一个基于MCP协议的AI Agent应用ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">最近主导了一款ai agent系统的开发,在定架构的时候选择了MCP协议,在期间遇到不少坑点,记录顺分享一下相关内容。此篇是系列的第二篇:读完预计能对怎么搭建一个基于MCP协议的agent应用有初步的认知~ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0px 0.2em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);">什么是MCP?ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">最简单而言:MCP提供了工具(资源和prompt用的少)的规范化协议。它的核心组件有以下几点: ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;color: rgb(63, 63, 63);" class="list-paddingleft-1">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);">1.ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);">MCP主机(Host):发起请求的应用程序(如AI编程助手、IDE插件);ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 14px;text-indent: -1em;display: block;margin: 0.2em 8px;color: rgb(63, 63, 63);">2.MCP客户端(Client):与服务器保持1:1连接的通信模块;3.MCP服务器(Server):运行于本地或远程的轻量级程序,负责访问数据或执行工具(如读取本地文件、调用API);提供三种标准类型能力:Resources、Tools、Prompts。4.资源层:包括本地文件、数据库和远程服务(如云平台API)。本地资源(Local Resources):本地计算机中可供MCP服务器安全访问的资源,如文件、数据库。远程资源(Remote Resources):MCP服务器可以连接到的远程资源,如通过API提供的数据。为什么选择MCP ? MCP协议的优势主要有以下几点: 1)标准化集成:统一接口降低开发复杂度 2)动态扩展与实时交互能力【可随时增减工具】 3)生态兼容性与开发效率提升【目前已成为主流协议】 工具侧具体的实现不公开给HOST应用系统,互相独立维护。MCP协议统一,有助于优秀工具的快速集成,在实际开发HOST系统的时候就能快速使用到市面上相对较好的工具(而不需要自己再调用API维护工具函数或者去找到开源代码重新整合到系统中)。 不过实际开发的时候也发现了它的问题,工具和系统互相独立之后,如果需要调整整个系统的准确率,还是免不了可能需要调整工具层。 小白对MCP可能的误区1)MCP出现之前是不是没有办法调度工具? 不是的。它算是一个通用管理协议,把一个个工具按照一定的规范装在一个量身定做的箱子里。之前也可以进行调度,调度工具关键的点在于大模型识别出使用什么工具以及工具相对应的参数。langchain等在MCP之前就已经支持了工具调度的能力。 2)MCP可以代替function call? 不行,他们是一起工作的关系。如上个问题所述,它只是一个通用协议层。具体函数调用还是需要大模型的支持,而这个协议并不是必须的,在它出现之前就有不少方式,可以直接把工具也放在系统层,直接在系统内调用就可以。 3)MCP能减少调用的token数么? 不行,它只是整合了工具,但实际还是需要把工具参数都发给大模型。整体tokens数消耗相比之前的方式是没有本质区别的,整体依赖于系统的实现。 4)是不是有了MCP,agent应用就能轻而易举搭建了? 不是。MCP只是把工具管理和获取调用这里规范了,但agent应用关键点还有:LLM调用(含function call、prompt工程),记忆系统(RAG,上下文管理),思考和计划系统等。如果想要做好一个agent系统应用,还需要仔细打磨前面提到的模块。 【这里的核心点和踩坑点,后续再梳理文章详细叙述】 如何搭建基于MCP协议的大模型agent应用?
 1)User→Host系统 用户向HOST系统发送一个需要处理的问题(自然语言) 2) Host系统→MCP-Client Host系统将用户原始问题(自然语言)和可调用工具列表(如API、数据库接口等)打包发送至MCP-Client,触发工具规划流程。 3) MCP-Client→LLM MCP-Client请求LLM分析用户问题,生成结构化工具调用方案(包括工具选择、输入参数等),例如解析"查询北京天气"为调用WeatherAPI的参数{location: "北京"}。 4-5) MCP-Client→Host系统(审批闭环) MCP-Client提交工具调用申请至Host系统,触发安全审批(如权限校验/风险过滤),通过后返回确认执行指令,确保操作合规性。 6) Host系统→MCP-Server Tool Host系统向MCP-Server Tool发送工具执行命令(如REST API调用指令),携带LLM生成的标准化参数。 7) MCP-Server Tool执行 工具服务执行具体操作(如调用天气API、数据库查询等),生成原始执行结果(如JSON格式的天气数据)。 8-10) 结果逆向传递链 MCP-Server Tool→Host系统→MCP-Client→LLM,逐层返回工具执行结果,数据经校验和格式化传递,保持上下文一致性。 11) LLM生成最终响应 LLM将工具返回的原始数据转化为用户友好的自然语言(如"北京今日晴,25°C"),并补充逻辑推理或多工具结果融合。 12) Host系统→User Host系统将LLM生成的最终响应返回给用户,完成闭环。流程中MCP协议通过标准化接口和审批机制,确保多主体间安全、高效的协同。
|