簡單理解MCP:AI如何使用工具(以天氣/新聞服務為例)
你是否注意到人工智能(AI)助手正變得越來越智能?它們不再僅僅是聊天,還能執行實際操作,比如查詢天氣、在線搜索,甚至預訂會議。這通常涉及到使用外部的“工具”(如API或函數)。
但是,一個AI(比如驅動你最喜歡的聊天應用的那個)是如何可靠地連接并使用由不同開發者創建的各種工具呢?這就是模型上下文協議 (Model content Protocol, MCP) 發揮作用的地方。
MCP解決的問題
想象一下,你試圖將來自不同國家的電器插頭插入你家的墻上插座——你需要各種轉換器,因為它們的插頭標準各不相同!類似地,不同的AI模型和不同的工具提供者可能有各自獨特的“溝通”方式。將它們連接起來可能會變得混亂和復雜。
MCP就像一個通用適配器或一種標準語言。它定義了一套通用的規則,規定了AI模型、你使用的應用程序(客戶端)以及工具提供者(MCP服務器)應該如何交互。
認識參與者
為了理解工作流程,讓我們明確各個角色:
- AI (大語言模型 - LLM): 這是“大腦”(比如來自OpenAI、Anthropic、Google等的模型)。它理解你的請求,并決定是否需要工具來回答。
- MCP 服務器 (MCP Server): 這是“工具箱提供者”。它是一個提供一個或多個工具的服務。在我們的例子中,想象一個“天氣與新聞服務”,它提供獲取天氣預報和新聞頭條的工具。
- 客戶端 (Client): 這是你正在交互的應用程序(例如,一個特殊的聊天界面、一個編碼助手)。它充當中間人,將你和AI連接到MCP服務器(工具箱)。重要的是,通常是你(或應用程序開發者)告訴客戶端應該連接到哪個(或哪些)MCP服務器。 AI不決定使用哪個服務器,只決定使用已連接服務器上的哪個工具。
MCP 工作流程:分步詳解(以天氣/新聞為例)
讓我們來看看當你通過客戶端應用向AI助手提問時,事情是如何運作的,比如問:“明天倫敦的天氣怎么樣?還有,最新的頭條新聞是什么?”
第1步:客戶端連接到MCP服務器
- 首先,你正在使用的客戶端應用程序需要與你(或應用程序)指定的“天氣與新聞服務”MCP服務器建立連接。
- 可以想象成: 把你的應用程序插入天氣與新聞服務指定的端口。MCP定義了如何安全可靠地建立這種連接。
第2步:客戶端發現可用工具
- 一旦連接成功,客戶端會詢問MCP服務器:“嘿,你提供哪些工具?”
- 服務器會按照MCP標準回復一個列表。這個列表包含:
- 工具名稱(例如,
get_weather_forecast
,get_latest_news
)。 - 描述(例如,“為指定城市提供天氣預報”,“獲取當前熱門新聞頭條”)。
- 所需輸入(例如,
get_weather_forecast
需要一個city
名稱)。
- 工具名稱(例如,
- 可以想象成: 閱讀機器上按鈕的標簽,看看每個按鈕是干什么用的。
第3步:客戶端為AI準備請求
- 你在客戶端應用中輸入你的請求:“明天倫敦的天氣怎么樣?還有,最新的頭條新聞是什么?”
- 客戶端接收你的請求,并將其與從天氣與新聞服務器收到的可用工具列表(來自第2步)打包在一起。它將這個完整的包裹發送給AI (LLM)。
第4步:AI決定是否以及如何使用工具
- AI分析你的請求(“倫敦天氣”、“頭條新聞”)。
- 它查看可用的工具(
get_weather_forecast
,get_latest_news
)及其描述。 - 它判斷:
- “要回答天氣部分,我需要
get_weather_forecast
工具,并且city
輸入應該是’倫敦’。” - “要回答新聞部分,我需要
get_latest_news
工具(這個可能不需要特定輸入)。”
- “要回答天氣部分,我需要
- 然后,AI將指令發送回客戶端,大致意思是:“請使用
get_weather_forecast
工具,參數city=倫敦
,并使用get_latest_news
工具。” MCP標準化了AI傳達這個決定的方式。
第5步:客戶端通過MCP執行工具
- 客戶端收到來自AI的指令。
- 然后,它使用標準的MCP格式 (
call_tool
) 向天氣與新聞MCP服務器發出正式請求:- “運行
get_weather_forecast
,輸入city='倫敦'
。” - “運行
get_latest_news
。”
- “運行
- 可以想象成: 客戶端按照AI的指示按下了機器上的特定按鈕。
第6步:MCP服務器運行工具并返回結果
- 天氣與新聞服務器收到
call_tool
請求。 - 它運行其內部邏輯(例如,調用其天氣API合作伙伴、查詢其新聞數據庫)。
- 它收集結果(倫敦的天氣預報詳情、新聞標題列表)。
- 它將這些結果再次按照MCP標準打包,發送回客戶端。
第7步:AI生成最終回答
- 客戶端從服務器收到工具執行的結果(例如,原始天氣數據、新聞文章片段)。
- 它將這些結果發送回AI (LLM)。
- AI結合原始問題和工具結果,為你生成一個最終的、易于理解的回答:
“好的,倫敦明天的天氣預報是部分多云,最高氣溫18℃。最新的頭條新聞包括…”
為什么MCP很重要?
MCP看起來可能有很多來回傳遞,但它的價值是巨大的:
- 標準化 (Standardization): 大家都說同一種語言。客戶端、服務器和LLM都知道如何相互溝通。
- 互操作性 (Interoperability): 你可以輕松地更換不同的AI模型或添加新的工具服務器,而無需從頭開始重建一切。一個為使用MCP而構建的客戶端理論上可以與任何兼容MCP的服務器對話。
- 簡化開發 (Simplicity for Developers): 雖然涉及一些步驟,但擁有一個標準使得開發者能夠更容易地構建可以可靠協作的客戶端和服務器。
本質上,MCP充當了關鍵的管道和線路,使得AI生態系統的不同部分能夠順暢連接和協作,從而實現了我們在現代AI應用中看到的復雜的工具使用能力。它幫助AI從簡單的聊天,進化到能夠真正做事情的階段。