MCP不止工具調(diào)用!MCP聯(lián)合創(chuàng)建者:絕大多數(shù)人用法都太初級(jí)!曝MCP五大原語、高階玩法:豐富人機(jī)交互體驗(yàn);MCP的未來在Web
原創(chuàng) 精選編輯 | 云昭
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
上周末,Anthropic 一口氣放出了很多內(nèi)部核心貢獻(xiàn)工程師的分享。此前小編分享了他們內(nèi)部的 ClaudeCode 的最佳實(shí)踐指南,今天一不留神,發(fā)現(xiàn)他們把 MCP 協(xié)議的設(shè)計(jì)哲學(xué)、開發(fā)技巧、未來計(jì)劃也同步放了出來。
如今,沒有哪家大廠不擁抱 MCP。不止國內(nèi)的阿里、字節(jié)、騰訊、百度、京東,即便是國外的即便是 Anthropic 死對(duì)頭的 OpenAI 也表示全面支持 MCP 協(xié)議。
所以,這次 Anthropic 將內(nèi)部分享放出來,可以說是又“哥們兒”了一把。
這次的分享者是,David Soria Parra,是他們 AI 技術(shù)團(tuán)隊(duì)成員,同時(shí)也是MCP 的聯(lián)合創(chuàng)建者。
“MCP 服務(wù)將不再只是本地 Docker 容器,而是一個(gè)網(wǎng)站。Web 化才是 MCP 未來的關(guān)鍵?!?/p>
“大多數(shù)人使用MCP都太簡(jiǎn)單了,它不止是工具調(diào)用,它還可以做很多豐富人機(jī)交互體驗(yàn)的部分?!?/p>
在“Code w/ Claude” 分享中,David 詳細(xì)解構(gòu)了 MCP 的五大原語鑰匙:Prompt、Resource、Sampling、Roots、Tool,每一個(gè)原語背后都是一個(gè)潛力巨大的交互魔法,并進(jìn)一步闡述了 MCP 團(tuán)隊(duì)正在計(jì)劃開展的工作,比如構(gòu)建復(fù)雜的 MCP 鏈?zhǔn)秸{(diào)用等。
總之,MCP 協(xié)議的設(shè)計(jì)哲學(xué)、原語組合方式、Web 化趨勢(shì),包括一些掛件的技術(shù)細(xì)節(jié),比如:如何鑒權(quán)、如何Scaling等等,以及未來它可能帶來的革命性變革,全都在這場(chǎng)分享里了。
圖片
如果大家正在構(gòu)建自己的 AI 應(yīng)用,或者正在研究 MCP,這篇內(nèi)容,值得你收藏細(xì)看。
話不多說,分享的原文整理如下。
1.聯(lián)合創(chuàng)建者:大多數(shù)人都沒有用好MCP
大家好,我叫 David,是 Anthropic 的一名技術(shù)工程師,同時(shí)也是 MCP 協(xié)議的聯(lián)合創(chuàng)建者之一。今天我想和大家分享一些關(guān)于這個(gè)協(xié)議的深入內(nèi)容,特別是它的更多可能性。
圖片
目前,大多數(shù)人使用 MCP 協(xié)議主要是為了調(diào)用工具(Tool Calls),但實(shí)際上它的能力遠(yuǎn)不止于此。我的目標(biāo)是向你展示 MCP 協(xié)議還能做什么,以及你如何用它構(gòu)建更豐富的人機(jī)交互體驗(yàn),尤其是超越傳統(tǒng)工具調(diào)用的那部分。
圖片
我會(huì)先介紹一些我們稱為“原語(primitives)”的概念,也就是 MCP 協(xié)議中服務(wù)器向客戶端暴露信息的基本方式。之后,我會(huì)分享一些鮮為人知但非常實(shí)用的協(xié)議能力,最后再談?wù)?MCP 的未來發(fā)展方向,尤其是如何將它引入 Web 世界。
2.Prompt:被忽視的“預(yù)設(shè)模版”
我們先從一種鮮有人知的 MCP 原語說起:Prompt。
這里的 Prompt 并不是我們通常理解的“提示詞”,在 MCP 中,它是一種由服務(wù)器預(yù)設(shè)的 AI 交互模版,用戶可以直接將這些文本模版添加進(jìn)上下文窗口,從而引導(dǎo) AI 如何與你的 MCP 服務(wù)交互。
圖片
主要有兩個(gè)用途:
- 作為使用示例:你作為 MCP 服務(wù)器的開發(fā)者最了解它的用法,因此提供 Prompt 給用戶,是一個(gè)傳達(dá)最佳使用方式的好方法。
- 動(dòng)態(tài)能力:Prompt 本質(zhì)上是可以執(zhí)行的代碼,因此不僅是靜態(tài)文案,而是動(dòng)態(tài)模版。你可以讓它根據(jù)上下文或參數(shù)實(shí)時(shí)生成內(nèi)容。
舉個(gè)例子,我在 Z 編輯器中使用 MCP Prompt 從 GitHub 拉取我提交的 PR 評(píng)論,并把它們注入到上下文窗口中,這樣我就能直接讓模型幫助我修改代碼或處理評(píng)審反饋。
這與 Tool 的最大區(qū)別在于:Prompt 是用戶主動(dòng)觸發(fā)的行為,而 Tool 是模型決定何時(shí)調(diào)用的行為。
進(jìn)一步地,Prompt 還能支持“補(bǔ)全”。比如,當(dāng)用戶觸發(fā)某個(gè) Prompt 時(shí),彈出列表讓他選擇具體的 Pull Request,這是一個(gè)通過參數(shù)動(dòng)態(tài)構(gòu)造 Prompt 的方式。
圖片
這其實(shí)很簡(jiǎn)單,在 TypeScript 中用不到幾行代碼就能實(shí)現(xiàn),而且大多數(shù)時(shí)候 Claude Code + Claude 4 模型本身就能幫你自動(dòng)完成。
圖片
3.Resource:上下文之外的資源暴露
第二個(gè)原語是 Resource,資源。
與 Prompt 更偏向文本片段不同,Resource 是暴露給客戶端的原始內(nèi)容或數(shù)據(jù),比如文件、數(shù)據(jù)庫結(jié)構(gòu)、網(wǎng)頁等等。
圖片
它的作用:
- 用戶可以選擇將其添加進(jìn)上下文,和 Prompt 類似;
- 應(yīng)用層還能基于它進(jìn)行額外處理,比如構(gòu)建 Embedding 并進(jìn)行 RAG(檢索增強(qiáng)生成)。
舉個(gè)例子,我在 Cloud Desktop 中“暴露”了一份 PostgreSQL 數(shù)據(jù)庫的 Schema,并將其作為文件資源加載進(jìn)來,接著 Claude 自動(dòng)為我繪制了一張可視化數(shù)據(jù)庫結(jié)構(gòu)圖。
圖片
Resource 給應(yīng)用端提供了非常大的擴(kuò)展空間。
4.Tool:模型主導(dǎo)的行為調(diào)用
第三個(gè)原語是大家最熟悉的——Tool,也就是工具調(diào)用。大多數(shù)人開發(fā) MCP 服務(wù)就是為了暴露 Tool,讓模型可以主動(dòng)調(diào)用某個(gè)動(dòng)作,比如查詢數(shù)據(jù)庫、執(zhí)行腳本等。
圖片
這是你第一次看到模型“自動(dòng)做一件你寫好的事”時(shí)最有魔力的時(shí)刻。Tool 是由模型驅(qū)動(dòng)觸發(fā)的行為。
5.Interaction Model:三者的協(xié)作邏輯
現(xiàn)在我們已經(jīng)有了三種原語(Prompt、Resource、Tool),但你可能會(huì)問:我該什么時(shí)候用哪個(gè)?
圖片
這就需要引入 MCP 中一個(gè)被低估的設(shè)計(jì):交互模型(Interaction Model)。
圖片
它描述的是:
- Prompt 是用戶主導(dǎo)的(例如 Slash 命令);
- Resource 是應(yīng)用主導(dǎo)的(自動(dòng)加載或推薦);
- Tool 是模型主導(dǎo)的(由 AI 自動(dòng)決定何時(shí)調(diào)用)。
一個(gè)完善的 AI 應(yīng)用,就應(yīng)該協(xié)調(diào)好這三者的關(guān)系,從而在用戶、應(yīng)用、模型三者之間建立更豐富的交互鏈條。
圖片
6.Sampling:讓模型調(diào)用“由客戶端控制”
接下來介紹一個(gè)更高級(jí)但目前支持較少的原語:Sampling。
假設(shè)你做了一個(gè) MCP 服務(wù)器,功能是總結(jié) Issue Tracker 的對(duì)話。你可能想調(diào)用 Claude 來生成摘要,但此時(shí)有個(gè)問題:你不知道客戶端用的是哪種模型,也沒有用戶的 API Key。
Sampling 提供了解法:讓服務(wù)器向客戶端發(fā)起一個(gè)“請(qǐng)求補(bǔ)全”的調(diào)用,由客戶端選定模型并返回結(jié)果。好處是:
- 用戶完全掌控成本、安全、隱私;
- 多個(gè) MCP 服務(wù)可以串聯(lián),通過 Sampling 遞歸地請(qǐng)求模型補(bǔ)全,構(gòu)建復(fù)雜的鏈?zhǔn)秸{(diào)用(Chain of MCP Servers)。(這里是個(gè)重點(diǎn))
圖片
圖片
雖然目前還不太被廣泛支持,但我們計(jì)劃在今年為官方產(chǎn)品引入 Sampling 能力。
7.Roots:獲取客戶端環(huán)境信息
另一個(gè)很少被提到但很實(shí)用的原語是:Roots。
比如你想做一個(gè) MCP Git 工具,幫用戶在 VS Code 中操作 Git 命令。你需要知道:當(dāng)前打開的項(xiàng)目路徑是啥?Roots 就是讓 MCP 服務(wù)可以向客戶端(如 VS Code)詢問這些環(huán)境信息,從而限定操作范圍,避免誤操作。
圖片
8.五大原語總結(jié)
所以 MCP 協(xié)議目前包含五個(gè)核心原語:
- Prompt(用戶主動(dòng))
- Resource(應(yīng)用主動(dòng))
- Tool(模型主動(dòng))
- Sampling(客戶端協(xié)助補(bǔ)全)
- Roots(客戶端環(huán)境交互)
如何將它們組合,是構(gòu)建強(qiáng)大 AI 服務(wù)體驗(yàn)的關(guān)鍵。
圖片
9.MCP 的未來:Web 化
目前超過一萬個(gè) MCP 服務(wù)都運(yùn)行在本地環(huán)境中。但我們認(rèn)為 MCP 的未來在 Web。
圖片
Web 化 MCP 服務(wù)意味著:
- MCP 服務(wù)將不再是本地 Docker 容器,而是一個(gè)網(wǎng)站;
- 客戶端直接連接網(wǎng)站暴露的 MCP 接口進(jìn)行交互。
為實(shí)現(xiàn)這一點(diǎn),我們必須解決兩個(gè)核心問題:
圖片
1) 鑒權(quán)(Authorization)
我們采用 OAuth 2.1 協(xié)議,讓用戶通過 Web 登錄授權(quán)后,將其私有數(shù)據(jù)安全暴露給 MCP 服務(wù)。
這不僅讓服務(wù)更可信(你信的是官網(wǎng)而非陌生開發(fā)者),也便于企業(yè)集成,例如通過 Azure AD、Okta 等單點(diǎn)登錄系統(tǒng)完成企業(yè)內(nèi)部 MCP 服務(wù)部署。
圖片
圖片
2)擴(kuò)展性(Scaling)
為此我們新增了 可流式傳輸?shù)?HTTP 模式(Streamable HTTP)。你可以:
- 直接同步返回 JSON(像普通 REST API);
- 或者開啟流式通道,先返回部分信息,再動(dòng)態(tài)推送更多內(nèi)容。
這使得 MCP 服務(wù)具備現(xiàn)代 API 所需的擴(kuò)展性,能支持大規(guī)模并發(fā)。
圖片
圖片
這里小編多提一嘴,MCP 的 Web 化目前也是一個(gè)前沿的研究方向,除了協(xié)議層面的流式傳輸模式外,小編注意到已經(jīng)有一些創(chuàng)業(yè)公司開始著手打造一種 MCP 的 Web UI,目標(biāo)是“標(biāo)準(zhǔn)化模型和工具如何在客戶端應(yīng)用中請(qǐng)求展示豐富 HTML 界面的方式”。聽起來,這種方式和 iOS 或 Android 開發(fā)者在 App 中嵌入 WebView 類似。大家可以關(guān)注一下。
10.即將上線的功能
我們接下來會(huì)推出:
- 異步任務(wù)支持:為 Agent 執(zhí)行長(zhǎng)時(shí)間任務(wù)奠定基礎(chǔ);
- 用戶交互請(qǐng)求(Elicitation):服務(wù)端可主動(dòng)向用戶請(qǐng)求輸入;
- 官方注冊(cè)中心:一個(gè)用于發(fā)布和發(fā)現(xiàn) MCP 服務(wù)的統(tǒng)一平臺(tái);
- 多模態(tài)能力:如流式多模態(tài)輸出;
- 新語言 SDK 支持:如 Ruby(由 Shopify 捐贈(zèng))和 Go(由 Google 團(tuán)隊(duì)開發(fā))。
圖片
MCP不止tool calls而是豐富交互體驗(yàn)的系統(tǒng)協(xié)議
從去年11月誕生以來,到今年年初的爆火,再到各大互聯(lián)網(wǎng)巨頭的積極擁抱。發(fā)展至今,MCP 協(xié)議已經(jīng)遠(yuǎn)不止是一個(gè)“工具調(diào)用協(xié)議”,它更像是一整套讓 LLM 與客戶端構(gòu)建豐富交互體驗(yàn)的系統(tǒng)協(xié)議。
好了,今天這篇文章分享就到這里了,如果你也正在使用 MCP 工具,或者正在開發(fā) MCP Server,歡迎評(píng)論去交流。
參考鏈接:https://www.youtube.com/watch?v=HNzH5Us1Rvg&t=432s































