圖解|MCP 與你上班每天用的API有啥不一樣?
“模型上下文協(xié)議”(MCP)出來(lái)應(yīng)該有一年了,今天我們來(lái)簡(jiǎn)單看看它到底是個(gè)什么"東西”。
以下內(nèi)容都翻譯自:https://blog.dailydoseofds.com/p/visual-guide-to-model-context-protocol 為了閱讀順暢略有修改。
MCP它不是個(gè)"東西",呃,好像也不能這么說(shuō),簡(jiǎn)單來(lái)說(shuō),MCP 就像是你的 AI 應(yīng)用的 USB-C 接口。USB-C 為各種設(shè)備和配件提供了標(biāo)準(zhǔn)的連接方式,讓配件能連上電腦等設(shè)備,而 MCP 也一樣,它為你的 AI 應(yīng)用連接不同的數(shù)據(jù)源和工具(比如數(shù)據(jù)庫(kù)、API、本地文件等)提供了一套標(biāo)準(zhǔn)化的方法。
img
從技術(shù)層面深入一點(diǎn)看,MCP 的核心是一種客戶端-服務(wù)器(client-server)架構(gòu),在這種架構(gòu)下,一個(gè)主應(yīng)用程序可以連接到多個(gè)不同的服務(wù)器。
核心組件
它主要由三個(gè)關(guān)鍵部分組成:
- 主機(jī) (Host)
 - 客戶端 (Client)
 - 服務(wù)器 (Server)
 
在我們深入之前,先看一張總覽圖:
img
主機(jī) (Host):代表任何一個(gè) AI 應(yīng)用(比如 Claude 客戶端、Cursor 等)。它為 AI 的交互提供了運(yùn)行環(huán)境,能夠訪問(wèn)工具和數(shù)據(jù),并且運(yùn)行著 MCP 客戶端。
MCP 客戶端 (Client):在主機(jī)內(nèi)部運(yùn)行,主要負(fù)責(zé)和 MCP 服務(wù)器進(jìn)行溝通。
img
最后,MCP 服務(wù)器 (Server)暴露特定的能力,并提供對(duì)如下數(shù)據(jù)的訪問(wèn):
img
- 工具 (Tools):讓大語(yǔ)言模型(LLM)能通過(guò)你的服務(wù)器來(lái)執(zhí)行某些動(dòng)作。
 - 資源 (Resources):把你服務(wù)器上的數(shù)據(jù)和內(nèi)容開(kāi)放給大語(yǔ)言模型使用。
 - 提示詞 (Prompts):創(chuàng)建可以重復(fù)使用的提示詞模板和工作流。
 
MCP的客戶端與服務(wù)器如何溝通?
要自己搭建 MCP 服務(wù),理解MCP客戶端和服務(wù)器之間的溝通方式至關(guān)重要。
我們先來(lái)看一張示意圖,然后再一步步拆解:
img
首先,我們進(jìn)行**能力交換 (capability exchange)**,過(guò)程如下:
- 客戶端發(fā)送一個(gè)初始請(qǐng)求,以了解服務(wù)器的能力。
 - 服務(wù)器隨后會(huì)用其能力詳情進(jìn)行響應(yīng)。
 - 例如,一個(gè)天氣 API 服務(wù)器在被調(diào)用時(shí),可以回復(fù)其擁有的可用“工具”、“提示模板”以及任何其他可供客戶端使用的資源。
 
一旦這個(gè)交換完成,客戶端會(huì)確認(rèn)連接成功,然后進(jìn)一步的消息交換將繼續(xù)進(jìn)行。
這就是這種設(shè)置如此強(qiáng)大的原因之一。
在傳統(tǒng)的 API 設(shè)置中:
如果你的 API 最初需要兩個(gè)參數(shù)(例如,提供天氣信息的服務(wù)端API需要 location 和 date兩個(gè)參數(shù)),用戶會(huì)在集成API的應(yīng)用程序中用這兩個(gè)確切的參數(shù)來(lái)發(fā)送請(qǐng)求來(lái)獲取天氣信息。
后來(lái),如果你決定增加第三個(gè)必填的參數(shù)(例如,unit 用于表示溫度單位,如攝氏度或華氏度),此時(shí)API 的定義就發(fā)生了改變。
這意味著所有使用你 API 的用戶都必須更新他們的代碼以包含這個(gè)新參數(shù)。如果他們不更新,他們的請(qǐng)求可能會(huì)失敗、返回錯(cuò)誤或提供不完整的結(jié)果。
MCP 的設(shè)計(jì)通過(guò)以下方式解決了這個(gè)問(wèn)題:
- MCP 引入了一種動(dòng)態(tài)且靈活的方法,這與傳統(tǒng) API 的方式形成鮮明對(duì)比。
 - 例如,當(dāng)一個(gè)客戶端(例如像 Claude 桌面版這樣的 AI 應(yīng)用)連接到一個(gè) MCP 服務(wù)器(例如你的天氣服務(wù))時(shí),它會(huì)發(fā)送一個(gè)初始請(qǐng)求來(lái)了解服務(wù)器的能力。
 - 服務(wù)器會(huì)響應(yīng)其可用工具、資源、提示和參數(shù)的詳細(xì)信息。例如,如果你的天氣 API 最初支持 location 和 date,服務(wù)器會(huì)在其能力中傳達(dá)這些信息。
 
圖片
如果你之后添加了一個(gè) unit 參數(shù),MCP 服務(wù)器可以在下一次交換中動(dòng)態(tài)地更新其能力描述。客戶端不需要硬編碼或預(yù)定義這些參數(shù)——它只需查詢服務(wù)器當(dāng)前的能力并相應(yīng)地進(jìn)行調(diào)整。
圖片
通過(guò)這種方式,客戶端可以動(dòng)態(tài)地調(diào)整其行為,使用更新后的能力(例如,在請(qǐng)求中包含 unit),而無(wú)需重寫(xiě)或重新部署代碼。
這就是MCP與傳統(tǒng)API的差異,后面有時(shí)間了再跟大家分享MCP的使用場(chǎng)景,還有如何創(chuàng)建自定義的 MCP 服務(wù)器。















 
 
 





 
 
 
 