MCP 架構(gòu)設(shè)計深度剖析 原創(chuàng)
在本文中,我將從使用者的角度出發(fā),分享關(guān)于 MCP(Model Context Protocol,模型上下文協(xié)議)的實用內(nèi)容,本文旨在回答以下5個核心問題:
- 什么是 MCP?
- 為什么需要 MCP?
- 作為用戶,我們?nèi)绾问褂?開發(fā) MCP?
- MCP 架構(gòu)設(shè)計剖析
- MCP 運作機制剖析
1、什么是 MCP?
MCP(Model Context Protocol,模型上下文協(xié)議)的起源可以追溯到2024年11月25日,Anthropic在其發(fā)布的文章《Introducing the Model Context Protocol》中首次提出了這一概念。
MCP 定義了應(yīng)用程序和 AI 大模型之間交換上下文信息的方式,為開發(fā)者提供了一種一致的方法,將各種數(shù)據(jù)源、工具和功能連接到 AI 大模型。這就好比 USB-C 接口,讓不同設(shè)備能夠通過相同的接口連接,MCP 旨在成為 AI 領(lǐng)域的通用標(biāo)準(zhǔn),簡化和統(tǒng)一 AI 應(yīng)用程序的開發(fā)與集成。
為了更直觀地理解 MCP,以下是一些精心制作的 MCP 架構(gòu),它們能夠幫助我們更好地把握 MCP 的核心概念。
從圖中可以看出,MCP 以一種更標(biāo)準(zhǔn)的方式讓 LLM(大語言模型)能夠使用不同的工具。以下是一個更簡單的可視化示例,它將幫助你更好地理解“中間協(xié)議層”的概念。
Anthropic 的目標(biāo)是實現(xiàn) LLM Tool Call 的標(biāo)準(zhǔn),而 MCP 正是這一目標(biāo)的關(guān)鍵組成部分。通過 MCP,開發(fā)者可以更高效地構(gòu)建和部署 AI 應(yīng)用,同時確保不同工具和模型之間的互操作性。
2、為什么需要 MCP?
我認(rèn)為 MCP 的出現(xiàn)是 Prompt Engineering(提示詞工程)發(fā)展的必然產(chǎn)物。隨著 AI 大模型技術(shù)的不斷進(jìn)步,我們逐漸認(rèn)識到,為大模型提供更結(jié)構(gòu)化、更具體的上下文信息,能夠顯著提升模型的性能。在實際應(yīng)用中,我們希望大模型能夠理解真實場景中的問題,這就需要向大模型提供一些特定的信息,比如:本地文件、數(shù)據(jù)庫內(nèi)容、網(wǎng)絡(luò)實時信息等。
在 MCP 出現(xiàn)之前,我們通常會手動從數(shù)據(jù)庫中篩選或使用工具檢索可能需要的信息,然后手動將這些信息粘貼到 Prompt 提示詞中。隨著問題的復(fù)雜性不斷增加,這種手工處理信息并將其引入提示詞的方式變得越來越困難。
為了克服手工提示詞的局限性,許多 LLM 平臺(比如:OpenAI、Google)引入了 Function Calling(函數(shù)調(diào)用)功能。這一機制允許大模型在需要時調(diào)用預(yù)定義的函數(shù)來獲取數(shù)據(jù)或執(zhí)行操作,顯著提升了自動化水平。然而,F(xiàn)unction Calling 也存在一些局限性。我認(rèn)為,F(xiàn)unction Call 的主要問題是平臺依賴性強,不同 LLM 平臺的 Function Calling API 實現(xiàn)差異較大。比如:OpenAI 的函數(shù)調(diào)用方式與 Google 的不兼容,開發(fā)者在切換大模型時需要重寫代碼,增加了適配成本。除此之外,還有安全性、交互性等問題。
數(shù)據(jù)和工具本身是客觀存在的,我們希望將數(shù)據(jù)連接到大模型的環(huán)節(jié)可以更智能、更統(tǒng)一。Anthropic 基于這樣的痛點設(shè)計了 MCP,使其成為 AI 大模型的“萬能轉(zhuǎn)接頭”,讓 LLM 能夠輕松獲取數(shù)據(jù)或調(diào)用工具。MCP 的具體優(yōu)勢如下:
- 豐富的生態(tài):MCP 提供了許多現(xiàn)成的插件,你的 AI 應(yīng)用可以直接使用。
- 高度的統(tǒng)一性:MCP 不限制于特定的 AI 大模型,任何支持 MCP 的大模型都可以靈活切換。
- 數(shù)據(jù)安全保障:你的敏感數(shù)據(jù)可以保留在本地,不必全部上傳,因為我們可以自行設(shè)計接口,確定傳輸哪些數(shù)據(jù)。
通過這些優(yōu)勢,MCP 不僅提升了 AI 應(yīng)用的開發(fā)效率,還增強了數(shù)據(jù)的安全性和模型的靈活性。
3、用戶如何使用 MCP?
對于大多數(shù)用戶而言,MCP 的具體實現(xiàn)細(xì)節(jié)并非關(guān)注重點,大家更關(guān)心的是如何能夠更便捷地利用這一特性來提升工作效率和應(yīng)用體驗。
具體的使用方法可以參考官方文檔:For Claude Desktop Users。在完成配置后,你可以在 Claude 中進(jìn)行測試,比如:嘗試提問:“Can you write a poem and save it to my desktop?”(你能寫一首詩并保存到我的桌面嗎?)Claude 會請求你的權(quán)限,隨后在本地新建一個文件。
此外,官方提供了大量現(xiàn)成的 MCP Servers,用戶只需選擇希望接入的工具并完成接入即可。以下是一些官方推薦的資源:
1.Awesome MCP Servers
2.MCP Servers Website
3.Official MCP Servers
以官方介紹的 filesystem 工具為例,它允許 Claude 像操作本地文件系統(tǒng)一樣讀取和寫入文件,極大地擴展了 AI 應(yīng)用的功能和應(yīng)用場景。
4、MCP 架構(gòu)設(shè)計剖析
第一、MCP 的架構(gòu)設(shè)計如下圖所示:
MCP 架構(gòu)設(shè)計由三個核心組件構(gòu)成:Host、Clien t和 Server。接下來,我們通過一個實際場景來理解這些組件是如何協(xié)同工作的。
假設(shè)你正在使用 Claude Desktop (Host),并詢問:“我桌面上有哪些文檔?”
1.MCP Host
- 角色:Claude Desktop 作為 Host,負(fù)責(zé)接收你的提問并與 Claude 大模型進(jìn)行交互。
- 功能:Host 是用戶與 AI 大模型之間的橋梁,它處理用戶的輸入并調(diào)用 AI 大模型進(jìn)行處理。
2.MCP Client
- 角色:當(dāng) Claude 大模型決定需要訪問你的文件系統(tǒng)時,Host 中內(nèi)置的 MCP Client 會被激活。
- 功能:MCP Client 負(fù)責(zé)與適當(dāng)?shù)?MCP Server 建立連接,將大模型的需求轉(zhuǎn)化為具體的工具調(diào)用請求。
3.MCP Server
- 角色:在這個例子中,文件系統(tǒng) MCP Server 會被調(diào)用。
- 功能:MCP Serve r負(fù)責(zé)執(zhí)行實際的文件掃描操作,訪問你的桌面目錄,并返回找到的文檔列表。
第二、MCP 整個流程如下:
- 用戶提問:你的問題 → Claude Desktop (Host) → Claude 大模型。
模型決策:Claude模型決定需要文件信息。
- MCP Client 調(diào)用:MCP Client 連接到文件系統(tǒng) MCP Server。
- MCP Server 執(zhí)行:文件系統(tǒng) MCP Server 執(zhí)行操作,掃描桌面目錄。
- 返回結(jié)果:文件系統(tǒng) MCP Server 返回文檔列表。
- 生成回答:Claude 大模型生成回答。
- 顯示結(jié)果:回答顯示在 Claude Desktop 上。
第三、MCP 架構(gòu)設(shè)計的優(yōu)勢如下:
MCP 這種架構(gòu)設(shè)計使得 Claude 能夠在不同場景下靈活調(diào)用各種工具和數(shù)據(jù)源。開發(fā)者只需專注于開發(fā)對應(yīng)的 MCP Server,無需關(guān)心 Host 和 Client 的實現(xiàn)細(xì)節(jié)。這不僅提高了開發(fā)效率,還增強了系統(tǒng)的靈活性和可擴展性。
通過 MCP,開發(fā)者可以輕松地將各種工具和數(shù)據(jù)源集成到 AI 應(yīng)用中,而用戶則可以享受到更加智能和便捷的交互體驗。
5、MCP 運作機制剖析
要真正理解 MCP,我們需要深入其運作機制,這不僅能揭示 MCP 調(diào)用方式與傳統(tǒng) HTTP 調(diào)用方式的差異,還能讓你明白為何 MCP 能夠助力 AI Agent 邁向第二階段。
以開發(fā)一個獲取時間的 AI Agent 為例,用戶只需提問“現(xiàn)在幾點了?”即可。假設(shè)我們已有一個處理時間的 MCP Server,其中包含兩個 MCP Tool:一個用于獲取當(dāng)前時區(qū),另一個用于獲取當(dāng)前時間。
基于 MCP 的調(diào)用過程分為六個核心步驟:
第一、用戶提問
- 用戶向 AI Agent 提問“現(xiàn)在幾點了?”。此時,AI Agent 作為 MCP Client,將用戶問題連同處理時間的 MCP Server 及 MCP Tool 信息一并發(fā)送給 LLM。
第二、LLM 推理
- LLM 接收到信息后,根據(jù)用戶問題和 MCP Server 信息,篩選出最合適的 MCP Server 和 MCP Tool 來解決問題,并將結(jié)果反饋給 AI Agent(MCP Client)。LLM 返回的信息可能是:“使用 time MCP Server 中的 get_current_time MCP Tool,它能解決用戶的問題。”
第三、調(diào)用 MCP Tool
- AI Agent(MCP Client)依據(jù) LLM 的建議,調(diào)用 time MCP Server 中的 get_current_time MCP Tool,獲取當(dāng)前時間。
第四、返回結(jié)果
- time MCP Server 將當(dāng)前時間的結(jié)果返回給 AI Agent(MCP Client)。
第五、內(nèi)容規(guī)整
- AI Agent(MCP Client)將用戶問題和從 time MCP Server 獲取的結(jié)果再次提交給 LLM,請求 LLM 結(jié)合問題和答案規(guī)整內(nèi)容。
第六、最終反饋
- LLM 將規(guī)整后的內(nèi)容返回給 AI Agent(MCP Client),AI Agent 再將結(jié)果原封不動地返回給用戶。
在整個 MCP 調(diào)用過程中,MCP Server 及 MCP Tool 的信息至關(guān)重要。從第一步和第二步可以看出,這些信息為 LLM 提供了解決問題的關(guān)鍵線索。這些信息本質(zhì)上就是 MCP 中的 System Prompt,其核心作用是為 LLM 提供清晰的指導(dǎo),幫助其更好地理解用戶需求并選擇合適的工具來解決問題。
6、MCP 總結(jié)
MCP(Model Context Protocol)的出現(xiàn)標(biāo)志著 AI 應(yīng)用與外部工具和數(shù)據(jù)交互標(biāo)準(zhǔn)的建立。通過本文的探討,我們可以總結(jié)出以下幾點關(guān)鍵信息:
第一、MCP 的本質(zhì):它是一種統(tǒng)一的協(xié)議標(biāo)準(zhǔn),允許 AI 大模型以一種標(biāo)準(zhǔn)化的方式連接到各種數(shù)據(jù)源和工具。這就好比 AI 領(lǐng)域的“USB-C”接口,為不同設(shè)備之間的連接提供了通用的解決方案。
第二、MCP 的價值:它解決了傳統(tǒng)函數(shù)調(diào)用(Function Calling)所面臨的平臺依賴性問題,提供了一種更加統(tǒng)一、開放、安全且靈活的工具調(diào)用機制。無論是用戶還是開發(fā)者,都能從這種機制中獲益。
第三、使用與開發(fā):對于普通用戶而言,MCP 提供了豐富的現(xiàn)成工具,用戶無需深入了解任何技術(shù)細(xì)節(jié)即可使用這些工具。而對于開發(fā)者來說,MCP 提供了清晰的架構(gòu)和 SDK,使得工具的開發(fā)變得更加簡單。
盡管 MCP 目前仍處于發(fā)展的初級階段,但其潛力無疑是巨大的。更重要的是,基于統(tǒng)一標(biāo)準(zhǔn)構(gòu)建的生態(tài)系統(tǒng)將對整個 AI 大模型領(lǐng)域的發(fā)展產(chǎn)生積極的推動作用。
本文轉(zhuǎn)載自公眾號玄姐聊AGI 作者:玄姐
原文鏈接:??https://mp.weixin.qq.com/s/V6nto57O8ZD48ig8pq-iPQ??
