圖解「模型上下文協(xié)議(MCP)」:從與傳統(tǒng) API 的比較入手 原創(chuàng) 精華
編者按: AI 應(yīng)用如何像智能終端連接配件一樣,無(wú)縫集成多樣化的工具和數(shù)據(jù)源?答案或許就藏在近期熱議的「模型上下文協(xié)議(MCP)」中。
我們今天帶來(lái)的這篇文章,作者的核心觀點(diǎn)是:MCP 通過(guò)標(biāo)準(zhǔn)化通信協(xié)議,讓 AI 應(yīng)用與外部工具、數(shù)據(jù)的交互如同 USB-C 接口一般高效且靈活,徹底改變傳統(tǒng) API 架構(gòu)的僵化限制。
文章詳細(xì)介紹了 MCP 的核心架構(gòu),包括 Host(提供 AI 交互環(huán)境的應(yīng)用程序)、Client(實(shí)現(xiàn)與 MCP Servers 通信)和 Server(提供特定能力和數(shù)據(jù)訪問(wèn))三大組件。重點(diǎn)解釋了 MCP 的 Capability Exchange(能力交換)機(jī)制如何使系統(tǒng)更加動(dòng)態(tài)靈活,允許服務(wù)器隨時(shí)更新其功能而無(wú)需客戶端重寫(xiě)代碼。
作者 | Avi Chawla
編譯 | 岳揚(yáng)
最近,關(guān)于模型上下文協(xié)議(MCP)的討論非常熱烈。你一定聽(tīng)說(shuō)過(guò)它。
今天,讓我們一起來(lái)了解一下模型上下文協(xié)議(MCP)。
直觀地說(shuō),MCP 就像 AI 應(yīng)用的 USB-C 接口。
正如 USB-C 為設(shè)備連接各種配件提供了標(biāo)準(zhǔn)化方案,MCP 也將 AI 應(yīng)用連接到不同數(shù)據(jù)源和工具的方式標(biāo)準(zhǔn)化了。
接下來(lái)從技術(shù)角度進(jìn)行深入探討。
MCP 的核心遵循客戶端-服務(wù)器(client-server)架構(gòu),Host 應(yīng)用程序可以連接到多個(gè) Server。
它包含三個(gè)主要組件:
- Host
- Client
- Server
在我們進(jìn)行深入探討之前,先來(lái)了解一下整體架構(gòu)??
Host 代表任何提供 AI 交互環(huán)境、訪問(wèn)外部工具和數(shù)據(jù)源并運(yùn)行 MCP Client 的 AI 應(yīng)用(如 Claude 桌面版、Cursor)。
MCP Client 在 Host 內(nèi)運(yùn)行,實(shí)現(xiàn)與 MCP Servers 的通信。
MCP Server 對(duì)外開(kāi)放特定能力,并提供對(duì)數(shù)據(jù)源的訪問(wèn)權(quán)限,包括:
- Tools:使大語(yǔ)言模型能夠通過(guò)你的 Server 執(zhí)行操作。
- Resources:將 Server 上的數(shù)據(jù)和內(nèi)容開(kāi)放給大語(yǔ)言模型。
- Prompts:創(chuàng)建可復(fù)用的提示詞模板和工作流程。
要構(gòu)建屬于你自己的 MCP 系統(tǒng),理解客戶端-服務(wù)器通信機(jī)制是必不可少的。
現(xiàn)在我們來(lái)解析客戶端與服務(wù)器的通信流程。
本文將對(duì)該過(guò)程進(jìn)行逐步拆解,請(qǐng)看下方這張示意圖...
首先進(jìn)行 Capability Exchange(譯者注:Capability Exchange(能力交換)是一種動(dòng)態(tài)服務(wù)發(fā)現(xiàn)與適配機(jī)制,是MCP連接建立的必經(jīng)步驟,類似于“握手協(xié)議”。),流程如下:
- 客戶端發(fā)送初始請(qǐng)求,獲取服務(wù)器能力信息
- 服務(wù)器返回其能力信息詳情
- 例如當(dāng)天氣 API 服務(wù)器被調(diào)用時(shí),它可以返回可用的“tools”、“prompts templates”及其他資源供客戶端使用
交換完成后,客戶端確認(rèn)連接成功,然后繼續(xù)交換消息。
這種機(jī)制非常強(qiáng)大,原因如下:
在傳統(tǒng)的 API 架構(gòu)中:
- 如果你的 API 最初需要兩個(gè)參數(shù)(例如,天氣服務(wù)的 location 參數(shù)(譯者注:地理位置)和 date 參數(shù)(譯者注:日期)),用戶需嚴(yán)格按此參數(shù)結(jié)構(gòu)構(gòu)建應(yīng)用。
- 之后,如果你決定為該 API 添加第三個(gè)必選參數(shù)(例如,unit參數(shù)(譯者注:溫度單位)),將API “契約”進(jìn)行變更。
- 這意味著該 API 的所有用戶都必須更新代碼,增加對(duì)新參數(shù)的支持,如果未及時(shí)更新,他們的請(qǐng)求可能會(huì)失敗、報(bào)錯(cuò)或提供不完整的結(jié)果。
MCP 的設(shè)計(jì)解決了這個(gè)問(wèn)題,具體方法如下:
- MCP 引入了一種動(dòng)態(tài)、靈活的方法,與傳統(tǒng) API 形成鮮明對(duì)比。
- 當(dāng) Client(例如 Claude Desktop 這類 AI 應(yīng)用)連接 MCP Server(例如天氣服務(wù))時(shí),會(huì)發(fā)送初始請(qǐng)求,以便了解 Server 的能力。
- Server 的響應(yīng)包含可用的 tools、resources、prompts 以及相關(guān)參數(shù)的詳細(xì)信息。例如,若天氣 API 最初僅支持 location 和 date 參數(shù),服務(wù)器會(huì)通過(guò)能力交換告知這些信息。
- 當(dāng)新增 unit 參數(shù)時(shí),MCP Server 可在下次進(jìn)行能力交換時(shí)動(dòng)態(tài)更新能力描述。Client 無(wú)需硬編碼或預(yù)定義參數(shù),只需查詢 Server 的最新能力并自動(dòng)適配。
- 這樣,Client 就能使用更新后的新功能(例如在其請(qǐng)求中包含 unit 參數(shù)),實(shí)時(shí)調(diào)整行為,而無(wú)需重寫(xiě)或重新部署代碼。
希望本文能闡明 MCP 的作用。
后續(xù)我們將探索如何創(chuàng)建自定義的 MCP servers 并圍繞它們構(gòu)建實(shí)踐演示,敬請(qǐng)期待!
Thanks for reading!
Hope you have enjoyed and learned new things from this blog!
END
本期互動(dòng)內(nèi)容 ??
?你認(rèn)為標(biāo)準(zhǔn)化的 MCP 會(huì)加速 AI 創(chuàng)新還是限制創(chuàng)新?為什么?
原文鏈接:
??https://blog.dailydoseofds.com/p/visual-guide-to-model-context-protocol??
