MCP 協(xié)議深度解讀:技術(shù)創(chuàng)新正以前所未有的速度突破
作者 | rian
OpenAI 官宣全面支持MCP協(xié)議,至此MCP已得到業(yè)界廣泛的認(rèn)可。正逐步成為AI應(yīng)用架構(gòu)的基礎(chǔ)協(xié)議。做為AI應(yīng)用架構(gòu)的USB-C,MCP原理是怎樣的?對(duì)實(shí)際業(yè)務(wù)又有何影響呢?本文以MCP原理解讀及業(yè)務(wù)實(shí)踐為切入點(diǎn),探索AI應(yīng)用架構(gòu)在業(yè)務(wù)領(lǐng)域落地的路徑。
一、技術(shù)背景
大模型很長(zhǎng)時(shí)間面臨認(rèn)知邊界和工具使用的雙重約束:其知識(shí)體系受限于預(yù)訓(xùn)練階段的靜態(tài)數(shù)據(jù)沉淀并缺少完成任務(wù)的工具。而傳統(tǒng)Function Call存在先天性的不足:線性指令執(zhí)行機(jī)制帶來(lái)的性能瓶頸與異構(gòu)接口標(biāo)準(zhǔn)帶來(lái)的兼容性瓶頸。這種局面在 Anthropic 2024.11 發(fā)布 Model Context Protocol 后得到改變——該協(xié)議重新定義了大語(yǔ)言模型與現(xiàn)實(shí)世界的交互范式。
1. Function Call vs MCP
Function Call,標(biāo)桿開源項(xiàng)目是 Langchain Tools,它提供了"All In One"的工具箱,號(hào)稱大模型的瑞士軍刀。
而MCP的設(shè)計(jì)思路則不同,它遵循微內(nèi)核架構(gòu)的設(shè)計(jì)理念:定義架構(gòu)和協(xié)議標(biāo)準(zhǔn)。號(hào)稱工具調(diào)用的USB-C標(biāo)準(zhǔn)。
標(biāo)準(zhǔn)發(fā)布后開源生態(tài)活躍,MCP 官方及三方組件累計(jì)已達(dá)到4000+。
官方MCPServer:GitHub - modelcontextprotocol/servers: Model Context Protocol Servers
基于這一框架,大語(yǔ)言模型突破了原有束縛:動(dòng)態(tài)語(yǔ)義對(duì)齊機(jī)制將工具理解準(zhǔn)確率提升至新量級(jí),指令編排引擎則實(shí)現(xiàn)了高并發(fā)任務(wù)的智能調(diào)度。MCP通過(guò)標(biāo)準(zhǔn)化接口的語(yǔ)義映射能力,將離散的API調(diào)用轉(zhuǎn)化為具備上下文感知的協(xié)作指令集。
2. MCP Timeline
(1) 2024年11 月 24 日
Anthropic 發(fā)布 MCP 協(xié)議人工智能公司 Anthropic 首次提出 MCP(Model Control Protocol),旨在為無(wú)法直接修改底層邏輯的 Agent(如 Cursor、Claude 桌面端等)提供工具調(diào)用標(biāo)準(zhǔn)。協(xié)議允許用戶為第三方 Agent 動(dòng)態(tài)接入自定義工具,無(wú)需開發(fā)者介入。
(2) 2024年12月
Claude + MCP 應(yīng)用案例涌現(xiàn) 技術(shù)社區(qū)出現(xiàn)首批基于Claude 3.5 + MCP 的應(yīng)用案例,例如通過(guò)MCP協(xié)議實(shí)現(xiàn)Claude與本地文件系統(tǒng)、數(shù)據(jù)庫(kù)的自動(dòng)化交互。開發(fā)者工具Cursor同期發(fā)布MCP適配版本,驗(yàn)證了該協(xié)議在多工具協(xié)作場(chǎng)景的可行性。
(3) 2025年3月初
MCP生態(tài)進(jìn)入規(guī)模化應(yīng)用階段 企業(yè)級(jí)應(yīng)用:Block、Apollo等企業(yè)通過(guò)集成MCP實(shí)現(xiàn)跨系統(tǒng)數(shù)據(jù)調(diào)度,業(yè)務(wù)流程響應(yīng)速度提升數(shù)倍;開發(fā)者工具:Cline、Windsurf 等工具原生支持MCP協(xié)議。
(4) 2025年3月11日
LangChain 官方發(fā)布核心辯論文章 LangChain 聯(lián)合創(chuàng)始人 Harrison Chase 與 LangGraph 負(fù)責(zé)人 Nuno Campos 圍繞 MCP 展開激辯。40% 參與者支持 MCP 成為未來(lái)標(biāo)準(zhǔn)。(33% 的人表示觀望)。
(5) 2025年3月12日
開源社區(qū)復(fù)現(xiàn) Manus 技術(shù)方案 開發(fā)者社區(qū)組織線上分享會(huì),探討如何基于 MCP 協(xié)議復(fù)現(xiàn) Anthropic 的 Manus 框架(一種多 Agent 協(xié)作系統(tǒng)),進(jìn)一步推動(dòng)協(xié)議落地應(yīng)用。
解讀:Manus 產(chǎn)品形態(tài)上讓人眼前一亮。而在 Manus 發(fā)布之前,完成特定領(lǐng)域任務(wù)的AI Agent 已經(jīng)投入實(shí)際的生產(chǎn)工作(如AI編碼工具Cursor、Cline)。Manus 的關(guān)鍵詞是 "通用、復(fù)雜任務(wù)"。
(6) 2025年3月17日
Anthropic推出的MCP協(xié)議新傳輸方案"Streamable HTTP“。
該方案徹底重構(gòu)了通信機(jī)制。解決了原HTTP+SSE方案在連接恢復(fù)性、服務(wù)器負(fù)載及雙向通信方面的核心瓶頸。
PR已于3.24合入。
解讀:1. 按需建立流式通道:會(huì)話初始化階段僅需常規(guī)HTTP請(qǐng)求,當(dāng)檢測(cè)到需要持續(xù)交互(如工具執(zhí)行進(jìn)度反饋)時(shí),服務(wù)器自動(dòng)觸發(fā)SSE升級(jí)機(jī)制。2. 無(wú)狀態(tài)運(yùn)行支持: 服務(wù)器無(wú)需長(zhǎng)期維護(hù)連接狀態(tài),處理完請(qǐng)求即可釋放資源,適合Serverless架構(gòu)。
(7) 2025年3月27日
OpenAI宣布支持MCP協(xié)議。
3. MCP Roadmap
2025H1 MCP官方計(jì)劃支持以下能力:
(1) Remote MCP Support:
OAuth2授權(quán)&鑒權(quán)能力、服務(wù)注冊(cè)與發(fā)現(xiàn)、無(wú)狀態(tài)操作(支持serverless場(chǎng)景)
(2) Distribution & Discovery:
Package管理、沙箱環(huán)境(通過(guò)隔離提升安全性)、MCP Server注冊(cè)表
(3) Agent Support:
- 分層代理系統(tǒng):通過(guò)命名空間與拓?fù)涓兄С侄嗉?jí)代理樹結(jié)構(gòu)。
- 交互式工作流:優(yōu)化跨代理層級(jí)的權(quán)限管理、用戶信息請(qǐng)求及輸出定向(用戶而非模型)。
- 流式結(jié)果:支持長(zhǎng)任務(wù)實(shí)時(shí)結(jié)果推送,提升響應(yīng)效率。
(4) Broader Ecosystem:
開放標(biāo)準(zhǔn)共建:推動(dòng)社區(qū)主導(dǎo)的標(biāo)準(zhǔn)制定,鼓勵(lì)A(yù)I廠商平等參與治理,滿足多樣化應(yīng)用需求。多模態(tài)支持:拓展音頻、視頻等非文本格式的兼容性。
這些都是MCP 架構(gòu)工程化落地很需要的能力。
二、初步驗(yàn)證
紙上得來(lái)終覺(jué)淺,了解到MCP概念后,我使用 Cline(VSCode插件)體驗(yàn)了MCP Server開發(fā)、配置和使用的過(guò)程。
1. 開發(fā) MCP Server
這里使用 Claude Sonnet 大模型和MCP模板快速實(shí)現(xiàn)了幾個(gè)MCP Server:openweather:基于openwheather api 查詢天氣信息。note-sqlite:使用 sqlite 保存、查詢筆記。
MCP Server 需要實(shí)現(xiàn)大模型友好的接口定義,核心的接口是:
接口名稱 | 功能描述 |
list_tools | 返回工具清單及JSON Schema描述(含權(quán)限說(shuō)明) |
call_tool | 執(zhí)行工具調(diào)用(需參數(shù)驗(yàn)證) |
list_resources | 返回可訪問(wèn)資源列表(文件路徑/API端點(diǎn)) |
read_resource | 獲取指定資源內(nèi)容(支持分頁(yè)) |
list_resource_templates | 提供動(dòng)態(tài)資源模板 |
2. 配置 MCP Server
將開發(fā)好的MCP Server 添加到Cline插件的MCP Server配置文件。
3. MCP Host 執(zhí)行任務(wù)
在Cline對(duì)話框輸入任務(wù):"查詢并記錄天氣"。任務(wù)執(zhí)行情況如下:
(1) 意圖識(shí)別與任務(wù)分解
Cline 將用戶prompt 和可用工具列表作為入?yún)鬟f給LLM,LLM執(zhí)行意圖識(shí)別與任務(wù)分解。
可以看到,大模型將任務(wù)分解為兩個(gè)主要步驟:
- 使用openweather 獲取深圳天氣數(shù)據(jù) 2. 使用note-sqlite 保存天氣數(shù)據(jù)
- 在此步驟大模型的輸出是:任務(wù)執(zhí)行的工作流(查詢天氣->保存筆記)及Tool Call參數(shù)。
(2) 查詢天氣數(shù)據(jù)
Cline 根據(jù)大模型返回的工作流及Tool Call參數(shù),調(diào)用get_current_weather 查詢天氣信息:
(3) 數(shù)據(jù)處理與格式化
Cline 將"查詢天氣"的結(jié)果加入到上下文中傳遞給大模型,大模型將其轉(zhuǎn)化為調(diào)用save_note工具的參數(shù)。
(4) 記錄天氣數(shù)據(jù)
Cline 使用大模型返回的 Tool Call 參數(shù)調(diào)用save_note工具保存筆記:
(5) 結(jié)果呈現(xiàn)
Cline 將"保存筆記"的結(jié)果加入到上下文傳遞給大模型,大模型返回任務(wù)總結(jié):
為了驗(yàn)證大模型對(duì)同類工具的選擇機(jī)制,我又開發(fā)、配置了一個(gè)weather-sqlite 服務(wù),專門用于記錄天氣信息。
在查詢網(wǎng)天氣信息后,在note-sqlite和weather-sqlite 都可用的前提下,選擇了后者用于保存天氣信息。以下是大模型給出的決策理由:
三、原理解析
接下來(lái)看一下大模型和MCP工具集是如何協(xié)同完成用戶特定任務(wù)的。
1. 核心架構(gòu)
(1) MCP Host (如Claude Desktop、Cursor IDE、Cline)可以看做是一個(gè)AI Agent。調(diào)用LLM執(zhí)行意圖識(shí)別,制定任務(wù)計(jì)劃。然后調(diào)用MCP Server 完成任務(wù)流中的一個(gè)一個(gè)子任務(wù)。同時(shí)負(fù)責(zé)管理與用戶的會(huì)話。
(2) MCP Server 即大模型友好的工具集。通過(guò)類似OAS標(biāo)準(zhǔn)的Schema標(biāo)注,讓大模型能很好地理解工具的功能范圍及使用方法。MCP Server需要有安全控制機(jī)制,以保障接口/資源不被越權(quán)訪問(wèn)。
(3) MCP Client 即通信中間件。MCP Client 是MCP Host 引用的組件,負(fù)責(zé)與MCP Server 建立連接,并處理 JSON-RPC/SSE 等協(xié)議交互。
2. 交互流程
這里花了一點(diǎn)時(shí)間完整地探究了一下Cline 完整地梳理了Cline 處理用戶請(qǐng)求的流程。主要涉及兩個(gè)階段:
- 初始化階段:MCP Host啟動(dòng)時(shí)基于配置與MCP Server 建立連接,獲取并緩存工具/資源的元數(shù)據(jù)描述(如接口定義JSON Schema)。
- 任務(wù)處理階段:MCP Host調(diào)用大模型做意圖識(shí)別和任務(wù)規(guī)劃。大模型結(jié)合用戶prompt及上下文信息、可用工具列表動(dòng)態(tài)規(guī)劃任務(wù)流程并適配 Tool Call 參數(shù)。該階段采用ReAct循環(huán)機(jī)制,當(dāng)參數(shù)不完整或輸出結(jié)果置信度低于閾值時(shí)啟動(dòng)用戶協(xié)同修正流程。
3. 技術(shù)關(guān)鍵點(diǎn)
這里展開說(shuō)一些關(guān)鍵技術(shù)細(xì)節(jié)
(1) 統(tǒng)一語(yǔ)義空間
MCP Server通過(guò) Schema(類 OAS3標(biāo)準(zhǔn)) 明確定義工具的能力范圍及接口字段(包含類型、校驗(yàn)規(guī)則及自然語(yǔ)言描述等)。
下面是一個(gè)示例Schema:
可以看到接口定義了兩個(gè)字段:city 和 days。兩個(gè)字段均有明確的描述信息和校驗(yàn)規(guī)則。接口自身的功能描述信息也有在Schema中標(biāo)注。
大模型基于用戶意圖動(dòng)態(tài)規(guī)劃工具調(diào)用指令流。并根據(jù)上下文信息、工具的 Input Schema 生成調(diào)用參數(shù)。實(shí)現(xiàn)自然語(yǔ)言與工具調(diào)用的語(yǔ)義對(duì)齊。
(2) 雙向通訊協(xié)議
通過(guò)雙向通訊機(jī)制MCP Host 不僅可以通過(guò)RPC調(diào)用工具集,還可以實(shí)時(shí)感知工具和資源的變更。目前支持STDIO、Streamable HTTP兩種通訊協(xié)議。覆蓋了本地進(jìn)程間通訊和遠(yuǎn)端通訊的場(chǎng)景。
日志/文件處理是一個(gè)典型的應(yīng)用場(chǎng)景。
(3) 微內(nèi)核架構(gòu)
得益于MCP微內(nèi)核架構(gòu),任何支持 MCP 的 AI 應(yīng)用(MCP Host)均可直接配置并使用應(yīng)用市場(chǎng)的MCP Server(官方、三方),無(wú)需預(yù)編碼適配。類似于 USB 設(shè)備插入即用。
Cline MCP Server配置文件示例:
四、業(yè)務(wù)探索
為了探索AI應(yīng)用架構(gòu)在QQ機(jī)器人場(chǎng)景落地的路徑。我遵循MCP提供的思路,搭建了一個(gè)的AI Agent DEMO機(jī)器人。
1. DEMO制作
機(jī)器人基于MCP協(xié)議接入工具集,基于大模型的意圖識(shí)別和動(dòng)態(tài)規(guī)劃能力完成用戶任務(wù)的過(guò)程,采用ReAct模式迭代處理用戶任務(wù),直至任務(wù)完成。
共涉及3個(gè)服務(wù):MCP Host(即機(jī)器人服務(wù)端)和2個(gè)MCP Server(包含查詢天氣的工具、制定行程計(jì)劃的工具)。
驗(yàn)證截圖如下:
機(jī)器人首先提示用戶補(bǔ)全信息,然后調(diào)用MCP Server工具集完成了"查詢天氣 -> 制定行程"的任務(wù)流程。最后調(diào)用大模型輸出了任務(wù)總結(jié)。
由于token成本的原因,demo機(jī)器人未開放體驗(yàn)。
2. 架構(gòu)推演
實(shí)際業(yè)務(wù)場(chǎng)景中智能體需要響應(yīng)用戶各種各樣的請(qǐng)求,比如:搜索、畫圖、拍照解題、文檔處理等等。單Agent架構(gòu)難以支撐,難以擴(kuò)展。我們把目光投向了時(shí)下熱度很高的Multi-Agent架構(gòu)。
(1) 引入Multi-Agent架構(gòu)
我們調(diào)研了:LangManus、OpenManus、OWL、Tars等完整產(chǎn)品形態(tài)的開源框架。同時(shí)也調(diào)研了一些更輕量的后臺(tái)框架,比如eino 。這些框架在這些框架有一些共同點(diǎn):引入了多Agent動(dòng)態(tài)協(xié)同、上下文管理、任務(wù)流編排與執(zhí)行等能力。核心邏輯都采用了ReAct模式進(jìn)行循環(huán)迭代。都引入一套處理特定任務(wù)的工具集(如搜索、文檔處理),同時(shí)支持MCP擴(kuò)展。
這里基于調(diào)研的結(jié)論及對(duì)開源框架的理解畫了一下 Multi-Agent的架構(gòu)示意圖:
這里不展開說(shuō)。后續(xù)會(huì)發(fā)專項(xiàng)文章。敬請(qǐng)期待。
(2) 解決大模型應(yīng)用開發(fā)的痛點(diǎn)
大模型給應(yīng)用開發(fā)帶來(lái)了很大的便利:
- 基于語(yǔ)義的文本處理能力:能夠理解和生成人類語(yǔ)言,處理非結(jié)構(gòu)化的內(nèi)容語(yǔ)義關(guān)系
- 動(dòng)態(tài)決策能力:能夠基于上下文進(jìn)行推理和判斷,做出相應(yīng)的行為決策
但大模型提供良好泛化能力的同時(shí)也引入了一些痛點(diǎn),那就是準(zhǔn)確性和穩(wěn)定性。
典型 case:
- 準(zhǔn)確性 :用戶希望使用AI Agent的P圖功能,在發(fā)送圖片給Agent后,又說(shuō)"卡通風(fēng)格"。而AI Agent 出戲了回復(fù)了一段文字解釋了卡通風(fēng)格。大模型沒(méi)有理解到用戶處于畫圖的流程中。
- 穩(wěn)定性:用戶輸入"我明天去第比利斯旅行,請(qǐng)幫我制定一個(gè)4天旅行計(jì)劃"??赡艽嬖诖竽P偷谝淮我?guī)劃的任務(wù)流程和第二次不一致的情況,比如:第一次"調(diào)用工具查詢天氣 -> 調(diào)用工具制定行程計(jì)劃",第二次"詢問(wèn)用戶當(dāng)?shù)氐奶鞖馇闆r- > 調(diào)用工具制定行程計(jì)劃"。
可以從算法和工程兩個(gè)維度來(lái)改進(jìn)。這里主要探討工程化的提升手段/措施:
① 提升意圖識(shí)別準(zhǔn)確性的工程化手段
- 精細(xì)化提示詞管理、上下文管理,為大模型提供必要準(zhǔn)確的信息。
- 通過(guò)任務(wù)質(zhì)量Agent 收集低置信度意圖識(shí)別結(jié)果。完成反饋與修正流程。
② 提升任務(wù)流規(guī)劃穩(wěn)定性的工程化手段
- (參考eino框架的思路)開發(fā)者預(yù)先定義執(zhí)行圖的結(jié)構(gòu)和可能的路徑,固化某些業(yè)務(wù)的處理流程,而大模型在運(yùn)行時(shí)根據(jù)任務(wù)內(nèi)容動(dòng)態(tài)決定具體走哪條路徑。這種設(shè)計(jì)既保證了系統(tǒng)的結(jié)構(gòu)化和可控性,又提供了足夠的靈活性來(lái)處理各種復(fù)雜任務(wù)。
- 復(fù)雜流程處理上:增加按照用戶響應(yīng)判斷是否跳出任務(wù)的處理過(guò)程的邏輯或步驟。
拋磚引玉。這里簡(jiǎn)單聊了一下我在探索AI應(yīng)用架構(gòu)落地過(guò)程中遇到的一些問(wèn)題和思考。
五、總結(jié)與展望
寫這篇文章加實(shí)踐探索先后花了2周左右的時(shí)間。這段時(shí)間MCP生態(tài)活躍。我也不斷在更新文章第一章節(jié)的Timeline。
我深切地感受到技術(shù)創(chuàng)新正以前所未有的速度進(jìn)行著。同時(shí)也意識(shí)到技術(shù)創(chuàng)新給業(yè)務(wù)生態(tài)帶來(lái)的無(wú)限可能:
各個(gè)行業(yè)可以基于MCP協(xié)議開放工具(比如購(gòu)買機(jī)票、預(yù)訂外賣),參與AI工業(yè)革命的進(jìn)程。
智能體應(yīng)用(手機(jī)APP、桌面端或網(wǎng)頁(yè))可以基于MCP開放生態(tài)接入的海量工具構(gòu)建業(yè)務(wù)形態(tài)。比如:用戶發(fā)出的自然語(yǔ)言指令,智能體應(yīng)用借助外部服務(wù)/工具完成用戶任務(wù)(比如用戶:"幫我購(gòu)買8月份去格魯吉亞旅游的低價(jià)往返機(jī)票"。智能體應(yīng)用:首先提供機(jī)票查詢結(jié)果,然后在用戶確認(rèn)后購(gòu)買機(jī)票,并設(shè)定日程提醒)
后續(xù)會(huì)持續(xù)分享AI應(yīng)用架構(gòu)在QQ業(yè)務(wù)場(chǎng)景落地的實(shí)踐。歡迎大家來(lái)交流。