模型上下文協(xié)議(Model Context Protocol, 簡(jiǎn)稱(chēng) MCP)是一種正在迅速普及的協(xié)議,它允許模型客戶(hù)端與外部服務(wù)和工具服務(wù)器進(jìn)行交互,讓模型客戶(hù)端不再局限于對(duì)話和信息檢索,而是能夠采取實(shí)際行動(dòng),比如發(fā)送郵件、部署代碼、或發(fā)布文章等,我在周刊的 30、35、43、44、45 期[1]都曾介紹過(guò)。 關(guān)于 MCP 介紹的文章已經(jīng)很多了,本篇不再贅述,這里我想重點(diǎn)談?wù)勆疃仁褂孟聛?lái)發(fā)現(xiàn)的一些問(wèn)題,以及這些問(wèn)題帶來(lái)的潛在掘金機(jī)會(huì)。

有哪些問(wèn)題

MCP 作為一個(gè)開(kāi)放標(biāo)準(zhǔn)協(xié)議,任意的模型客戶(hù)端都可以選擇去支持,Sever 端也可以一次構(gòu)建多處分發(fā),節(jié)省開(kāi)發(fā)者的精力,比起模型廠商各自提供的 function calling 或 tool use 確實(shí)方便多了,我從去年剛發(fā)布就在關(guān)注使用,但長(zhǎng)期使用下來(lái)仍然存在一些問(wèn)題。

打開(kāi)網(wǎng)易新聞 查看精彩圖片

無(wú)謂的復(fù)雜性

有點(diǎn)為了標(biāo)準(zhǔn)而標(biāo)準(zhǔn)(這也是新進(jìn)者應(yīng)對(duì)現(xiàn)存守成者的常見(jiàn)策略,可以理解),如果想讓 LLM 使用現(xiàn)有服務(wù),為什么不讓 LLM 直接調(diào)用它的 API 呢,利用成熟的 RESTful 和 Swagger/OpenAPI 規(guī)范生成工具所需的JSON schema不是更簡(jiǎn)潔( 比如使用 agents.json[2]),專(zhuān)門(mén)新建 MCP Server 包裝現(xiàn)有的 API 顯得多此一舉,因此也延伸出新的安全性和訪問(wèn)權(quán)限的問(wèn)題。

安全性

創(chuàng)建時(shí)通過(guò)注冊(cè)與合法 MCP Server 相似或相同的名稱(chēng),欺騙用戶(hù)安裝惡意 Server;代碼注入攻擊發(fā)生在 MCP Server 的源代碼或配置文件中。

運(yùn)行時(shí)多個(gè)工具可能使用相同或相似的名稱(chēng),導(dǎo)致在選擇工具時(shí)發(fā)生沖突,進(jìn)而執(zhí)行錯(cuò)誤的操作或泄露敏感數(shù)據(jù),多個(gè)工具注冊(cè)了相同或類(lèi)似的命令,導(dǎo)致執(zhí)行時(shí)出現(xiàn)歧義,出現(xiàn)錯(cuò)誤操作。

在 MCP Server更新后,過(guò)時(shí)或撤銷(xiāo)的權(quán)限未被及時(shí)清除,可以繼續(xù)利用這些過(guò)時(shí)權(quán)限執(zhí)行惡意操作,關(guān)于這部分的討論更多細(xì)節(jié)可以查看 論文《Model Context Protocol (MCP): Landscape, Security Threats, and Future Research Directions》[3]。

訪問(wèn)權(quán)限

企業(yè)用戶(hù)更傾向于自行托管 MCP Server,并希望分離數(shù)據(jù)層和控制層確保安全性和合規(guī)性,以支持不同用戶(hù)訪問(wèn) MCP Server,從最新的規(guī)范[4]來(lái)看,對(duì)遠(yuǎn)程 Server 已經(jīng)做了更多的支持,但還存在問(wèn)題。

基于 OAuth 2.1 的身份驗(yàn)證機(jī)制 將之前的 HTTP+SSE 傳輸方式替換為流式 HTTP 傳輸 支持 JSON-RPC 批處理

即使某工具通過(guò)了身份驗(yàn)證,還需明確其使用范圍,由于 MCP 尚未內(nèi)置細(xì)粒度權(quán)限控制,當(dāng)前僅局限于會(huì)話級(jí)別,這意味著工具要么完全開(kāi)放,要么完全禁用,隨著工具數(shù)量增加,權(quán)限管理將變得日益復(fù)雜。

持久連接與狀態(tài)性

最初設(shè)計(jì)更偏向本地運(yùn)行(uv/uvx 的使用),讓本地服務(wù)作為獨(dú)立進(jìn)程進(jìn)行集成,但子進(jìn)程會(huì)帶來(lái)安全隱患。在 MCP 中,連接是有狀態(tài)的,支持在連接的生命周期內(nèi)進(jìn)行多次請(qǐng)求和響應(yīng)。這種設(shè)計(jì)使得客戶(hù)端和服務(wù)器之間可以進(jìn)行持續(xù)的交互,維護(hù)上下文信息,從而提高交互的效率和連貫性,不過(guò)這與當(dāng)前流行的無(wú)狀態(tài) API 架構(gòu)(如 AWS Lambda, Cloudflare Workers)不太契合。

工具過(guò)多占用上下文

MCP 當(dāng)前是將所有工具都塞入模型上下文,缺乏優(yōu)先級(jí)或路由機(jī)制,這不僅浪費(fèi) token,還可能導(dǎo)致模型行為不穩(wěn)定,當(dāng)我讓 Claude Desktop 從超過(guò) 60 種的工具列表中的選擇 5 種工具調(diào)用時(shí),性能明顯下降,大多數(shù)時(shí)候它不會(huì)選擇最適合的工具,需要一種分級(jí)路由(逐步、選擇性暴露 tool 選項(xiàng))的方式(社區(qū)目前在探索通過(guò)命名空間和拓?fù)涓兄绞竭M(jìn)行分層)。

總結(jié)

MCP 目前存在的問(wèn)題還有很多,MCP 社區(qū)如果能把上面的問(wèn)題都能解決好(Roadmap 上都提出了針對(duì)性方案[5]),那無(wú)疑潛力巨大,在此之前我保持謹(jǐn)慎樂(lè)觀,繼續(xù)投入我感興趣的 Agent Network 和多輪持續(xù)對(duì)話場(chǎng)景下工具調(diào)用的研究。

問(wèn)題就是機(jī)會(huì)

模型上下文協(xié)議(MCP)的核心仍然是模型,其主要目標(biāo)是搶占下一個(gè)用戶(hù)交互入口,使模型客戶(hù)端成為主要的交互界面。通過(guò)這種方式,用戶(hù)可以通過(guò) API 完成操作,而無(wú)需依賴(lài)各個(gè)垂直 SaaS 軟件的圖形用戶(hù)界面(GUI)。

在長(zhǎng)鏈條任務(wù)中,這種設(shè)計(jì)與用戶(hù)利益一致,因此,OpenAI 沒(méi)有理由不支持 MCP,因?yàn)樵谶@一點(diǎn)上,它與 Anthropic 的利益是一致的。不過(guò)這種模式可能會(huì)受到擁有海量用戶(hù)的平臺(tái)類(lèi)產(chǎn)品的抵制,因?yàn)楝F(xiàn)有的守成者并不希望大模型成為新的入口,MCP 的陽(yáng)謀在于“挾開(kāi)發(fā)者和用戶(hù)以令巨頭”:即使某些平臺(tái)不愿意,標(biāo)準(zhǔn)協(xié)議也能幫助它們實(shí)現(xiàn)更體面的交互方式 (比如 mcp-browser-use[6]),這種模式對(duì)開(kāi)發(fā)者和新創(chuàng)產(chǎn)品具有吸引力。

接下來(lái),除了完善協(xié)議本身,模型廠商還需要圍繞消費(fèi)級(jí)需求提供更優(yōu)化的存儲(chǔ)、Server 商店等配套設(shè)施,由于這些領(lǐng)域單靠模型廠商自身難以完全覆蓋,這便為現(xiàn)有基礎(chǔ)設(shè)施廠商和開(kāi)發(fā)者創(chuàng)造了機(jī)會(huì)。

Server 網(wǎng)關(guān)

作為 MCP Client 與 Server 之間的中介組件,其主要職責(zé)包括統(tǒng)一管理連接、分配任務(wù)以及執(zhí)行安全驗(yàn)證。

隨著 MCP 的廣泛應(yīng)用,網(wǎng)關(guān)逐漸成為系統(tǒng)中的關(guān)鍵中間層,負(fù)責(zé)統(tǒng)一認(rèn)證、權(quán)限控制、流量調(diào)度和工具選擇。其功能類(lèi)似于傳統(tǒng)的 API 網(wǎng)關(guān),具體包括訪問(wèn)控制、請(qǐng)求路由、負(fù)載均衡,并通過(guò)緩存響應(yīng)提升效率。

在多租戶(hù)環(huán)境中,網(wǎng)關(guān)的作用尤為重要,因?yàn)椴煌脩?hù)和 Agent 可能具有不同的訪問(wèn)權(quán)限,一個(gè)標(biāo)準(zhǔn)化的 MCP 網(wǎng)關(guān)能夠簡(jiǎn)化 Client 與 Server 之間的交互,從而增強(qiáng)系統(tǒng)的安全性、可觀測(cè)性和可擴(kuò)展性,同時(shí)讓 MCP 的部署和管理更加便捷。

反應(yīng)迅速的廠商已經(jīng)提供類(lèi)似的能力了,比如 Zapier 推出 MCP 全流程方案[7],通過(guò)一個(gè)動(dòng)態(tài)的 MCP 端點(diǎn)將 AI 助手與 Zapier 的廣泛集成網(wǎng)絡(luò)連接起來(lái),實(shí)現(xiàn)了對(duì)超過(guò) 8000 個(gè)應(yīng)用的直接訪問(wèn)。它允許 AI 執(zhí)行真實(shí)動(dòng)作,如發(fā)送 Slack 消息或管理 Google Calendar 事件,Zapier 讓開(kāi)發(fā)者能夠?qū)W⒂诰幋a,同時(shí)由 Zapier 管理身份驗(yàn)證、API 限制和安全性,國(guó)內(nèi)的騰訊輕聯(lián)、集簡(jiǎn)云等 iPaaS 平臺(tái)也都可以快速實(shí)現(xiàn)類(lèi)似改造。

Server 發(fā)現(xiàn)
打開(kāi)網(wǎng)易新聞 查看精彩圖片
Server 發(fā)現(xiàn)

用戶(hù)要找到并配置 MCP 服務(wù)器仍是一個(gè)手動(dòng)過(guò)程,需要自行查找服務(wù)地址或腳本,配置認(rèn)證信息,可以構(gòu)建安裝工具(比如 mcp-get),簡(jiǎn)化跨不同 MCP 客戶(hù)端的 Server 安裝流程,或者構(gòu)建一個(gè) Server 目錄導(dǎo)航站,用于發(fā)現(xiàn)和訪問(wèn)可用的 MCP 服務(wù)器。

不過(guò)根據(jù) 官方 2025 上半年的 Roadmap[8],在分發(fā)和發(fā)現(xiàn)方面,MCP 包管理(MCP Server 的標(biāo)準(zhǔn)化打包格式)、安裝工具、沙盒安全和服務(wù)器注冊(cè)表已經(jīng)在日程上了,到時(shí)候按照標(biāo)準(zhǔn)做體驗(yàn)更好的工具就是機(jī)會(huì)。

Server 托管

提供遠(yuǎn)程 MCP Server 托管的服務(wù),現(xiàn)有基礎(chǔ)設(shè)施廠商已經(jīng)在進(jìn)入,比如Cloudflare 推出遠(yuǎn)程 MCP Server 部署功能[9],提供四個(gè)核心組件來(lái)簡(jiǎn)化遠(yuǎn)程 MCP Server 的構(gòu)建過(guò)程:

  • workers-oauth-provider作為一個(gè) OAuth 2.1 庫(kù),簡(jiǎn)化了用戶(hù)認(rèn)證和授權(quán)流程,使得開(kāi)發(fā)者無(wú)需自行實(shí)現(xiàn)復(fù)雜的 OAuth 認(rèn)證;

  • McpAgent 類(lèi)集成在 Cloudflare Agents SDK 中,負(fù)責(zé)處理遠(yuǎn)程傳輸,使得 MCP Server 能夠接收和處理來(lái)自 MCP Client 的消息;

  • mcp-remote是一個(gè)適配器,它允許本地 MCP Client 使用遠(yuǎn)程 MCP Server,讓這些客戶(hù)端能夠連接和使用遠(yuǎn)程服務(wù)器;

  • AI playground作為一個(gè)遠(yuǎn)程 MCP Client,提供了一個(gè)在線聊天界面,允許用戶(hù)連接到遠(yuǎn)程 MCP Server,并進(jìn)行必要的認(rèn)證檢查,從而使得用戶(hù)可以直接在網(wǎng)頁(yè)上與遠(yuǎn)程 MCP Server 交互和測(cè)試。

打開(kāi)網(wǎng)易新聞 查看精彩圖片
Server 安全

MCP Server 安全可以參考 DevSecOps,需要一大堆安全工具,圍繞 MCP Server 的生命周期,創(chuàng)建階段(包括 Server 注冊(cè)、安裝部署和代碼完整性驗(yàn)證,確保 Server 正確配置并安全準(zhǔn)備好處理請(qǐng)求)、運(yùn)行階段(MCP Server 根據(jù) AI 應(yīng)用請(qǐng)求執(zhí)行工具操作,處理命令,執(zhí)行沙箱機(jī)制以保證環(huán)境安全,并穩(wěn)定地與外部資源交互)、更新階段(確保 MCP Server 持續(xù)更新并適應(yīng)需求變化,包含授權(quán)管理、版本控制和舊版本管理,防止安全漏洞和權(quán)限問(wèn)題)。

工具調(diào)用管理
打開(kāi)網(wǎng)易新聞 查看精彩圖片
工具調(diào)用管理

在構(gòu)建 MCP 客戶(hù)端時(shí),工具選擇是一個(gè)關(guān)鍵問(wèn)題,面對(duì)海量服務(wù),工具顯然不能全丟進(jìn)上下文自動(dòng)選擇(我遇到 60 選 5 已經(jīng)奔潰了),也不能依賴(lài)人工決策,難道每位開(kāi)發(fā)者都需要為工具實(shí)現(xiàn)一套獨(dú)立的檢索邏輯?是否存在一個(gè)可標(biāo)準(zhǔn)化的“中間層”,以減少重復(fù)開(kāi)發(fā)并提升效率?其其次缺少工具調(diào)用接口和一致的 UI/UX 設(shè)計(jì)模式,一些工具依賴(lài) slash commands,而另一些則采用自然語(yǔ)言指令。通過(guò)引入一個(gè)標(biāo)準(zhǔn)化的客戶(hù)端層級(jí),可以覆蓋工具的發(fā)現(xiàn)、排序和調(diào)用過(guò)程,從而為開(kāi)發(fā)者和終端用戶(hù)提供更一致、更可靠的體驗(yàn)。

交互需要依次調(diào)用多個(gè)工具(單輪對(duì)話的多步驟工具調(diào)用 & 多輪對(duì)話的工具分批調(diào)用),但當(dāng)前 MCP 尚未提供內(nèi)建的工作流管理機(jī)制,期望每個(gè)客戶(hù)端獨(dú)立實(shí)現(xiàn)中斷恢復(fù)、失敗重試等功能既不現(xiàn)實(shí)也低效。因此,構(gòu)建一個(gè)統(tǒng)一的工作流管理系統(tǒng)顯得尤為重要。

寫(xiě)在結(jié)尾

如果對(duì) MCP 的使用和理解還不清楚,可以后臺(tái)回復(fù)「MCP」,手把手教你借助 MCP 構(gòu)建 Anthropic 官方博客Building effective agents[10]定義的 6 種 Agent 模式,可以作為學(xué)習(xí) MCP 的絕佳模板,畢竟 MCP 就是 Anthropic 自己發(fā)起的。

如果覺(jué)得內(nèi)容不錯(cuò),歡迎點(diǎn)個(gè)關(guān)注,分享和在看

參考資料

周刊的 30、35、43、44、45 期: https://liduos.com/the-memeber-newsletter-30.html

agents.json: https://github.com/wild-card-ai/agents-json

論文《Model Context Protocol (MCP): Landscape, Security Threats, and Future Research Directions》: https://arxiv.org/pdf/2503.23278

最新的規(guī)范: https://spec.modelcontextprotocol.io/specification/2025-03-26/

[5]

Roadmap 上都提出了針對(duì)性方案: https://modelcontextprotocol.io/development/roadmap#roadmap

[6]

mcp-browser-use: https://github.com/Saik0s/mcp-browser-use

[7]

Zapier 推出 MCP 全流程方案: https://zapier.com/mcp

[8]

官方 2025 上半年的 Roadmap: https://modelcontextprotocol.io/development/roadmap#roadmap

[9]

Cloudflare 推出遠(yuǎn)程 MCP Server 部署功能: https://blog.cloudflare.com/remote-model-context-protocol-servers-mcp/

[10]

Building effective agents: https://www.anthropic.com/engineering/building-effective-agents