id: 8431bff1eabf4aa394a1c5e81d0a7172
parent_id: 
item_type: 1
item_id: ed50c71455944429bb5cb5ab6564aac9
item_updated_time: 1764345633791
title_diff: "[{\"diffs\":[[1,\"MCP圣经：从入门到精通，从精通到放弃，理论 + 实践吃透 大火的 MCP 协议\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":40}]"
body_diff: "[{\"diffs\":[[1,\"<html>\\\r\\\n<head>\\\r\\\n  <title>MCP圣经：从入门到精通，从精通到放弃，理论 + 实践吃透 大火的 MCP 协议</title>\\\r\\\n  <basefont face=\\\"微软雅黑\\\" size=\\\"2\\\" />\\\r\\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\\r\\\n  <meta name=\\\"exporter-version\\\" content=\\\"YXBJ Windows/608924 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;\\\"/>\\\r\\\n  <meta name=\\\"content-class\\\" content=\\\"yinxiang.peso.superNote\\\"/>\\\r\\\n  <meta name=\\\"application-data:yinxiang.noteLayout\\\" content=\\\"{\\\"lineSpace\\\":\\\"recommend\\\",\\\"paragraphSpace\\\":\\\"recommend\\\"}\\\"/>\\\r\\\n  <style>\\\r\\\n\\tbody, td {\\\r\\\n\\t  font-family: 微软雅黑;\\\r\\\n\\t  font-size: 12pt;\\\r\\\n\\t}\\\r\\\n  </style>\\\r\\\n</head>\\\r\\\n<body>\\\r\\\n<a name=\\\"42927\\\"></a>\\\r\\\n<h1>MCP圣经：从入门到精通，从精通到放弃，理论 + 实践吃透 大火的 MCP 协议</h1>\\\r\\\n\\\r\\\n<div><span><div><br/></div><p><br/></p><div style=\\\"--en-blockquote:true;box-sizing: border-box; padding-left: 19px; padding-top: 6px; padding-bottom: 6px; border-left: 3px solid #b4c0cc; background-position: initial initial; background-repeat: initial initial; margin-top: 6px\\\"><div>原文链接: <a href=\\\"http://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247505248&amp;idx=1&amp;sn=baa2cb75f820ba02a552863ae574bea4&amp;chksm=c08972eb88b9a9c48aeb8688a8f0b4dda28411555cb33f212ee1b78abdc409033e5686a90b03&amp;mpshare=1&amp;scene=1&amp;srcid=0525vGVzJ8Br9nyy2uOlpwUu&amp;sharer_shareinfo=7d6313b0793296a375c64bd523969776&amp;sharer_shareinfo_first=7d6313b0793296a375c64bd523969776#rd\\\" rev=\\\"en_rl_none\\\">http://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247505...</a></div></div><p><br/></p><div><br/></div><h1 style=\\\"other-props:eyJibG9ja0lkIjoiNlhhS1JDZ01TNjYifQ==;\\\"> MCP圣经：从入门到精通，从精通到放弃，理论 + 实践吃透 大火的 MCP 协议 </h1><div>原创 尼恩架构团队  技术自由圈 </div><div style=\\\"background-color:rgb(0, 0, 0);color:rgb(255, 192, 0);\\\"><span style=\\\"font-size: 18px;\\\"><span style=\\\"color: rgb(255, 192, 0);\\\"><span style=\\\"font-weight: bold;\\\">FSAC未来超级架构师</span></span></span></div><div><span style=\\\"font-size: 20px;\\\"><span style=\\\"color: rgb(0,0,0);\\\"><span style=\\\"font-weight: bold;\\\">架构师总动员</span></span></span></div><div><span style=\\\"font-size: 18px;\\\">实现架构转型，再无中年危机</span></div><p style=\\\"border-top:rgb(0, 0, 0);\\\"><br/></p><div><br/></div><div style=\\\"padding-left:40px;border-top:solid;background-color:rgb(30, 30, 30);color:rgb(255, 255, 255);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">文章目录：</span></span></span></div><div><span style=\\\"font-size: 12px;\\\">  - 尼恩：LLM大模型学习圣经PDF的起源</span></div><div><span style=\\\"font-size: 12px;\\\">- 最近大火的 MCP 协议，看这篇文章就够了</span></div><div><span style=\\\"font-size: 12px;\\\">    - 本篇旨在回答以下三个问题：</span></div><div><span style=\\\"font-size: 12px;\\\">  - 一  为什么需要 MCP?</span></div><div><span style=\\\"font-size: 12px;\\\">    - Agent  开发的过程和痛点：</span></div><div><span style=\\\"font-size: 12px;\\\">    - Agent   让LLM 调用工具</span></div><div><span style=\\\"font-size: 12px;\\\">    - Agent  开发 三大痛点</span></div><div><span style=\\\"font-size: 12px;\\\">    - ## 二、什么是 MCP？</span></div><div><span style=\\\"font-size: 12px;\\\">    - MCP 和 Function Call 区别？</span></div><div><span style=\\\"font-size: 12px;\\\">    - 从前后端分离看 MCP</span></div><div><span style=\\\"font-size: 12px;\\\">  - 三、 用户如何使用 MCP？</span></div><div><span style=\\\"font-size: 12px;\\\">  - 4. MCP 架构解构</span></div><div><span style=\\\"font-size: 12px;\\\">    - 动态服务发现与适配机制</span></div><div><span style=\\\"font-size: 12px;\\\">    - 客户端与服务器的通信流程</span></div><div><span style=\\\"font-size: 12px;\\\">    - 什么是SSE Transport？</span></div><div><span style=\\\"font-size: 12px;\\\">    - SSE Transport 的工作原理</span></div><div><span style=\\\"font-size: 12px;\\\">      - SSE Transport  交互流程</span></div><div><span style=\\\"font-size: 12px;\\\">      - 数据格式</span></div><div><span style=\\\"font-size: 12px;\\\">      - 示例</span></div><div><span style=\\\"font-size: 12px;\\\">  - 五、SSE 通信流程详解</span></div><div><span style=\\\"font-size: 12px;\\\">    - 1 、建立 SSE 连接</span></div><div><span style=\\\"font-size: 12px;\\\">    - 2、 通信初始化流程</span></div><div><span style=\\\"font-size: 12px;\\\">      - a) 发送初始化请求</span></div><div><span style=\\\"font-size: 12px;\\\">      - b) 发送初始化完成通知</span></div><div><span style=\\\"font-size: 12px;\\\">    - 3、 工具调用示例</span></div><div><span style=\\\"font-size: 12px;\\\">      - a) 获取可用工具列表</span></div><div><span style=\\\"font-size: 12px;\\\">      - b) 调用特定工具</span></div><div><span style=\\\"font-size: 12px;\\\">    - 4、通信特点</span></div><div><span style=\\\"font-size: 12px;\\\">    - 5、 注意事项</span></div><div><span style=\\\"font-size: 12px;\\\">  - 六、MCP官方给出的代码示例</span></div><div><span style=\\\"font-size: 12px;\\\">  - 七、LLM大 模型是如何确定工具的选用的？</span></div><div><span style=\\\"font-size: 12px;\\\">    - 第一步模型如何确定该使用哪些工具</span></div><div><span style=\\\"font-size: 12px;\\\">    - 第二步:工具执行与结果反馈机制</span></div><div><span style=\\\"font-size: 12px;\\\">    - MCP (Model Context Protocol)  总结</span></div><div><span style=\\\"font-size: 12px;\\\">  - 八、MCP (Model Context Protocol)  实战</span></div><div><span style=\\\"font-size: 12px;\\\">    - 实现 MCP Server （Python SDK）</span></div><div><span style=\\\"font-size: 12px;\\\">    - 实现 MCP Client</span></div><div><span style=\\\"font-size: 12px;\\\">      - MCP  Client调用工具</span></div><div><span style=\\\"font-size: 12px;\\\">    - 集成 LLM调用 MCP  Client</span></div><div><span style=\\\"font-size: 12px;\\\">    - 初始化 MCP  Client 客户端类</span></div><div><span style=\\\"font-size: 12px;\\\">    - MCP  Client 和 MCP  服务器连接</span></div><div><span style=\\\"font-size: 12px;\\\">    - 处理请求</span></div><div><span style=\\\"font-size: 12px;\\\">  - 九、MCP (Model Context Protocol) 生态</span></div><div><span style=\\\"font-size: 12px;\\\">    - MCP (Model Context Protocol)  未来</span></div><div><span style=\\\"font-size: 12px;\\\">  - MCP  的应用场景分析</span></div><div><span style=\\\"font-size: 12px;\\\">  - 文中所有引用链接</span></div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoic3FKdVNLZ19hVXMifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">尼恩：LLM大模型学习圣经PDF的起源</span></span></span></h2><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">在40岁老架构师 尼恩的<b>读者交流群</b>(50+)中，经常性的指导小伙伴们改造简历。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">经过尼恩的改造之后，很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会，拿到了大厂机会。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">然而，其中一个成功案例，是一个9年经验 网易的小伙伴，当时拿到了一个年薪近<b>80W的大模型架构offer</b>，逆涨50%，那是在去年2023年的 5月。</span></span></span></div><ul><li><div><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247491496&amp;idx=1&amp;sn=cb31f7510a7c2efb7daf6cad793860ad&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">惊天大逆袭：8年小伙20天时间提75W年薪offer，逆涨50%，秘诀在这</span></span></span></a></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">不到1年，小伙伴也在团队站稳了脚跟，成为了名副其实的大模型 应用 架构师。接下来，尼恩架构团队，通过 梳理一个《LLM大模型学习圣经》 帮助更多的人做LLM架构，拿到年薪100W,  这个内容体系包括下面的内容：</span></span></span></div><ul><li><div><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247504585&amp;idx=1&amp;sn=dcc5f35e6733d36d5bb74113833d6263&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">《<b>Python学习圣经：从0到1精通Python，打好AI基础</b>》</span></span></span></a></div></li><li><div><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247502020&amp;idx=1&amp;sn=a446e3f018639b85e49748d393e7620c&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 12px;\\\">《<b>LLM大模型学习圣经：从0到1吃透Transformer技术底座</b>》 </span></a></div></li><li><div><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247502505&amp;idx=1&amp;sn=d20c2b83eaf9966fe911f94e1e1da01e&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 12px;\\\"><b>《LangChain学习圣经：从0到1精通LLM大模型应用开发的基础框架》</b></span></a></div></li><li><div><span style=\\\"font-size: 12px;\\\"><b>《LLM大模型学习圣经：从0到1精通RAG架构，基于LLM+RAG构建生产级企业知识库》</b></span></div></li><li><div><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247502436&amp;idx=1&amp;sn=cfbf4aec8188cf6025f9a7d09965b809&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 12px;\\\"><b>《SpringCloud + Python 混合微服务架构，打造AI分布式业务应用的技术底层》</b></span></a></div></li><li><div><span style=\\\"font-size: 12px;\\\">《LLM大模型学习圣经：从0到1吃透大模型的顶级架构》</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">《LLM 智能体 学习圣经：从0到1吃透 LLM 智能体 的架构 与实操》</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">《LLM 智能体 学习圣经：从0到1吃透 LLM 智能体 的 中台  架构 与实操》</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">《</span><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247504947&amp;idx=1&amp;sn=3e6e192b1da5346cf06685d9577400d5&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 12px;\\\"><b>Spring 集成 DeepSeek 的 3大方法，史上最全</b></span></a><span style=\\\"font-size: 12px;\\\">》</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">《</span><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247504624&amp;idx=1&amp;sn=0c6fc962c6167f18f01d4060e8a8ae4b&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 12px;\\\">基于Dify +Ollama+ Qwen2 完成本地 LLM 大模型应用实战</span></a><span style=\\\"font-size: 12px;\\\">》</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">《<b>Spring AI 学习圣经  和配套视频</b>   》</span></div></li><li><div><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247505065&amp;idx=1&amp;sn=bf59011a61f011ad952631854779e961&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 12px;\\\">《Text2SQL圣经：从0到1精通Text2Sql（Chat2Sql）的原理，以及Text2Sql开源项目的使用》</span></a></div></li><li><div><span style=\\\"font-size: 12px;\\\">《</span><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247505070&amp;idx=1&amp;sn=df70070e7655280d14682d8a6bdc6f0f&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 12px;\\\">AI部署架构：A100、H100、A800、H800、H20的差异以及如何选型？开发、测试、生产环境如何进行部署架构？</span></a><span style=\\\"font-size: 12px;\\\">》</span></div></li><li><div><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247505234&amp;idx=1&amp;sn=0a8915a71a30c62ace3bdf50b76b649f&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 12px;\\\"><b>生产环境 K8S + Deepseek 实现大模型部署 和 容器调度（图解+史上最全）</b></span></a></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">以上学习圣经 的  配套视频， 2025年 5月份之前发布。</span></span></span></div><h1 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoibUlvZ1R5aVRfYmYifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">最近大火的 MCP 协议，看这篇文章就够了</span></span></span></h1><h3 style=\\\"other-props:eyJibG9ja0lkIjoic3pzaFJxbEQ4aEIifQ==;\\\"></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">本篇旨在回答以下三个问题：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（1）什么是 MCP？</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（2）为什么需要 MCP？</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（3）作为用户，我们如何使用/开发 MCP？</span></span></span></div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiNTJKc1EtUEJJX0IifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">一  为什么需要 MCP?</span></span></span></h2><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">我认为 MCP 的出现是 prompt engineering（提示工程）发展的产物。更结构化的上下文信息对模型的性能提升是显著的。我们在构造 prompt （提示词）时，希望能提供一些更具体的信息（比如本地文件，数据库，一些网络实时信息等）给模型，这样模型更容易理解真实场景中的问题。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">想象一下没有 MCP 之前我们会怎么做？</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">我们可能会人工从数据库中筛选或者使用工具检索可能需要的信息，手动的粘贴到 prompt 中。随着我们要解决的问题越来越复杂，手工把信息引入到 prompt 中会变得越来越困难。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">为了克服手工 prompt 的局限性，许多 LLM 平台（如 OpenAI、Google）引入了 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">function call</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> （函数调用）功能。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这一机制允许模型在需要时调用预定义的函数来获取数据或执行操作，显著提升了自动化水平。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoidXBZWVR1N2M0THoifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">Agent  开发的过程和痛点：</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">AI 的发展链路大致是这样的：  从最初只能对话的 Chatbot，辅助人类决策的 Copilot，再到能自主感知和行动的 Agent，AI 在任务中的参与度不断提升。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这要求 AI 拥有更丰富的任务上下文 <b>（Context）</b>，并拥有执行 行动所需的工具  <b>（Tool ）</b>。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiUzFQNlJHWENQM1IifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">Agent   让LLM 调用工具</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">一个  Agent   让LLM 调用工具，步骤如下：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（1）写好函数工具</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">开发者需要在本地写好函数工具，例如，如果想让LLM学会查询天气，我们需要在本地写好一个查询天气的函数</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（2）写好函数的介绍（这个很关键）</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">LLM将会函数的介绍，理解函数的作用。函数介绍包括：函数的作用、参数的类型、参数的作用等。例如，DeepSeek的函数介绍格式如下：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:2ZbhTuUROY7;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"font-size: 12px;\\\">tools = [{</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;type&quot;: &quot;function&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;function&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;name&quot;: &quot;get_weather&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;description&quot;: &quot;Get weather of an location, the user shoud supply a location first&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;parameters&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;type&quot;: &quot;object&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;properties&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;location&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                    &quot;type&quot;: &quot;string&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">                    &quot;description&quot;: &quot;The city and state, e.g. San Francisco, CA&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">                }</span>\\\n<span style=\\\"font-size: 12px;\\\">            },</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;required&quot;: [&quot;location&quot;]</span>\\\n<span style=\\\"font-size: 12px;\\\">        },</span>\\\n<span style=\\\"font-size: 12px;\\\">    }</span>\\\n<span style=\\\"font-size: 12px;\\\">}, ]</span>\\\n\\\n<span style=\\\"font-size: 12px;\\\">这是一个天气查询的函数，参数为location，LLM将会通过这些介绍，学会如何调用函数。</span>\\\n<span style=\\\"font-size: 12px;\\\">（3）解析响应，并在本地执行函数</span>\\\n<span style=\\\"font-size: 12px;\\\">若DeepSeek认为当前应该调用函数，则会输出参数的填写方式，格式如下：</span>\\\n\\\n</div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">我们可以通过解析message中是的tool_calls字段，将DeepSeek给出的参数填写在函数中，并在本地执行函数。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（4）LLM根据运行结果进行总结并回复</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">最后把函数执行的结果反馈给DeepSeek，DeepSeek再整理执行结果，给出回复。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoicHByV1JpWDk4MU8ifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">Agent  开发 三大痛点</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">缺少标准化的上下文和工具集导致 Agent  开发有三大痛点：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>1 开发耦合度高</b>：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">工具开发者需要深入了解 Agent 的内部实现细节，并在 Agent 层编写工具代码。这导致在工具的开发与调试困难。<b>2 工具复用性差</b>：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">因每个工具实现都耦合在 Agent 应用代码内，即使是通过 API 实现适配层在给到 LLM 的出入参上也有区别。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">从编程语言角度来讲，没办法做到跨编程语言进行复用。<b>3 生态碎片化</b>：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">工具提供方能提供的只有 OpenAPI，由于缺乏标准使得不同 Agent 生态中的工具 Tool 互不兼容。</span></span></span></div><img src=\\\":/82a30b07a70d471bb5410eb6d0a74b28\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">但是 function call 也有其局限性， <b>function call 平台依赖性强</b>，不同 LLM 平台的 function call API 实现差异较大。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">例如，OpenAI 的函数调用方式与 Google 的不兼容，开发者在切换模型时需要重写代码，增加了适配成本。除此之外，还有安全性，交互性等问题。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiTG5qNFRpRkxjd3gifQ==;\\\"></h3><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiaFhXS1NpY0dURkYifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">二、什么是 MCP？</span></span></span></h2><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>数据与工具本身是客观存在的</b>，只不过我们希望将数据连接到模型的这个环节可以更智能更统一。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP（Model Context Protocol）是Anthropic（Claude的母公司）在2024年提出的一种协议标准，中文翻译过来的意思是&quot;模型上下文协议&quot;。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP的核心作用是<b>让AI模型能够主动调用外部工具和服务</b>，从而 大大 扩展AI的  <b>能力边界</b>。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP 起源于 2024 年 11 月 25 日 Anthropic 发布的文章：[Introducing the Model Context Protocol1]。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP （Model Context Protocol，模型上下文协议）定义了应用程序和 AI 模型之间交换上下文信息的方式。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP  使得开发者能够<b>以一致的方式将各种数据源、工具和功能连接到 AI 模型</b>（一个中间协议层），就像 USB-C 让不同设备能够通过相同的接口连接一样。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP 的目标是创建一个通用标准，使 AI 应用程序的开发和集成变得更加简单和统一。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">所谓一图胜千言，我这里引用一些制作的非常精良的图片来帮助理解：</span></span></span></div><img src=\\\":/994a7dc12cb846d8be3cc9dda9c37980\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">可以看出，MCP 就是以更标准的方式让 LLM Chat 使用不同工具，更简单的可视化如下图所示，这样你应该更容易理解“中间协议层”的概念了。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Anthropic 旨在实现 LLM Tool Call（LLM 工具调用）的标准。</span></span></span></div><img src=\\\":/d5899fac586a41b590a877e000e29a70\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Anthropic 基于这样的痛点设计了 MCP，充当 AI 模型的&quot;万能转接头&quot;，让 LLM 能轻松得获取数据或者调用工具。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">一句话解释就是 MCP 提供给 LLM 所需的上下文：Resources 资源、Prompts 提示词、Tools 工具。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">更具体的说 MCP 的优势在于：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>（1）生态：</b>MCP 提供很多现成的插件，你的 AI 可以直接使用。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>（2）统一性：</b>不限制于特定的 AI 模型，任何支持 MCP 的模型都可以灵活切换。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>（3）数据安全：</b>你的敏感数据留在自己的电脑上，不必全部上传（因为我们可以自行设计接口确定传输哪些数据）。</span></span></span></div><img src=\\\":/39cd7d01e823413c8dacd527f6992dd8\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><h3 style=\\\"other-props:eyJibG9ja0lkIjoiSTMzWlItSHBGX0wifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">MCP 和 Function Call 区别？</span></span></h3><table style=\\\"--en-fitwindow:false;border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-collapse:collapse;width:570px;\\\" width=\\\"570px\\\"><colgroup><col style=\\\"width: 190px;\\\"></col><col style=\\\"width: 190px;\\\"></col><col style=\\\"width: 190px;\\\"></col></colgroup><tbody><tr><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><br/></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};background-color:rgb(246, 248, 250);border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\"><b>MCP</b></span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};background-color:rgb(246, 248, 250);border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\"><b>Function Call</b></span></div></td></tr><tr style=\\\"border-top-width:1px; border-top-style:solid; border-top-color:rgb(198, 203, 209);\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">定义</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">模型和其它设备集成的标准接口，包含：工具 Tools、资源 Resources、提示词 Prompts</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">将模型连接到外部数据和系统，平铺式的罗列 Tools 工具。和 MCP Tool 不同的在于：MCP Tool 的函数约定了输入输出的协议规范。</span></div></td></tr><tr style=\\\"border-top-width:1px; border-top-style:solid; border-top-color:rgb(198, 203, 209);\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">协议</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">JSON-RPC，支持双向通信（但目前使用不多）、可发现性、更新通知能力。</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">JSON-Schema，静态函数调用。</span></div></td></tr><tr style=\\\"border-top-width:1px; border-top-style:solid; border-top-color:rgb(198, 203, 209);\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">调用方式</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">Stdio / SSE / 同进程调用（见下文）</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">同进程调用 / 编程语言对应的函数</span></div></td></tr><tr style=\\\"border-top-width:1px; border-top-style:solid; border-top-color:rgb(198, 203, 209);\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">适用场景</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">更适合动态、复杂的交互场景</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">单一特定工具、静态函数执行调用</span></div></td></tr><tr style=\\\"border-top-width:1px; border-top-style:solid; border-top-color:rgb(198, 203, 209);\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">系统集成难度</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">高</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">简单</span></div></td></tr><tr style=\\\"border-top-width:1px; border-top-style:solid; border-top-color:rgb(198, 203, 209);\\\"><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">工程化程度</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">高</span></div></td><td style=\\\"--en-typeInfo:{&quot;type&quot;:&quot;text&quot;,&quot;data&quot;:{}};border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;padding:10px;\\\"><div><span style=\\\"font-size: 12px;\\\">低</span></div></td></tr></tbody></table><h3 style=\\\"other-props:eyJibG9ja0lkIjoiR0ZaY1FlSG1zTloifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">从前后端分离看 MCP</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">早期 Web 开发在 JSP、PHP 盛行时，前端交互页面都是耦合在后端逻辑里的，造成开发复杂度高、代码维护困难、前后端协作不便，难以适应现代 Web 应用对用户体验和性能的更高要求。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">AJAX、Node.js、RESTful API 推动前后端分离，对应 MCP 也正在实现 AI 开发的“工具分层”：</span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\"><b>前后端分离</b>：</span></span></span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">前端专注界面，后端专注 API 接口；</span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\"><b>MCP 分层</b>：</span></span></span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">让工具开发者和 Agent 开发者各司其职，工具质量和功能的迭代不需要 Agent 开发者感知。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这种分层让 AI Agent 开发者能像搭积木一样组合工具，快速构建复杂 AI 应用。</span></span></span></div><img src=\\\":/326d47d86b414fdb9e43999f12364fff\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoib182UlFpOEY1QTUifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">三、 用户如何使用 MCP？</span></span></span></h2><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">对于用户来说，我们并不关心 MCP 是如何实现的，通常我们只考虑如何更简单地用上这一特性。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">具体的使用方式参考官方文档：For Claude Desktop Users。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这里不再赘述，配置成功后可以在 Claude 中测试：</span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Can you write a poem and save it to my desktop?</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> Claude 会请求你的权限后在本地新建一个文件。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">并且官方也提供了非常多现成的 MCP Servers，你只需要选择你希望接入的工具，然后接入即可。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（1）Awesome MCP Servers</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（2）MCP Servers Website</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（3）Official MCP Servers</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">比如官方介绍的 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">filesystem</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 工具，它允许 Claude 读取和写入文件，就像在本地文件系统中一样。</span></span></span></div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiUDBkLVNhY0l0ZXQifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">4. MCP 架构解构</span></span></span></h2><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这里首先引用官方给出的架构图。</span></span></span></div><img src=\\\":/e1710d6d7e674d46a64c3d6fc30fd285\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><br/></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP Architecture 原图网址</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP 由三个核心组件构成：Host（主机）、Client（客户端） 和 Server（服务器）。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">让我们通过一个实际场景来理解这些组件如何协同工作：  假设你正在使用 Claude Desktop (Host) 询问：&quot;我桌面上有哪些文档？&quot;</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>（1）Host</b>：Claude Desktop 作为 Host，负责接收你的提问并与 Claude 模型交互。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>（2）Client</b>：当 Claude 模型决定需要访问你的文件系统时，Host 中内置的 MCP Client 会被激活。这个 Client 负责与适当的 MCP Server 建立连接。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>（3）Server</b>：在这个例子中，文件系统 MCP Server 会被调用。它负责执行实际的文件扫描操作，访问你的桌面目录，并返回找到的文档列表。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">整个流程是这样的：你的问题 → Claude Desktop(Host) → Claude 模型 → 需要文件信息 → MCP Client 连接 → 文件系统 MCP Server → 执行操作 → 返回结果 → Claude 生成回答 → 显示在 Claude Desktop 上。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这种架构设计使得 Claude 可以在不同场景下灵活调用各种工具和数据源，而开发者只需专注于开发对应的 MCP Server，无需关心 Host 和 Client 的实现细节。</span></span></span></div><img src=\\\":/2fd94427d2b2448bbe3cb83fa2ca24e6\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">更加细致的 整体架构图，如下：</span></span></span></div><img src=\\\":/c3b32f7370b74f8bbe90e68fccb8e165\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">直观地说，<b>MCP 就像 AI 应用的 USB-C 接口。</b></span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">正如 USB-C 为设备连接各种配件提供了标准化方案，MCP 也将 AI 应用连接到不同数据源和工具的方式标准化了。</span></span></span></div><img src=\\\":/95de1bdc49324defbf0e2bf20d488434\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP 的核心遵循客户端-服务器（client-server）架构，Host 应用程序可以连接到多个 Server。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">它包含三个主要组件：</span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">Host</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\">Client</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">Server</span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>Host</b>   代表任何提供 AI 交互环境、访问外部工具和数据源，<b>Host</b>  是一个  还负责 运行 MCP Client 的 AI 应用（如  Claude 桌面版 、 Cursor ）。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>MCP Client</b> 在 Host 内运行，实现与 MCP Servers 的通信。</span></span></span></div><img src=\\\":/db72f45336d34a2ab88c5ff78308fae5\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>MCP Server</b> 对外开放特定能力，并提供对数据源的访问权限，包括：</span></span></span></div><img src=\\\":/89362fcd51a84eb0b02268432b2a1111\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>MCP Server</b>  包括：</span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\"><b>Tools</b>：使大语言模型能够通过你的 Server 执行操作。</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\"><b>Resources</b>：将 Server 上的数据和内容开放给大语言模型。</span></div></li><li><div><span style=\\\"font-size: 12px;\\\"><b>Prompts</b>：创建可复用的提示词模板和工作流程。</span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">要构建属于你自己的 MCP 系统，理解客户端-服务器通信机制是必不可少的。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiTEpzUlNDMkZYbWEifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">动态服务发现与适配机制</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>MCP Server</b>    和 <b>MCP Client</b>    之间，是 一种 动态服务发现与适配机制，也叫做 能力交换   Capability Exchange 机制</span></span></span></div><img src=\\\":/183a92413157434bb0c3b00fca151436\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">首先进行 Capability Exchange（译者注：Capability Exchange（能力交换）是一种动态服务发现与适配机制，是MCP连接建立的必经步骤，类似于“握手协议”。）</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Capability Exchange 流程如下：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>(1) 客户端发送初始请求，获取服务器能力信息(2) 服务器返回其能力信息详情(3) 例如当天气 API 服务器被调用时，它可以返回可用的“tools”、“prompts templates”及其他资源供客户端使用</b></span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">交换完成后，客户端确认连接成功，然后继续交换消息。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Capability Exchange 流程 具体如何实现呢？  MCP协议官方提供了两种主要通信方式：<b>stdio</b>（标准输入输出）和 <b>SSE</b> （Server-Sent Events，服务器发送事件）。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiRnllLVQtNDVuUWMifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">客户端与服务器的通信流程</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP协议官方提供了两种主要通信方式：<b>stdio</b>（标准输入输出）和 <b>SSE</b> （Server-Sent Events，服务器发送事件）。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这两种方式均采用<b>全双工通信模式</b>，通过独立的读写通道实现服务器消息的实时接收和发送。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiYTVNUFR5U3RDWi0ifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">什么是SSE Transport？</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP（Model Context Protocol） 是一个开放协议，旨在标准化应用程序与大型语言模型（LLM）之间的上下文交互。它定义了客户端与服务器如何通过传输层交换消息。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP 支持两种标准传输机制：</span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\"><b>stdio：</b>通过标准输入输出流进行本地通信。</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\"><b>SSE（Server-Sent Events）：</b>通过 HTTP 协议实现服务器到客户端的实时单向数据推送，结合 HTTP POST 用于客户端到服务器的消息发送。</span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">SSE Transport 是 MCP 中基于 HTTP 的传输方式，利用 SSE 技术实现服务器到客户端的流式消息推送，同时通过 HTTP POST 请求处理客户端到服务器的双向通信。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这种机制特别适合需要实时更新或远程通信的场景。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiVWZVX1F1QW5nX1IifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">SSE Transport 的工作原理</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">SSE（Server-Sent Events）是一种基于 HTTP 协议的服务器推送技术，允许服务器向客户端发送实时更新。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP 的 SSE Transport 结合了 SSE 和 HTTP POST，形成了以下工作流程：</span></span></span></div><img src=\\\":/40c3821e295c4006b73bb85c80b6a3e4\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><h4 style=\\\"other-props:eyJibG9ja0lkIjoic1BMVlRPZkV0eHkifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">SSE Transport  交互流程</span></span></h4><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>1.建立连接：</b></span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">客户端通过 HTTP GET 请求访问服务器的 SSE 端点（例如 /sse）。</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\">服务器响应一个 text/event-stream 类型的内容，保持连接打开。</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">服务器发送一个初始的 endpoint 事件，包含一个唯一的 URI（例如 /messages?session_id=xxx），客户端后续通过这个 URI 发送消息。</span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>2.服务器到客户端的消息推送：</b></span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">服务器通过 SSE 连接，将 JSON-RPC 格式的消息，以事件流的形式发送给客户端。</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\">客户端通过 EventSource 或类似机制监听这些事件。</span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>3.客户端到服务器的消息发送：</b></span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">客户端通过 HTTP POST 请求将消息，发送到服务器提供的 URI（例如 /messages）。</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\">服务器接收并处理这些请求，返回响应或通过 SSE 推送结果。</span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>4.连接管理：</b></span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">SSE 连接是单向的（服务器到客户端），通常通过定期发送心跳消息（keep-alive）保持活跃。</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\">如果连接断开，客户端可以重新发起 SSE 请求重建连接。</span></div></li></ul><h4 style=\\\"other-props:eyJibG9ja0lkIjoiNllEbFRPYXZMMEQifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">数据格式</span></span></h4><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP 使用 JSON-RPC 2.0 协议封装消息，确保请求和响应的结构化处理</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">SSE 消息遵循 event:\\\\\ndata:\\\\\n\\\\\n 的格式。</span></span></span></div><h4 style=\\\"other-props:eyJibG9ja0lkIjoieGV4NlRhaDJpUFEifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">示例</span></span></h4><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">客户端 POST 请求：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:FYc6Q6SCm8M;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"font-size: 12px;\\\">POST /messages HTTP/1.1</span>\\\n<span style=\\\"font-size: 12px;\\\">Content-Type: application/json</span>\\\n<span style=\\\"font-size: 12px;\\\">{&quot;jsonrpc&quot;: &quot;2.0&quot;, &quot;method&quot;: &quot;example&quot;, &quot;params&quot;: {&quot;text&quot;: &quot;Hi&quot;}, &quot;id&quot;: 1}</span>\\\n\\\n<span style=\\\"font-size: 12px;\\\">服务器推送：</span>\\\n\\\n</div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoidkFoN1RXZXNyOFcifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">五、SSE 通信流程详解</span></span></span></h2><h3 style=\\\"other-props:eyJibG9ja0lkIjoiS29ZU1JDdFpXaXgifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">1 、建立 SSE 连接</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">客户端首先需要与服务端建立一个SSE长连接，该连接用于接收服务端推送的所有消息：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">http://localhost:8000/sse</span></span></code></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">提示：</span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">可以直接在浏览器中打开此链接实时查看接收到的消息流</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\">同步使用curl、Postman等工具进行消息发送测试，便于双向操作验证</span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">建立连接后，服务端会首先返回一个专用的消息发送端点（Endpoint），这是后续通信的关键：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:s325QWVYOrq;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">\\\n<span style=\\\"font-size: 12px;\\\">event: endpoint</span>\\\n<span style=\\\"font-size: 12px;\\\">data: /messages/?session_id=2b3c8777119444c1a1b26bc0d0f05a0a</span>\\\n</div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">说明：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">客户端之后发送的所有消息请求，都必须指向这个专用Endpoint  (其实就是专用的 url)。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">当请求格式正确时，该Endpoint会返回一个”Accepted”状态码，但是，真正的服务器响应内容都是通过SSE端点异步推送的。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiaWRQYVRXVEZURTUifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">2、 通信初始化流程</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">客户端需要完成两个关键的初始化步骤，确保通信渠道正常建立：</span></span></span></div><h4 style=\\\"other-props:eyJibG9ja0lkIjoiSG5pSVJXTTdSV3YifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">a) 发送初始化请求</span></span></h4><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">客户端需要先向服务端发送初始化请求，表明自身身份和期望的通信参数：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:RKNxSioy6EK;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">\\\n<span style=\\\"font-size: 12px;\\\">curl -X POST 'http://localhost:8000/messages/?session_id=2b3c8777119444c1a1b26bc0d0f05a0a' -H 'Content-Type: application/json' -d '{</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;jsonrpc&quot;: &quot;2.0&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;id&quot;: 0,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;method&quot;: &quot;initialize&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;params&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">      &quot;protocolVersion&quot;: &quot;2024-11-05&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">      &quot;capabilities&quot;: {},</span>\\\n<span style=\\\"font-size: 12px;\\\">      &quot;clientInfo&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;name&quot;: &quot;mcp&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;version&quot;: &quot;0.1.0&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">      }</span>\\\n<span style=\\\"font-size: 12px;\\\">    }</span>\\\n<span style=\\\"font-size: 12px;\\\">}'</span>\\\n</div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">服务端会返回其支持的功能列表，便于客户端了解可用的交互能力：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:7riZS25Zsrx;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">\\\n<span style=\\\"font-size: 12px;\\\">event: message</span>\\\n<span style=\\\"font-size: 12px;\\\">data: {</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;jsonrpc&quot;: &quot;2.0&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;id&quot;: 0,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;result&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;protocolVersion&quot;: &quot;2024-11-05&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;capabilities&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;experimental&quot;: {},</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;prompts&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;listChanged&quot;: false</span>\\\n<span style=\\\"font-size: 12px;\\\">            },</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;resources&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;subscribe&quot;: false,</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;listChanged&quot;: false</span>\\\n<span style=\\\"font-size: 12px;\\\">            },</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;tools&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;listChanged&quot;: false</span>\\\n<span style=\\\"font-size: 12px;\\\">            }</span>\\\n<span style=\\\"font-size: 12px;\\\">        },</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;serverInfo&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;name&quot;: &quot;weather&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;version&quot;: &quot;1.3.0&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">        }</span>\\\n<span style=\\\"font-size: 12px;\\\">    }</span>\\\n<span style=\\\"font-size: 12px;\\\">}</span>\\\n</div><h4 style=\\\"other-props:eyJibG9ja0lkIjoiYjNDb1F5LTlOQ2wifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">b) 发送初始化完成通知</span></span></h4><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">初始化协商完成后，客户端需要明确通知服务端,初始化已完成：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:ft1LRuYSPJV;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">\\\n<span style=\\\"font-size: 12px;\\\">curl -X POST 'http://localhost:8000/messages/?session_id=2b3c8777119444c1a1b26bc0d0f05a0a' -H 'Content-Type: application/json' -d '{</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;jsonrpc&quot;: &quot;2.0&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;method&quot;: &quot;notifications/initialized&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;params&quot;: {}</span>\\\n<span style=\\\"font-size: 12px;\\\">}'</span>\\\n</div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiNUxjc1NpX2VXYnEifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">3、 工具调用示例</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP协议的核心价值在于其工具调用能力，以下是一个完整的调用流程：</span></span></span></div><h4 style=\\\"other-props:eyJibG9ja0lkIjoiN3BRLVFDbUJaSy0ifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">a) 获取可用工具列表</span></span></h4><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">客户端首先应该获取服务端提供的工具列表，如果已经知道其工具参数也可跳过，直接去调用工具：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:dwP0SSKOKm_;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">\\\n<span style=\\\"font-size: 12px;\\\">curl -X POST 'http://localhost:8000/messages/?session_id=2b3c8777119444c1a1b26bc0d0f05a0a' -H 'Content-Type: application/json' -d '{</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;jsonrpc&quot;: &quot;2.0&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;id&quot;: 1,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;method&quot;: &quot;tools/list&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;params&quot;: {}</span>\\\n<span style=\\\"font-size: 12px;\\\">}'</span>\\\n</div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">服务端会返回所有可用的工具及其参数规范：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:tMm-RCzj5Hb;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">\\\n<span style=\\\"font-size: 12px;\\\">event: message</span>\\\n<span style=\\\"font-size: 12px;\\\">data: {</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;jsonrpc&quot;: &quot;2.0&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;id&quot;: 1,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;result&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;tools&quot;: [{</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;name&quot;: &quot;get_alerts&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;description&quot;: &quot;Get weather alerts for a US state.\\\\\n\\\\\n    Args:\\\\\n        state: Two-letter US state code (e.g. CA, NY)\\\\\n    &quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;inputSchema&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;properties&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                    &quot;state&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                        &quot;title&quot;: &quot;State&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">                        &quot;type&quot;: &quot;string&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">                    }</span>\\\n<span style=\\\"font-size: 12px;\\\">                },</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;required&quot;: [&quot;state&quot;],</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;title&quot;: &quot;get_alertsArguments&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;type&quot;: &quot;object&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">            }</span>\\\n<span style=\\\"font-size: 12px;\\\">        }, {</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;name&quot;: &quot;get_forecast&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;description&quot;: &quot;Get weather forecast for a location.\\\\\n\\\\\n    Args:\\\\\n        latitude: Latitude of the location\\\\\n        longitude: Longitude of the location\\\\\n    &quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;inputSchema&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;properties&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                    &quot;latitude&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                        &quot;title&quot;: &quot;Latitude&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">                        &quot;type&quot;: &quot;number&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">                    },</span>\\\n<span style=\\\"font-size: 12px;\\\">                    &quot;longitude&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                        &quot;title&quot;: &quot;Longitude&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">                        &quot;type&quot;: &quot;number&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">                    }</span>\\\n<span style=\\\"font-size: 12px;\\\">                },</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;required&quot;: [&quot;latitude&quot;, &quot;longitude&quot;],</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;title&quot;: &quot;get_forecastArguments&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;type&quot;: &quot;object&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">            }</span>\\\n<span style=\\\"font-size: 12px;\\\">        }]</span>\\\n<span style=\\\"font-size: 12px;\\\">    }</span>\\\n<span style=\\\"font-size: 12px;\\\">}</span>\\\n</div><h4 style=\\\"other-props:eyJibG9ja0lkIjoiLXNNRlRhNXAwajcifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">b) 调用特定工具</span></span></h4><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">客户端根据需求，选择并调用特定工具：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:CMm-Syu9RCW;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">\\\n<span style=\\\"font-size: 12px;\\\">curl -X POST 'http://localhost:8000/messages/?session_id=2b3c8777119444c1a1b26bc0d0f05a0a' -H 'Content-Type: application/json' -d '{</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;jsonrpc&quot;: &quot;2.0&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;id&quot;: 2,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;method&quot;: &quot;tools/call&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;params&quot;: {&quot;name&quot;: &quot;get_alerts&quot;, &quot;arguments&quot;: {&quot;state&quot;: &quot;CA&quot;}}</span>\\\n<span style=\\\"font-size: 12px;\\\">}'</span>\\\n</div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">服务端执行工具调用并返回结果：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:dJuMRm1WwdH;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"font-size: 12px;\\\">event: message</span>\\\n<span style=\\\"font-size: 12px;\\\">data: {</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;jsonrpc&quot;: &quot;2.0&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;id&quot;: 2,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;result&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;content&quot;: [{</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;type&quot;: &quot;text&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;text&quot;: &quot;\\\\\nEvent: Wind Advisory\\\\\nArea: San Gorgonio Pass Near Banning\\\\\nSeverity: Moderate\\\\\nDescription: * WHAT... \\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">        }],</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;isError&quot;: false</span>\\\n<span style=\\\"font-size: 12px;\\\">    }</span>\\\n<span style=\\\"font-size: 12px;\\\">}</span>\\\n</div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiejNFT1RDbGhHQUYifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">4、通信特点</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>1 双向异步通信</b> ： 接收通道通过 SSE 长连接接收服务端消息，发送通道通过 HTTP POST 向专用端点发送客户端消息</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>2 会话状态管理</b> ：使用 session_id 维护客户端与服务端的会话状态，支持多客户端并发连接</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>3 标准通信协议</b> ：基于 JSON-RPC 2.0 规范，确保通信格式统一，便于跨平台</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>4 可扩展性</b> ：支持动态发现和调用服务端工具</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP协议通过其灵活而高效的通信机制，为客户端与服务端之间的交互提供了可靠保障。基于SSE的实现方案不仅便于开发和调试，还具备良好的性能表现。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">对于开发者而言，深入理解MCP通信模式不仅有助于实现高质量的客户端应用，也为设计其他分布式通信系统提供了宝贵经验。希望本文的详细解析能为您的技术实践提供有益参考。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiZ0trUVFxVHBpSEoifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">5、 注意事项</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>(1) </b>所有客户端请求必须使用服务端分配的<b>Endpoint</b></span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">(2) 初始化流程必须严格按照顺序完成</span></span></span></div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiSlhTaFN1R25mdGQifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">六、MCP官方给出的代码示例</span></span></span></h2><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">我们可以分析一段MCP官方给出的代码示例</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/clients/simple-chatbot/mcp_simple_chatbot/main.py#L196</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:6HUHRKld0IL;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">\\\n<span style=\\\"font-size: 12px;\\\">all_tools = []</span>\\\n<span style=\\\"font-size: 12px;\\\">for server in self.servers: tools = await server.list_tools() all_tools.extend(tools)</span>\\\n<span style=\\\"font-size: 12px;\\\">tools_description = &quot;\\\\\n&quot;.join([tool.format_for_llm() for tool in all_tools])</span>\\\n<span style=\\\"font-size: 12px;\\\">system_message = (&quot;You are a helpful assistant with access to these tools:\\\\\n\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    f &quot;{tools_description}\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;Choose the appropriate tool based on the user's question. &quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;If no tool is needed, reply directly.\\\\\n\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;IMPORTANT: When you need to use a tool, you must ONLY respond with &quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;the exact JSON object format below, nothing else:\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;{\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    '    &quot;tool&quot;: &quot;tool-name&quot;,\\\\\n'</span>\\\n<span style=\\\"font-size: 12px;\\\">    '    &quot;arguments&quot;: {\\\\\n'</span>\\\n<span style=\\\"font-size: 12px;\\\">    '        &quot;argument-name&quot;: &quot;value&quot;\\\\\n'</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;    }\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;}\\\\\n\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;After receiving a tool's response:\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;1. Transform the raw data into a natural, conversational response\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;2. Keep responses concise but informative\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;3. Focus on the most relevant information\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;4. Use appropriate context from the user's question\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;5. Avoid simply repeating the raw data\\\\\n\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;Please use only the tools that are explicitly defined above.&quot;)</span>\\\n</div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">方便起见，我们翻译一些系统提示词：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:TjRuS2AmwYc;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">\\\n<span style=\\\"font-size: 12px;\\\">您是一个有用的助手， 可以访问这些工具：｛ tools_description｝ 根据用户的问题选择合适的工具。 如果不需要工具， 请直接回复。</span>\\\n<span style=\\\"font-size: 12px;\\\">重要提示： 当您需要使用工具时， 您必须只回复下面确切的JSON对象格式， 不回复别的内容： {</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;tool&quot;: &quot;tool-name&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;arguments&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;argument-name&quot;: &quot;value&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    }</span>\\\n<span style=\\\"font-size: 12px;\\\">}</span>\\\n<span style=\\\"font-size: 12px;\\\">收到执行结果后：</span>\\\n<span style=\\\"font-size: 12px;\\\"><b>(1) 将原始数据转换为自然的对话式响应</b></span>\\\n<span style=\\\"font-size: 12px;\\\">2.保持回答简洁但信息丰富</span>\\\n<span style=\\\"font-size: 12px;\\\">3.关注最相关的信息</span>\\\n<span style=\\\"font-size: 12px;\\\">4.使用用户问题中的适当上下文</span>\\\n<span style=\\\"font-size: 12px;\\\">5.避免简单地重复原始数据</span>\\\n<span style=\\\"font-size: 12px;\\\">你只能使用上面明确定义的工具。</span>\\\n</div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">看到这里，你是不是恍然大悟。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP，实际上就是把函数的介绍写在了系统提示词里。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">对于Function Calling来说，我需要把函数的参数填到请求参数tools里面，这些函数最终以什么样的方式输入到模型里，这个过程是不透明的，解析tools的工作是在云端进行的，返回的格式也是在云端定义的。我们只能通过官方文档来确定返回参数的格式。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">而MCP很巧妙的绕过了云端解析tools的过程。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP把函数的介绍、参数的返回格式都写在了系统提示里面，这样一来，只要LLM能够理解系统提示词，就能够按照提示词定义的格式输出。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这就实现了格式的统一。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">在理解了MCP的原理后，我们就能很清晰地解释MCP的服务端和 客户端 了：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">✅MCP服务端 ，  是执行函数工具的场所。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">✅MCP客户端，  是与LLM交互的场所，包括介绍函数和获取函数的参数</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP服务端中常用的函数工具、数据查询工具等已经由社区的开发者们开发好了，可以直接进行调用。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">对于大多数的开发者来说，需要开发的是MCP客户端。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">而在MCP客户端中，开发者根据业务流程，让LLM选择合适的函数工具进行调用，最终实现业务逻辑。</span></span></span></div><img src=\\\":/050f81e17a4448ebacf0d76224170964\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiMTZzRlI2X1Y5WGIifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">七、LLM大 模型是如何确定工具的选用的？</span></span></span></h2><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">在学习的过程中，我一直好奇一个问题：<b>Claude（模型）是在什么时候确定使用哪些工具的呢</b>？</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Anthropic 在官网为我们提供了一个 简单的解释 ：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">当用户提出一个问题时：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（1）客户端（Claude Desktop / Cursor）将你的问题发送给 Claude。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（2）Claude 分析可用的工具，并决定使用哪一个（或多个）。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（3）MCP  Client 客户端   通过 MCP Server 执行所选的工具。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（4）工具的执行结果被送回给 Claude。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（5）Claude 结合执行结果构造最终的 prompt 并生成自然语言的回应。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（6）回应最终展示给用户！</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP Server 是由 Claude 主动选择并调用的。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">有意思的是 Claude 具体是如何确定该使用哪些工具呢？以</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">及是否会使用一些不存在的工具呢（幻觉）？</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">为了探索这个问题让我们深入源码。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">显然这个调用过程可以分为两个步骤：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（1）由 LLM（Claude）确定使用哪些 MCP Server。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（2）执行对应的 MCP Server 并对执行结果进行重新处理。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">先给出一个简单可视化帮助理解：</span></span></span></div><img src=\\\":/d5235972f35244c5ab3c53ef22e99313\\\" type=\\\"image/png\\\" data-filename=\\\"640.png\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><h3 style=\\\"other-props:eyJibG9ja0lkIjoiRDNqYlRHZTA0dmEifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">第一步模型如何确定该使用哪些工具</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">先理解第一步模型如何确定该使用哪些工具？</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这里以 MCP 官方提供的  client  example[8] 为讲解示例，并简化了对应的代码（删除了一些不影响阅读逻辑的异常控制代码）。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">通过阅读代码，可以发现模型是通过 prompt 来确定当前有哪些工具。我们通过将工具的具体使用描述以文本的形式传递给模型，供模型了解有哪些工具以及结合实时情况进行选择。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">参考代码中的注释：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:uiYAR2v5hbk;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\">\\\n<span style=\\\"font-size: 12px;\\\">... // 省略了无关的代码</span>\\\n<span style=\\\"font-size: 12px;\\\"> async def start(self):</span>\\\n<span style=\\\"font-size: 12px;\\\">     // 初始化所有的 mcp server</span>\\\n<span style=\\\"font-size: 12px;\\\">     for server in self.servers:</span>\\\n<span style=\\\"font-size: 12px;\\\">         await server.initialize()</span>\\\n<span style=\\\"font-size: 12px;\\\">     // 获取所有的 tools 命名为 all_tools</span>\\\n<span style=\\\"font-size: 12px;\\\">     all_tools = []</span>\\\n<span style=\\\"font-size: 12px;\\\">     for server in self.servers:</span>\\\n<span style=\\\"font-size: 12px;\\\">         tools = await server.list_tools()</span>\\\n<span style=\\\"font-size: 12px;\\\">         all_tools.extend(tools)</span>\\\n<span style=\\\"font-size: 12px;\\\">     // 将所有的 tools 的功能描述格式化成字符串供 LLM 使用</span>\\\n<span style=\\\"font-size: 12px;\\\">     // tool.format_for_llm() 我放到了这段代码最后，方便阅读。</span>\\\n<span style=\\\"font-size: 12px;\\\">     tools_description = &quot;\\\\\n&quot;.join(</span>\\\n<span style=\\\"font-size: 12px;\\\">         [tool.format_for_llm() for tool in all_tools]</span>\\\n<span style=\\\"font-size: 12px;\\\">     )</span>\\\n<span style=\\\"font-size: 12px;\\\">     // 这里就不简化了，以供参考，实际上就是基于 prompt 和当前所有工具的信息</span>\\\n<span style=\\\"font-size: 12px;\\\">     // 询问 LLM（Claude） 应该使用哪些工具。</span>\\\n<span style=\\\"font-size: 12px;\\\">     system_message = (</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;You are a helpful assistant with access to these tools:\\\\\n\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         f&quot;{tools_description}\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;Choose the appropriate tool based on the user's question. &quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;If no tool is needed, reply directly.\\\\\n\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;IMPORTANT: When you need to use a tool, you must ONLY respond with &quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;the exact JSON object format below, nothing else:\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;{\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         '    &quot;tool&quot;: &quot;tool-name&quot;,\\\\\n'</span>\\\n<span style=\\\"font-size: 12px;\\\">         '    &quot;arguments&quot;: {\\\\\n'</span>\\\n<span style=\\\"font-size: 12px;\\\">         '        &quot;argument-name&quot;: &quot;value&quot;\\\\\n'</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;    }\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;}\\\\\n\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;After receiving a tool's response:\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;1. Transform the raw data into a natural, conversational response\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;2. Keep responses concise but informative\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;3. Focus on the most relevant information\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;4. Use appropriate context from the user's question\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;5. Avoid simply repeating the raw data\\\\\n\\\\\n&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;Please use only the tools that are explicitly defined above.&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">     )</span>\\\n<span style=\\\"font-size: 12px;\\\">     messages = [{&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: system_message}]</span>\\\n<span style=\\\"font-size: 12px;\\\">     while True:</span>\\\n<span style=\\\"font-size: 12px;\\\">         // Final... 假设这里已经处理了用户消息输入.</span>\\\n<span style=\\\"font-size: 12px;\\\">         messages.append({&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: user_input})</span>\\\n<span style=\\\"font-size: 12px;\\\">         // 将 system_message 和用户消息输入一起发送给 LLM</span>\\\n<span style=\\\"font-size: 12px;\\\">         llm_response = self.llm_client.get_response(messages)</span>\\\n<span style=\\\"font-size: 12px;\\\">     ... // 后面和确定使用哪些工具无关</span>\\\n\\\n<span style=\\\"font-size: 12px;\\\"> class Tool:</span>\\\n<span style=\\\"font-size: 12px;\\\">     &quot;&quot;&quot;Represents a tool with its properties and formatting.&quot;&quot;&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">     def <b>init</b>(</span>\\\n<span style=\\\"font-size: 12px;\\\">         self, name: str, description: str, input_schema: dict[str, Any]</span>\\\n<span style=\\\"font-size: 12px;\\\">     ) -&gt; None:</span>\\\n<span style=\\\"font-size: 12px;\\\">         self.name: str = name</span>\\\n<span style=\\\"font-size: 12px;\\\">         self.description: str = description</span>\\\n<span style=\\\"font-size: 12px;\\\">         self.input_schema: dict[str, Any] = input_schema</span>\\\n<span style=\\\"font-size: 12px;\\\">     // 把工具的名字 / 工具的用途（description）和工具所需要的参数（args_desc）转化为文本</span>\\\n<span style=\\\"font-size: 12px;\\\">     def format_for_llm(self) -&gt; str:</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;&quot;&quot;Format tool information for LLM.</span>\\\n<span style=\\\"font-size: 12px;\\\">         Returns:</span>\\\n<span style=\\\"font-size: 12px;\\\">             A formatted string describing the tool.</span>\\\n<span style=\\\"font-size: 12px;\\\">         &quot;&quot;&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">         args_desc = []</span>\\\n<span style=\\\"font-size: 12px;\\\">         if &quot;properties&quot; in self.input_schema:</span>\\\n<span style=\\\"font-size: 12px;\\\">             for param_name, param_info in self.input_schema[&quot;properties&quot;].items():</span>\\\n<span style=\\\"font-size: 12px;\\\">                 arg_desc = (</span>\\\n<span style=\\\"font-size: 12px;\\\">                     f&quot;- {param_name}: {param_info.get('description', 'No description')}&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">                 )</span>\\\n<span style=\\\"font-size: 12px;\\\">                 if param_name in self.input_schema.get(&quot;required&quot;, []):</span>\\\n<span style=\\\"font-size: 12px;\\\">                     arg_desc += &quot; (required)&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">                 args_desc.append(arg_desc)</span>\\\n<span style=\\\"font-size: 12px;\\\">         return f&quot;&quot;&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\"> Tool: {self.name}</span>\\\n<span style=\\\"font-size: 12px;\\\"> Description: {self.description}</span>\\\n<span style=\\\"font-size: 12px;\\\"> Arguments:</span>\\\n<span style=\\\"font-size: 12px;\\\"> {chr(10).join(args_desc)}</span>\\\n</div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">那 tool 的描述和代码中的 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">input_schema</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 是从哪里来的呢？</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">通过进一步分析 MCP 的 Python SDK 源代码可以发现：大部分情况下，当使用装饰器 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">@mcp.tool()</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 来装饰函数时，对应的 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">name</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 和 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">description</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 等其实直接源自用户定义函数的函数名以及函数的 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">docstring</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 等。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这里仅截取一小部分片段，想了解更多请参考原始代码 。</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:S9tYRa0Rl9t;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"font-size: 12px;\\\">@classmethod</span>\\\n<span style=\\\"font-size: 12px;\\\"> def from_function(</span>\\\n<span style=\\\"font-size: 12px;\\\">     cls,</span>\\\n<span style=\\\"font-size: 12px;\\\">     fn: Callable,</span>\\\n<span style=\\\"font-size: 12px;\\\">     name: str | None = None,</span>\\\n<span style=\\\"font-size: 12px;\\\">     description: str | None = None,</span>\\\n<span style=\\\"font-size: 12px;\\\">     context_kwarg: str | None = None,</span>\\\n<span style=\\\"font-size: 12px;\\\"> ) -&gt; &quot;Tool&quot;:</span>\\\n<span style=\\\"font-size: 12px;\\\">     &quot;&quot;&quot;Create a Tool from a function.&quot;&quot;&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">     func_name = name or fn.<b>name</b> # 获取函数名</span>\\\n\\\n<span style=\\\"font-size: 12px;\\\">     if func_name == &quot;&lt;lambda&gt;&quot;:</span>\\\n<span style=\\\"font-size: 12px;\\\">         raise ValueError(&quot;You must provide a name for lambda functions&quot;)</span>\\\n\\\n<span style=\\\"font-size: 12px;\\\">     func_doc = description or fn.<b>doc</b> or &quot;&quot; # 获取函数 docstring</span>\\\n<span style=\\\"font-size: 12px;\\\">     is_async = inspect.iscoroutinefunction(fn)</span>\\\n<span style=\\\"font-size: 12px;\\\">     ...   更多请参考原始代码...</span>\\\n</div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">总结：<b>模型是通过 prompt engineering，即提供所有工具的结构化描述和 few-shot 的 example 来确定该使用哪些工具</b>。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">另一方面，Anthropic 肯定对 Claude 做了专门的训练（毕竟是自家协议，Claude 更能理解工具的 prompt 以及输出结构化的 tool call json 代码）</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiSUtwUVN1UllSc0YifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">第二步:工具执行与结果反馈机制</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">其实工具的执行就比较简单和直接了。承接上一步，我们把 system prompt（指令与工具调用描述）和用户消息一起发送给模型，然后接收模型的回复。当模型分析用户请求后，它会决定是否需要调用工具：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>（1）无需工具时</b>：模型直接生成自然语言回复。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>（2）需要工具时</b>：模型输出结构化 JSON 格式的工具调用请求。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">如果回复中包含结构化 JSON 格式的工具调用请求，则客户端会根据这个 json 代码执行对应的工具。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">具体的实现逻辑都在 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">process_llm_response</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 中，[代码10]，逻辑非常简单。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">如果模型执行了 tool call，则工具执行的结果 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">result</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 会和 system prompt 和用户消息一起<b>重新发送</b>给模型，请求模型生成最终回复。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">如果 tool call 的 json 代码存在问题或者模型产生了幻觉怎么办呢？通过阅读[代码11] 发现，我们会 skip 掉无效的调用请求。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">执行相关的代码与注释如下：</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:QjXEQakH3nB;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"font-size: 12px;\\\"> ... // 省略无关的代码</span>\\\n<span style=\\\"font-size: 12px;\\\"> async def start(self):</span>\\\n<span style=\\\"font-size: 12px;\\\">     ... // 上面已经介绍过了，模型如何选择工具</span>\\\n\\\n<span style=\\\"font-size: 12px;\\\">     while True:</span>\\\n<span style=\\\"font-size: 12px;\\\">         // 假设这里已经处理了用户消息输入.</span>\\\n<span style=\\\"font-size: 12px;\\\">         messages.append({&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: user_input})</span>\\\n\\\n<span style=\\\"font-size: 12px;\\\">         // 获取 LLM 的输出</span>\\\n<span style=\\\"font-size: 12px;\\\">         llm_response = self.llm_client.get_response(messages)</span>\\\n\\\n<span style=\\\"font-size: 12px;\\\">         // 处理 LLM 的输出（如果有 tool call 则执行对应的工具）</span>\\\n<span style=\\\"font-size: 12px;\\\">         result = await self.process_llm_response(llm_response)</span>\\\n\\\n<span style=\\\"font-size: 12px;\\\">         // 如果 result 与 llm_response 不同，说明执行了 tool call （有额外信息了）</span>\\\n<span style=\\\"font-size: 12px;\\\">         // 则将 tool call 的结果重新发送给 LLM 进行处理。</span>\\\n<span style=\\\"font-size: 12px;\\\">         if result != llm_response:</span>\\\n<span style=\\\"font-size: 12px;\\\">             messages.append({&quot;role&quot;: &quot;assistant&quot;, &quot;content&quot;: llm_response})</span>\\\n<span style=\\\"font-size: 12px;\\\">             messages.append({&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: result})</span>\\\n\\\n<span style=\\\"font-size: 12px;\\\">             final_response = self.llm_client.get_response(messages)</span>\\\n<span style=\\\"font-size: 12px;\\\">             logging.info(&quot;\\\\\nFinal response: %s&quot;, final_response)</span>\\\n<span style=\\\"font-size: 12px;\\\">             messages.append(</span>\\\n<span style=\\\"font-size: 12px;\\\">                 {&quot;role&quot;: &quot;assistant&quot;, &quot;content&quot;: final_response}</span>\\\n<span style=\\\"font-size: 12px;\\\">             )</span>\\\n<span style=\\\"font-size: 12px;\\\">         // 否则代表没有执行 tool call，则直接将 LLM 的输出返回给用户。</span>\\\n<span style=\\\"font-size: 12px;\\\">         else:</span>\\\n<span style=\\\"font-size: 12px;\\\">             messages.append({&quot;role&quot;: &quot;assistant&quot;, &quot;content&quot;: llm_response})    </span>\\\n</div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">结合这部分原理分析：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（1）工具文档至关重要 - 模型通过工具描述文本来理解和选择工具，因此精心编写工具的名称、docstring 和参数说明至关重要。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">（2）由于 MCP 的选择是基于 prompt 的，所以任何模型其实都适配 MCP，只要你能提供对应的工具描述。但是当你使用非 Claude 模型时，MCP 使用的效果和体验难以保证（没有做专门的训练）。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiQy1UeFRXWDFkMjMifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">MCP (Model Context Protocol)  总结</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP (Model Context Protocol) 代表了 AI 与外部工具和数据交互的标准建立。通过本文，我们可以了解到：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>1 MCP 的本质</b>：它是一个统一的协议标准，使 AI 模型能够以一致的方式连接各种数据源和工具，类似于 AI 世界的&quot;USB-C&quot;接口。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>2 MCP 的价值</b>：它解决了传统 function call 的平台依赖问题，提供了更统一、开放、安全、灵活的工具调用机制，让用户和开发者都能从中受益。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>3 使用与开发</b>：对于普通用户，MCP 提供了丰富的现成工具，<b>用户可以在不了解任何技术细节的情况下使用</b>；对于开发者，MCP 提供了清晰的架构和 SDK，使工具开发变得相对简单。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP 还处于发展初期，但其潜力巨大。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">更重要的是生态吧，基于统一标准下构筑的生态也会正向的促进整个领域的发展。</span></span></span></div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiVm10RFJxNlVtbloifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">八、MCP (Model Context Protocol)  实战</span></span></span></h2><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">我们按照官方 github modelcontextprotocol/python-sdk 实际操作一下，这里我们仅开发 MCP Server， MCP Client 直接使用 Claude Desktop App.</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">我们会为 Claude Desktop App 增加个 tools: </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">calculate_bmi</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 和 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">fetch_weather</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">， 默认 Claude Desktop App 是不具备<b>计算 BMI</b> 和<b>查询天气</b>的功能。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiWndNcFFLR0x5dEsifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">实现 MCP Server （Python SDK）</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">代码实现</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:oJ3QTeZGVHW;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"font-size: 12px;\\\">// server.py</span>\\\n<span style=\\\"font-size: 12px;\\\">import httpx</span>\\\n<span style=\\\"font-size: 12px;\\\">from mcp.server.fastmcp import FastMCP</span>\\\n<span style=\\\"font-size: 12px;\\\">// Create an MCP server</span>\\\n<span style=\\\"font-size: 12px;\\\">mcp = FastMCP(&quot;Demo&quot;)</span>\\\n<span style=\\\"font-size: 12px;\\\">@mcp.tool()</span>\\\n<span style=\\\"font-size: 12px;\\\">def calculate_bmi(weight_kg: float, height_m: float) -&gt; float:</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;&quot;&quot;Calculate BMI given weight in kg and height in meters&quot;&quot;&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    return weight_kg / (height_m ** 2)</span>\\\n<span style=\\\"font-size: 12px;\\\">@mcp.tool()</span>\\\n<span style=\\\"font-size: 12px;\\\">async def fetch_weather(city: str) -&gt; str:</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;&quot;&quot;Fetch current weather for a city&quot;&quot;&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    async with httpx.AsyncClient() as client:</span>\\\n<span style=\\\"font-size: 12px;\\\">        response = await client.get(f&quot;https://api.weather.com/{city}&quot;)</span>\\\n<span style=\\\"font-size: 12px;\\\">        return response.text</span>\\\n<span style=\\\"font-size: 12px;\\\">if <b>name</b> == &quot;<b>main</b>&quot;:</span>\\\n<span style=\\\"font-size: 12px;\\\">    mcp.run()</span>\\\n</div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiWEZIVVRhdlpHb1gifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">实现 MCP Client</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP 客户端充当 LLM 和 MCP 服务器之间的桥梁，MCP 客户端的工作流程如下：</span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">MCP 客户端首先从 MCP 服务器获取可用的工具列表。</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\">将用户的查询连同工具描述通过 function calling 一起发送给 LLM。</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">LLM 决定是否需要使用工具以及使用哪些工具。</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">如果需要使用工具，MCP 客户端会通过 MCP 服务器执行相应的工具调用。</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">工具调用的结果会被发送回 LLM。</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">LLM 基于所有信息生成自然语言响应。</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">最后将响应展示给用户。</span></div></li></ul><h4 style=\\\"other-props:eyJibG9ja0lkIjoiY0RNclE2WVJDaWYifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">MCP  Client调用工具</span></span></h4><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">在 MCP 客户端中，我们使用了以下两个函数来与 MCP 服务器进行交互。</span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">list_tools()</span></span></code><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">：获取 MCP 服务器提供的所有可用工具。</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\"><code style=\\\"-en-code: true\\\">call_tool(name, args)</code>：调用指定的工具并获取结果，这里调用 <code style=\\\"-en-code: true\\\">list_indices</code> 来获取 Elasticsearch 集群中的索引信息。</span></div></li></ul><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:w6DnT-luPEg;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"font-size: 12px;\\\">from mcp import ClientSession, StdioServerParameters</span>\\\n<span style=\\\"font-size: 12px;\\\">from mcp.client.stdio import stdio_client</span>\\\n<span style=\\\"font-size: 12px;\\\">async def run():</span>\\\n<span style=\\\"font-size: 12px;\\\">    // 建立连接</span>\\\n<span style=\\\"font-size: 12px;\\\">    async with stdio_client(server_params) as (read, write):</span>\\\n<span style=\\\"font-size: 12px;\\\">        async with ClientSession(read, write) as session:</span>\\\n<span style=\\\"font-size: 12px;\\\">            // 初始化连接</span>\\\n<span style=\\\"font-size: 12px;\\\">            await session.initialize()</span>\\\n<span style=\\\"font-size: 12px;\\\">            // 列出可用工具</span>\\\n<span style=\\\"font-size: 12px;\\\">            tools = await session.list_tools()</span>\\\n<span style=\\\"font-size: 12px;\\\">            print(&quot;Tools:&quot;, tools)</span>\\\n<span style=\\\"font-size: 12px;\\\">            // 调用工具</span>\\\n<span style=\\\"font-size: 12px;\\\">            indices = await session.call_tool(&quot;list_indices&quot;)</span>\\\n<span style=\\\"font-size: 12px;\\\">            print(&quot;Indices:&quot;, indices)</span>\\\n<span style=\\\"font-size: 12px;\\\">if <b>name</b> == &quot;<b>main</b>&quot;:</span>\\\n<span style=\\\"font-size: 12px;\\\">    import asyncio</span>\\\n<span style=\\\"font-size: 12px;\\\">    asyncio.run(run())</span>\\\n</div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiNTgtMVJ1RU5yMUcifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">集成 LLM调用 MCP  Client</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">在实际应用中，我们通常希望让 LLM（如 OpenAI、Claude、 通义千问 等）自主决定调用哪些工具。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">下面的代码将以通义千问为示例进行演示，并使用 OpenAI SDK 与其交互。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">为了简化这一过程，我们将借助 OpenRouter （一个统一的 LLM 网关，它提供了 OpenAI 兼容的接口），使我们能够通过相同的 OpenAI API 访问包括通义千问在内的多种 LLM。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">OpenRouter 的使用方式非常简单。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">我们只需在创建 OpenAI 客户端时指定 OpenRouter 的 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">base_url</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 和 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">api_key</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">，并在调用模型时以 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">&lt;provider&gt;/&lt;model&gt;</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 的格式（例如 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">qwen/qwen-plus</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">）指定目标模型，OpenRouter 就会根据模型名称自动将请求路由到对应的 LLM 上。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">除此之外，其他代码与标准的 OpenAI SDK 保持一致。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">接下来介绍一下 MCP 客户端的主要代码。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiaHZWZVItZDllN2MifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">初始化 MCP  Client 客户端类</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCPClient</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 类的初始化包含以下 3 个组件：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">1 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">self.session</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">：用于存储与 MCP 服务器的会话对象，初始设为 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">None</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">，将在连接服务器时被赋值。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">2 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">self.exit_stack</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">：使用 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">AsyncExitStack</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 来管理异步资源，确保所有资源（如服务器连接、会话等）在程序结束时能够正确关闭。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">3 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">self.client</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">：创建 OpenAI 异步客户端，通过 OpenRouter 来访问 LLM。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这里我们：</span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">设置 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">base_url</span></span></code><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\"> 为 OpenRouter 的 API 端点。</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\">从环境变量获取 API Key（请确保设置了 <code style=\\\"-en-code: true\\\">OPENROUTER_API_KEY</code> 环境变量）。</span></div></li></ul><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:_4kqTG1t-f-;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"font-size: 12px;\\\">class MCPClient:</span>\\\n<span style=\\\"font-size: 12px;\\\">    def <b>init</b>(self):</span>\\\n<span style=\\\"font-size: 12px;\\\">        self.session: Optional[ClientSession] = None</span>\\\n<span style=\\\"font-size: 12px;\\\">        self.exit_stack = AsyncExitStack()</span>\\\n<span style=\\\"font-size: 12px;\\\">        self.client = AsyncOpenAI(</span>\\\n<span style=\\\"font-size: 12px;\\\">            base_url=&quot;https://openrouter.ai/api/v1&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">            api_key=os.getenv(&quot;OPENROUTER_API_KEY&quot;),</span>\\\n<span style=\\\"font-size: 12px;\\\">        )</span>\\\n</div><h3 style=\\\"other-props:eyJibG9ja0lkIjoidUFNMFRpZmdMT2cifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">MCP  Client 和 MCP  服务器连接</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">connect_to_server</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 方法负责建立与 MCP 服务器的连接。它首先配置服务器进程的启动参数，然后通过 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">stdio_client</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 建立双向通信通道，最后创建并初始化会话。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">所有的资源管理都通过 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">AsyncExitStack</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 来处理，确保资源能够正确释放。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">连接成功后，它会打印出 MCP 服务器提供的所有可用工具。</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:237qQm9OGVf;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"font-size: 12px;\\\">async def connect_to_server(self, server_script_path: str):</span>\\\n<span style=\\\"font-size: 12px;\\\">    server_params = StdioServerParameters(</span>\\\n<span style=\\\"font-size: 12px;\\\">        command=&quot;python&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">        args=[server_script_path],</span>\\\n<span style=\\\"font-size: 12px;\\\">        env=None</span>\\\n<span style=\\\"font-size: 12px;\\\">    )</span>\\\n<span style=\\\"font-size: 12px;\\\">    stdio_transport = await self.exit_stack.enter_async_context(stdio_client(server_params))</span>\\\n<span style=\\\"font-size: 12px;\\\">    self.stdio, self.write = stdio_transport</span>\\\n<span style=\\\"font-size: 12px;\\\">    self.session = await self.exit_stack.enter_async_context(ClientSession(self.stdio, self.write))</span>\\\n<span style=\\\"font-size: 12px;\\\">    await self.session.initialize()</span>\\\n<span style=\\\"font-size: 12px;\\\">    # 列出可用工具</span>\\\n<span style=\\\"font-size: 12px;\\\">    response = await self.session.list_tools()</span>\\\n<span style=\\\"font-size: 12px;\\\">    tools = response.tools</span>\\\n<span style=\\\"font-size: 12px;\\\">    print(&quot;\\\\\nConnected to server with tools:&quot;, [tool.name for tool in tools])</span>\\\n</div><h3 style=\\\"other-props:eyJibG9ja0lkIjoibWxGSFJ1bGVwb2EifQ==;\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-weight: bold;\\\">处理请求</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">定义一个 </span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">process_query</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 方法，完成 处理请求的流程：</span></span></span></div><ul><li><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">首先，将用户的查询作为初始消息发送给 LLM，同时提供 MCP 服务器上所有可用工具的描述信息。</span></span></span></div></li><li><div><span style=\\\"font-size: 12px;\\\">LLM 分析用户查询，决定是直接回答还是需要调用工具。如果需要工具，它会指定要调用的工具名称和参数。</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">对于每个工具调用，MCP 客户端执行调用并收集结果。</span></div></li><li><div><span style=\\\"font-size: 12px;\\\">将工具调用的结果返回给 LLM，让它基于这些新信息生成或更新回答。</span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">如果 LLM 认为还需要更多信息，它会继续请求调用其他工具。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">这个过程会一直重复，直到 LLM 收集了足够的信息来完整回答用户的查询。</span></span></span></div><div style=\\\"background-color:initial;\\\"><br/></div><div style=\\\"--en-codeblock:true;--en-blockId:cikcTSPZppR;--en-meta:{&quot;title&quot;:&quot;&quot;,&quot;lang&quot;:&quot;Plain Text&quot;,&quot;theme&quot;:&quot;default&quot;,&quot;showLine&quot;:true,&quot;lineWrap&quot;:true};box-sizing: border-box; padding: 8px; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 12px; color: rgb(51, 51, 51); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; background-color: rgb(251, 250, 248); border: 1px solid rgba(0, 0, 0, 0.14902); background-position: initial initial; background-repeat: initial initial; margin-top: 6px;\\\"><span style=\\\"font-size: 12px;\\\">async def process_query(self, query: str) -&gt; str:</span>\\\n<span style=\\\"font-size: 12px;\\\">    &quot;&quot;&quot;使用 LLM 和 MCP 服务器提供的工具处理查询&quot;&quot;&quot;</span>\\\n<span style=\\\"font-size: 12px;\\\">    messages = [</span>\\\n<span style=\\\"font-size: 12px;\\\">        {</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;role&quot;: &quot;user&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;content&quot;: query</span>\\\n<span style=\\\"font-size: 12px;\\\">        }</span>\\\n<span style=\\\"font-size: 12px;\\\">    ]</span>\\\n<span style=\\\"font-size: 12px;\\\">    response = await self.session.list_tools()</span>\\\n<span style=\\\"font-size: 12px;\\\">    available_tools = [{</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;type&quot;: &quot;function&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">        &quot;function&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;name&quot;: tool.name,</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;description&quot;: tool.description,</span>\\\n<span style=\\\"font-size: 12px;\\\">            &quot;parameters&quot;: tool.inputSchema</span>\\\n<span style=\\\"font-size: 12px;\\\">        }</span>\\\n<span style=\\\"font-size: 12px;\\\">    } for tool in response.tools]</span>\\\n<span style=\\\"font-size: 12px;\\\">    // 初始化 LLM API 调用</span>\\\n<span style=\\\"font-size: 12px;\\\">    response = await self.client.chat.completions.create(</span>\\\n<span style=\\\"font-size: 12px;\\\">        model=&quot;qwen/qwen-plus&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">        messages=messages,</span>\\\n<span style=\\\"font-size: 12px;\\\">        tools=available_tools</span>\\\n<span style=\\\"font-size: 12px;\\\">    )</span>\\\n\\\n<span style=\\\"font-size: 12px;\\\">    final_text = []</span>\\\n<span style=\\\"font-size: 12px;\\\">    message = response.choices[0].message</span>\\\n<span style=\\\"font-size: 12px;\\\">    final_text.append(message.content or &quot;&quot;)</span>\\\n<span style=\\\"font-size: 12px;\\\">    // 处理响应并处理工具调用</span>\\\n<span style=\\\"font-size: 12px;\\\">    while message.tool_calls:</span>\\\n<span style=\\\"font-size: 12px;\\\">        // 处理每个工具调用</span>\\\n<span style=\\\"font-size: 12px;\\\">        for tool_call in message.tool_calls:</span>\\\n<span style=\\\"font-size: 12px;\\\">            tool_name = tool_call.function.name</span>\\\n<span style=\\\"font-size: 12px;\\\">            tool_args = json.loads(tool_call.function.arguments)</span>\\\n<span style=\\\"font-size: 12px;\\\">            // 执行工具调用</span>\\\n<span style=\\\"font-size: 12px;\\\">            result = await self.session.call_tool(tool_name, tool_args)</span>\\\n<span style=\\\"font-size: 12px;\\\">            final_text.append(f&quot;[Calling tool {tool_name} with args {tool_args}]&quot;)</span>\\\n<span style=\\\"font-size: 12px;\\\">            // 将工具调用和结果添加到消息历史</span>\\\n<span style=\\\"font-size: 12px;\\\">            messages.append({</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;role&quot;: &quot;assistant&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;tool_calls&quot;: [</span>\\\n<span style=\\\"font-size: 12px;\\\">                    {</span>\\\n<span style=\\\"font-size: 12px;\\\">                        &quot;id&quot;: tool_call.id,</span>\\\n<span style=\\\"font-size: 12px;\\\">                        &quot;type&quot;: &quot;function&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">                        &quot;function&quot;: {</span>\\\n<span style=\\\"font-size: 12px;\\\">                            &quot;name&quot;: tool_name,</span>\\\n<span style=\\\"font-size: 12px;\\\">                            &quot;arguments&quot;: json.dumps(tool_args)</span>\\\n<span style=\\\"font-size: 12px;\\\">                        }</span>\\\n<span style=\\\"font-size: 12px;\\\">                    }</span>\\\n<span style=\\\"font-size: 12px;\\\">                ]</span>\\\n<span style=\\\"font-size: 12px;\\\">            })</span>\\\n<span style=\\\"font-size: 12px;\\\">            messages.append({</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;role&quot;: &quot;tool&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;tool_call_id&quot;: tool_call.id,</span>\\\n<span style=\\\"font-size: 12px;\\\">                &quot;content&quot;: str(result.content)</span>\\\n<span style=\\\"font-size: 12px;\\\">            })</span>\\\n<span style=\\\"font-size: 12px;\\\">        // 将工具调用的结果交给 LLM</span>\\\n<span style=\\\"font-size: 12px;\\\">        response = await self.client.chat.completions.create(</span>\\\n<span style=\\\"font-size: 12px;\\\">            model=&quot;qwen/qwen-plus&quot;,</span>\\\n<span style=\\\"font-size: 12px;\\\">            messages=messages,</span>\\\n<span style=\\\"font-size: 12px;\\\">            tools=available_tools</span>\\\n<span style=\\\"font-size: 12px;\\\">        )</span>\\\n<span style=\\\"font-size: 12px;\\\">        message = response.choices[0].message</span>\\\n<span style=\\\"font-size: 12px;\\\">        if message.content:</span>\\\n<span style=\\\"font-size: 12px;\\\">            final_text.append(message.content)</span>\\\n<span style=\\\"font-size: 12px;\\\">    return &quot;\\\\\n&quot;.join(final_text)</span>\\\n</div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiZmJaRVN5T1FVd1MifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">九、MCP (Model Context Protocol) 生态</span></span></span></h2><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP 生态不断发展壮大，越来越多的应用支持 MCP，同时开放平台也提供 MCP Server。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">同时也有像  Cloudflare 、 Composio 、 Zapier 使用 SSE 方式将 MCP 进行托管（即接入一个 MCP Endpoint 即接入一批 MCP Servers），通过 Stdio 方式最理想场景是 MCP Servers 和 Agent 系统跑在同一 Docker 容器中（类似 Sidecar 模式）。</span></span></span></div><img src=\\\":/abfaa2c8ed6047ceb3cbb70e36ecce8e\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\"/><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">举个例子：接入地图厂商的 MCP Server 后，Agent 具备生活服务工具能力，远远优于单纯依赖搜索的方式。</span></span></span></div><h3 style=\\\"other-props:eyJibG9ja0lkIjoiMlpocVJ1bk1WcksifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-weight: bold;\\\">MCP (Model Context Protocol)  未来</span></span></h3><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">目前的 MCP 开发非常初级，在工程化上缺少一套完善的框架来约束和规范。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">根据 MCP Roadmap ，未来主要三件事：</span></span></span></div><ul><li><div><span style=\\\"font-size: 15px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">Remote MCP Support：鉴权、服务发现、无状态服务，很明显奔着K8S架构去的，这样才能构建一个生产级、可扩展的 MCP 服务。根据最近的 RFC Replace HTTP+SSE with new &quot;Streamable HTTP&quot; transport，支持 Streamable HTTP，可以低延迟、双向传输。</span></span></span></div></li><li><div><span style=\\\"font-size: 15px;\\\">Agent Support：提升不同领域复杂的 Agent 工作流，并可以处理更好的人机交互。</span></div></li><li><div><span style=\\\"font-size: 15px;\\\">Developer Ecosystem：更多的开发者和大厂商参与进来，才能扩展 AI Agent 的能力边界。</span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">实践下来，MCP Server SSE 并不是理想的方案，因为需要保持连接和 session 状态，而云服务（如 FaaS）更倾向于无状态架构 ，所以最近提出了更适配云场景的 Streamable HTTP Transport。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>MCP 模型调用与 RL 强化学习</b>：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">如果 MCP 成为未来的规范，那么 Agent 应用能否准确调用各个 MCP，将成为模型 RL 未来需要支持的关键功能。与 Function Call 模型不同，MCP 是一个动态的工具库，模型需要具备对新增 MCP 的泛化理解能力。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>Agent K8S</b>：</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">虽然目前 LLM 和上下文之间建立了标准化的通信协议，但 Agent 之间的交互协议尚未形成统一标准，Agent 服务发现、恢复、监控等一系列生产级问题等解决。目前  ANP  （Agent Network Protocol）在做这方面的探索与尝试。</span></span></span></div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiYWNPRlF5UFlkQlcifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">MCP  的应用场景分析</span></span></span></h2><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>1  相对于开发者目前本身就在用 MCP 支持的 Client ( Claude Desktop App, Zed, Cline 等)</b></span></span></span></div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiYWFseFEtS3ZtejcifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">-  提供了巨大的便利, 可以很低成本用 MCP 扩展 LLM 的本身的能力，构建一个复杂 agent, 比如 Claude Desktop App 本身不具备任何扩展能力</span></span></span></h2><ul><li><div><span style=\\\"font-size: 15px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">目前官方支持的 Client 都是一些 toC 的应用，比如 Claude Desktop App、 Zed(IDE 编辑器) 等，适合个人开发；</span></span></span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>2  相对于开发者调用 LLM API ，自己从零开始写代码构建 agent</b></span></span></span></div><ul><li><div><span style=\\\"font-size: 15px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">便于快速构建比较复杂的 agent；</span></span></span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>3  相对于开发者调用 LLM API 并使用开源的 Agent 构建项目，如：modelscope-agent, FastGPT, dify</b></span></span></span></div><ul><li><div><span style=\\\"font-size: 15px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">MCP 相较于这些项目，更轻量。MCP 仅仅负责连接作用；</span></span></span></div></li><li><div><span style=\\\"font-size: 15px;\\\">这类开源项目相对较重，类似全托管的方式，但是功能较为丰富，上手简单，比如提供知识库，以及 web 管理页面等等；</span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>4  相对于商业的 Agent 平台，比如： 字节 coze，清华 chatglm，百度 AppBuilder 等，</b></span></span></span></div><ul><li><div><span style=\\\"font-size: 15px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36,41,46);\\\">云厂商 agent 平台更成熟，构建 AI Agnet 或者 AI App 更方便，提供一站式托管，可视化的管理台，拖拽构建工作流，配置知识库等低代码操作；</span></span></span></div></li><li><div><span style=\\\"font-size: 15px;\\\">MCP 实现更为复杂，且可用的 MCP Client 有限， 同时需要实现 MPC Server 代码， 并且 MCP 目前支持的 sdk 有限；</span></div></li><li><div><span style=\\\"font-size: 15px;\\\">云厂商 agent 平台的 LLM 提供相对闭塞，只能使用云厂商提供的模型列表，mcp 相对自由；</span></div></li><li><div><span style=\\\"font-size: 15px;\\\">数据安全来说， mcp 这种支持全部本地部署，会更高一点，云厂商的 agent 平台需要访问自己的数据，目前除了内部集成的知识库，其他数据源访问的方式，只能通过调用 tools 插件，走 API 的方式访问；</span></div></li></ul><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>5  在企业应用场景，目前使用场景有限。</b></span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">企业应用 自己提供接口，自己调用。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">自己 弄个api， 通过Langchain 写个 LLM 实现 Tool调用的智能体，直接调用就OK了， 省掉了 额外还要写个 MCP 服务，隔靴搔痒，非常麻烦。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"><b>6 在 个人应用场景， 使用场景将会 越来越广阔。</b></span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">可以 通过 LLM+  MCP  调用 大量的互联网  MCP  应用， 使用场景将会 越来越广阔。</span></span></span></div><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">总体来说， MCP 这套方案或者架构建的 Agent 或者工作流，在 互联网个人应用场景，将会 越来越广阔。</span></span></span></div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiREVqMlF1QVp3dkgifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">文中所有引用链接</span></span></span></h2><div style=\\\"text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[1]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> Introducing the Model Context Protocol:<i>https://www.anthropic.com/news/model-context-protocol</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[2]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">For Claude Desktop Users:<i>https://modelcontextprotocol.io/quickstart/user</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[3]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Awesome MCP Servers:<i>https://github.com/punkpeye/awesome-mcp-servers</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[4]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP Servers Website:<i>https://mcpservers.org/</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[5]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Official MCP Servers:<i>https://github.com/modelcontextprotocol/servers</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[6]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\"> 解释:<i>https://modelcontextprotocol.io/quickstart/server#what%E2%80%99s-happening-under-the-hood</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[7]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">源码:<i>https://github.com/modelcontextprotocol/python-sdk/tree/main/examples/clients/simple-chatbot/mcp_simple_chatbot</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[8]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">client example:<i>https://github.com/modelcontextprotocol/python-sdk/tree/main/examples/clients/simple-chatbot/mcp_simple_chatbot</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[9]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">原始代码:<i>https://github.com/modelcontextprotocol/python-sdk/blob/main/src/mcp/server/fastmcp/tools/base.py#L34-L73</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[10]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">代码:<i>https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/clients/simple-chatbot/mcp_simple_chatbot/main.py#L295-L338</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[11]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">代码:<i>https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/clients/simple-chatbot/mcp_simple_chatbot/main.py#L295-L338</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[12]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">最佳开发实践:<i>https://modelcontextprotocol.io/tutorials/building-mcp-with-llms</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[13]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">TypeScript SDK:<i>https://github.com/modelcontextprotocol/typescript-sdk</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[14]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Python SDK:<i>https://github.com/modelcontextprotocol/python-sdk</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[15]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">官方文档:<i>https://modelcontextprotocol.io/tutorials/building-mcp-with-llms</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[16]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Quick Start: For Server Developers:<i>https://modelcontextprotocol.io/quickstart/server</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[17]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">README 文件:<i>https://raw.githubusercontent.com/modelcontextprotocol/python-sdk/refs/heads/main/README.md</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[18]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Official Tutorial: Debugging:<i>https://modelcontextprotocol.io/docs/tools/debugging</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[19]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Official Tutorial: Inspector:<i>https://modelcontextprotocol.io/docs/tools/inspector</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[20]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP Official Docs:<i>https://modelcontextprotocol.io/</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[21]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP Python SDK:<i>https://github.com/modelcontextprotocol/python-sdk</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[22]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">MCP Available Server:<i>https://github.com/modelcontextprotocol/servers</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[23]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Blog: 🔗What is Model Context Protocol? (MCP) Architecture Overview:<i>https://medium.com/@tahirbalarabe2/what-is-model-context-protocol-mcp-architecture-overview-c75f20ba4498</i></span></span><code style=\\\"-en-code: true\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">[24]</span></span></code><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">Blog: LLM Function-Calling vs. Model Context Protocol (MCP):<i>https://www.gentoro.com/blog/function-calling-vs-model-context-protocol-mcp</i></span></span></span></div><div>    </div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiQjZqZVR5YnV0MDgifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">遇到问题，找老架构师取经</span></span></span></h2><div style=\\\"padding-left:40px;text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">借助此文，尼恩给解密了一个高薪的 秘诀，大家可以 放手一试。<b>保证  屡试不爽，涨薪  100%-200%。</b></span></span></span></div><div style=\\\"padding-left:40px;text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">后面，尼恩java面试宝典回录成视频， 给大家打造一套进大厂的塔尖视频。</span></span></span></div><div style=\\\"padding-left:40px;text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">通过这个问题的深度回答，可以充分展示一下大家雄厚的 “技术肌肉”，<b>让面试官爱到 “不能自已、口水直流”</b>，然后实现”offer直提”。</span></span></span></div><div style=\\\"padding-left:40px;text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">在面试之前，建议大家系统化的刷一波 5000页《</span></span></span><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzkxNzIyMTM1NQ==&amp;mid=2247497474&amp;idx=1&amp;sn=54a7b194a72162e9f13695443eabe186&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(87, 107, 149);\\\">尼恩Java面试宝典PDF</span></span></span></a><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\">》，里边有大量的大厂真题、面试难题、架构难题。</span></span></div><div style=\\\"padding-left:40px;text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">很多小伙伴刷完后， 吊打面试官， 大厂横着走。</span></span></span></div><div style=\\\"padding-left:40px;text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">在刷题过程中，如果有啥问题，大家可以来 找 40岁老架构师尼恩交流。</span></span></span></div><div style=\\\"padding-left:40px;text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">另外，如果没有面试机会，<b>可以找尼恩来改简历、做帮扶。</b></span></span></span></div><div style=\\\"padding-left:40px;text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">遇到职业难题，找老架构取经， 可以省去太多的折腾，省去太多的弯路。</span></span></span></div><div style=\\\"padding-left:40px;text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">尼恩指导了大量的小伙伴上岸，前段时间，</span></span></span><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247486587&amp;idx=2&amp;sn=da85d7cacbdbc57403a9b901663df178&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(87, 107, 149);\\\"><b>刚指导一个40岁+被裁小伙伴，拿到了一个年薪100W的offer。</b></span></span></span></a></div><div style=\\\"padding-left:40px;text-align:start;color:rgb(36, 41, 46);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\\\"><span style=\\\"color: rgb(36, 41, 46);\\\">狠狠卷，实现 “offer自由” 很容易的， 前段时间一个武汉的跟着尼恩卷了2年的小伙伴， 在极度严寒/痛苦被裁的环境下， offer拿到手软， 实现真正的 “offer自由” 。</span></span></span></div><div><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: PingFang SC, system-ui, -apple-system, BlinkMacSystemFont, Helvetica Neue, Hiragino Sans GB, Microsoft YaHei UI, Microsoft YaHei, Arial, sans-serif;\\\"><span style=\\\"color: rgba(0, 0, 0, 0.9);\\\"><span style=\\\"background-color: #ffffff;\\\"><span style=\\\"font-weight: 400;\\\">    </span></span></span></span></span></div><div style=\\\"text-align:start;background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Hiragino Sans GB, Microsoft YaHei UI, Microsoft YaHei, Arial, sans-serif;\\\"><span style=\\\"color: rgb(0, 0, 0);\\\"><span style=\\\"font-weight: 400;\\\">  </span></span></span></span></div><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiNDR6NVNTUjRXZWIifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Hiragino Sans GB, Microsoft YaHei UI, Microsoft YaHei, Arial, sans-serif;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\">空窗1年-空窗2年，彻底绝望投递，走投无路，如何  起死回生  ？</span></span></span></span><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Hiragino Sans GB, Microsoft YaHei UI, Microsoft YaHei, Arial, sans-serif;\\\"><span style=\\\"font-weight: bold;\\\"> </span></span></h2><p style=\\\"background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><br/></p><p style=\\\"background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247486733&amp;idx=1&amp;sn=866c605c5f32715cb2c7c84c52cb6611&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif;\\\"><span style=\\\"color: rgb(217, 33, 66);\\\"><b><span style=\\\"font-weight: 400;\\\">失业1年多，负债20W多万，</span><span style=\\\"font-weight: bold;\\\">彻底绝望，抑郁了</span>。7年经验小伙，找尼恩帮助后，跳槽3次  入国企</b></span></span></span></a><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif;\\\"><span style=\\\"color: rgb(217, 33, 66);\\\"><b> 年薪</b></span></span></span><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247486733&amp;idx=1&amp;sn=866c605c5f32715cb2c7c84c52cb6611&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif;\\\"><span style=\\\"color: rgb(217, 33, 66);\\\"><b>40W offer ，逆天改命了</b></span></span></span></a></p><p style=\\\"background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><br/></p><p style=\\\"background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><a href=\\\"https://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247486028&amp;idx=1&amp;sn=cf10ecda7a986b26e0359eba7a9cfeff&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif;\\\"><span style=\\\"color: rgb(217, 33, 66);\\\"><b><span style=\\\"font-weight: 400;\\\">被裁2年，</span><span style=\\\"font-weight: bold;\\\">天快塌了，家都要散了</span>，42岁急救1个月上岸，成开发经理offer，起死回生</b></span></span></span></a></p><p style=\\\"background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><br/></p><p style=\\\"background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><a href=\\\"http://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247486405&amp;idx=1&amp;sn=02336456cf4a09268c142c0b13327682&amp;chksm=97b57a4da0c2f35be50007aee12b8f9e9aa7a74864f720846ae6dc58a5fa4b092e22d1805e1e&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><b><span style=\\\"font-weight: 400;\\\">空窗8月：中厂大龄34岁，被裁8月收一大厂offer， 年薪65W，转架构后逆天改命!</span></b></span></span></span></a></p><p style=\\\"background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><br/></p><p style=\\\"background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><a href=\\\"http://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247486028&amp;idx=1&amp;sn=cf10ecda7a986b26e0359eba7a9cfeff&amp;chksm=97b57bc4a0c2f2d2be01f2656ac65e9bd8854b91c64b01eb55f56e645f3c733525418808b06c&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"font-size: 16px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><b><span style=\\\"font-weight: 400;\\\">空窗2年：42岁被裁2年，天快塌了，急救1个月，拿到开发经理offer，起死回生</span></b></span></span></span></a></p><p style=\\\"text-align:start;background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><br/></p><p style=\\\"padding-left:40px;text-align:start;background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><a href=\\\"http://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247486098&amp;idx=1&amp;sn=bbc5732b071477573bfab8a259d208d3&amp;chksm=97b57b1aa0c2f20c27dd74b490b6062c9eec262a3ac25548534ff70290b172dcc51c6eafe532&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"font-size: 16px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><b><span style=\\\"font-weight: 400;\\\">空窗半年：35岁被裁6个月， 职业绝望，转架构急救上岸，DDD和3高项目太重要了</span></b></span></span></span></a></p><p style=\\\"text-align:start;background-color:rgb(255, 255, 255);color:rgb(0, 0, 0);\\\"><a href=\\\"http://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247486345&amp;idx=1&amp;sn=8978c2c98378e85efe9a089fa08fc9e8&amp;chksm=97b57a01a0c2f317c29c7bedab1fa8a9f6101ab35cf005df447d662daa9c17d56f4e4c3a354a&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: system-ui,-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Arial,sans-serif;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><b><span style=\\\"font-weight: 400;\\\">空窗1.5年：失业15个月，学习40天拿offer， 绝境翻盘，如何实现？</span></b></span></span></span></a></p><p style=\\\"text-align:center;\\\"><br/></p><h2 style=\\\"background-color:rgb(242, 242, 242);other-props:eyJibG9ja0lkIjoiV3M3TFRteGJGQTUifQ==;\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Hiragino Sans GB, Microsoft YaHei UI, Microsoft YaHei, Arial, sans-serif;\\\"><span style=\\\"color: rgb(255, 255, 255);\\\"><span style=\\\"font-weight: bold;\\\"> 100W-200W  P8级 的天价年薪  大逆袭,  如何实现  ？ </span></span></span></span></h2><p style=\\\"text-align:center;\\\"><br/></p><h1 style=\\\"other-props:eyJibG9ja0lkIjoiczROclNxNjBYN3UifQ==;\\\"><a href=\\\"http://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247486315&amp;idx=1&amp;sn=52cc0a640c1499115f5a45b82097d857&amp;chksm=97b57ae3a0c2f3f502293e84cde4bc892c45d06dee3579471a522ab497fb53e32640fb00c339&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><b><span style=\\\"font-weight: 400;\\\">100W案例，100W年薪的底层逻辑是什么？</span></b></span></span></a><a href=\\\"http://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247486315&amp;idx=1&amp;sn=52cc0a640c1499115f5a45b82097d857&amp;chksm=97b57ae3a0c2f3f502293e84cde4bc892c45d06dee3579471a522ab497fb53e32640fb00c339&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"font-size: 17px;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><span style=\\\"font-weight: 400;\\\"> 如何实现年薪百万？ 如何远离  中年危机？</span></span></span></a></h1><p style=\\\"padding-left:40px;\\\"><a href=\\\"http://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247485942&amp;idx=1&amp;sn=faa999fc9508435db7a88af2716492d9&amp;chksm=97b5787ea0c2f168ac80d344670df16be12614d37161a893ebed88d4c915384fcbc024996403&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><b>100W案例2</b></span></a><a href=\\\"http://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247485942&amp;idx=1&amp;sn=faa999fc9508435db7a88af2716492d9&amp;chksm=97b5787ea0c2f168ac80d344670df16be12614d37161a893ebed88d4c915384fcbc024996403&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><b>：</b></span></a><a href=\\\"http://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247485942&amp;idx=1&amp;sn=faa999fc9508435db7a88af2716492d9&amp;chksm=97b5787ea0c2f168ac80d344670df16be12614d37161a893ebed88d4c915384fcbc024996403&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"color: rgb(255, 0, 0);\\\">40</span></a><a href=\\\"http://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247485942&amp;idx=1&amp;sn=faa999fc9508435db7a88af2716492d9&amp;chksm=97b5787ea0c2f168ac80d344670df16be12614d37161a893ebed88d4c915384fcbc024996403&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"color: rgb(255, 0, 0);\\\">岁小伙被裁6个月，猛卷3月拿100W年薪 ，秘诀：首席架构/总架构</span></a></p><p style=\\\"padding-left:40px;\\\"><a href=\\\"http://mp.weixin.qq.com/s?__biz=MzIxMzYwODY3OQ==&amp;mid=2247486369&amp;idx=1&amp;sn=0b32e8907dbcf26eaf33ea3f37ddd099&amp;chksm=97b57a29a0c2f33f468d29dafe739204543873efb459f324871c3c68a3ecc178b1a9ab08a2fa&amp;scene=21#wechat_redirect\\\" rev=\\\"en_rl_none\\\" target=\\\"_blank\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><b>环境太糟，如何升 P8级，年入100W？</b></span></a></p><div><br/></div><p style=\\\"color:black;\\\"><br/></p><div style=\\\"color:rgb(255, 108, 0);\\\"><span style=\\\"font-size: 20px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Hiragino Sans GB, Microsoft YaHei UI, Microsoft YaHei, Arial, sans-serif;\\\"><span style=\\\"color: rgb(255, 108, 0);\\\"><b>职业救助站</b></span></span></span></div><p><span style=\\\"font-size: 1em;\\\"><span style=\\\"color: rgb(120, 124, 129);\\\">实现职业转型，极速上岸</span></span></p><p><br/></p><img src=\\\":/7dc46d27d83b4285aa8936aebb0e9181\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" height=\\\"190px\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\" width=\\\"190px\\\"/><div><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: 微软雅黑;\\\"><span style=\\\"color: rgb(62,62,62);\\\">关注<b>职业救助站</b>公众号，获取每天职业干货</span></span></span></div><div><span style=\\\"font-size: 14px;\\\">助您实现<b>职业转型、职业升级、极速上岸</b></span></div><div><span style=\\\"font-size: 14px;\\\">---------------------------------</span></div><div style=\\\"color:rgb(255, 108, 0);\\\"><span style=\\\"font-size: 20px;\\\"><span style=\\\"font-family: system-ui, -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Hiragino Sans GB, Microsoft YaHei UI, Microsoft YaHei, Arial, sans-serif;\\\"><span style=\\\"color: rgb(255, 108, 0);\\\"><b>技术自由圈</b></span></span></span></div><p><span style=\\\"font-size: 1em;\\\"><span style=\\\"color: rgb(120, 124, 129);\\\">实现架构转型，再无中年危机</span></span></p><p><br/></p><img src=\\\":/a0000d6f7fc74b138fb86267a95c0779\\\" type=\\\"image/jpeg\\\" data-filename=\\\"640.jpg\\\" height=\\\"200px\\\" style=\\\"--en-marks:%7B%22align%22%3A%22center%22%7D;--en-uploadstate:uploaded;\\\" width=\\\"200px\\\"/><p><br/></p><div><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: 微软雅黑;\\\"><span style=\\\"color: rgb(62,62,62);\\\">关注<b>技术自由圈</b>公众号，获取每天技术千货</span></span></span></div><div><span style=\\\"font-size: 14px;\\\">一起成为牛逼的<b>未来超级架构师</b></span></div><div><span style=\\\"font-size: 12px;\\\"><span style=\\\"font-family: 微软雅黑;\\\"><span style=\\\"color: rgb(62,62,62);\\\"><b>几十篇架构笔记、5000页面试宝典、20个技术圣经</b></span></span></span></div><div><span style=\\\"font-size: 18px;\\\"><span style=\\\"color: rgb(255, 108, 0);\\\"><b>请加尼恩个人微信</b></span></span><b> </b><span style=\\\"font-size: 18px;\\\"><span style=\\\"color: rgb(61, 167, 66);\\\"><b>免费拿走</b></span></span></div><p style=\\\"text-align:center;background-color:rgb(255, 255, 255);color:rgb(62, 62, 62);\\\"><span style=\\\"font-size: 16px;\\\"><span style=\\\"font-family: 微软雅黑;\\\"><span style=\\\"color: rgb(255, 108, 0);\\\"><b>暗号</b></span></span></span><span style=\\\"font-family: 微软雅黑;\\\"><b>，请在 公众号后台 发送消息：</b></span><span style=\\\"font-size: 16px;\\\"><span style=\\\"font-family: 微软雅黑;\\\"><span style=\\\"color: rgb(255, 108, 0);\\\"><b>领电子书</b></span></span></span></p><p style=\\\"text-align:center;background-color:rgb(255, 255, 255);color:rgb(62, 62, 62);\\\"><span style=\\\"font-size: 14px;\\\"><span style=\\\"font-family: 微软雅黑;\\\"><span style=\\\"color: rgb(62,62,62);\\\">如有收获，请点击底部的&quot;</span></span></span><span style=\\\"font-size: 16px;\\\"><span style=\\\"font-family: 微软雅黑;\\\"><span style=\\\"color: rgb(2, 30, 170);\\\">在看</span></span></span><span style=\\\"font-family: 微软雅黑;\\\">&quot;和&quot;</span><span style=\\\"font-size: 16px;\\\"><span style=\\\"font-family: 微软雅黑;\\\"><span style=\\\"color: rgb(2, 30, 170);\\\">赞</span></span></span><span style=\\\"font-family: 微软雅黑;\\\">&quot;，谢谢</span></p></span>\\\n</div></body></html>\\u0000\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":209677}]"
metadata_diff: {"new":{"id":"ed50c71455944429bb5cb5ab6564aac9","parent_id":"f67288c3a0be4374b5d532b5dcc3aabc","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764348821594,"markup_language":2,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T21:03:45.698Z
created_time: 2025-11-28T21:03:45.698Z
type_: 13