Model Context Protocol MCP 是什麼?一次搞懂它在解決什麼問題
MCP 是一套通用接線標準,讓 AI 應用程式能接上外部的資料與工具。這頁用白話解釋它的三個角色、它提供的三種東西,以及 2026 年這次改版把什麼翻掉了。
依規格修訂版 2026-07-28 撰寫
01 — 一句話
MCP 讓任何 AI 應用程式,用同一種方式接上任何資料來源。
全名 Model Context Protocol,中文常譯作「模型上下文協定」。它由 Anthropic 在 2024 年提出,但從 2025 年 12 月起已經不屬於 Anthropic——協定捐給了 Agentic AI Foundation(Linux Foundation 旗下,與 Block、OpenAI 共同創立),現在由社群治理。
02 — 為什麼需要它
假設有 4 個 AI 應用程式,和 5 個你想接上的東西:Google Drive、GitHub、資料庫、Slack、公司內部 API。
沒有共通協定
4 × 5 = 20
每一組「應用程式 × 資料來源」都要各自寫一次。多一個應用程式就多 5 組,多一個資料來源就多 4 組。
有了共通協定
4 + 5 = 9
每個應用程式實作一次「怎麼當客戶端」,每個資料來源實作一次「怎麼當伺服器」。
這叫 N×M 問題,而 MCP 的全部價值就在這一句:任何 MCP 客戶端都能接上任何 MCP 伺服器。USB 是同一個故事——在它之前,每一種週邊都有自己的接頭。
03 — 三個角色
MCP 裡有三個角色。最多人搞混的是前兩個——大家說「MCP client」的時候,心裡想的通常是 Claude Desktop,但那是 host。
- Host(宿主)
- AI 應用程式本身。Claude Desktop、VS Code、Claude Code 都是 host。它握有模型、握有對話、決定權限。host 就是那個「應用程式」。
- Client(客戶端)
- host 裡面的一個連接器,一個伺服器配一個。它不是應用程式,是應用程式內部的零件。VS Code 同時接兩個伺服器,就有兩個 client。
- Server(伺服器)
- 對外提供工具與資料的程式。可以跑在你自己的機器上,也可以在遠端。它看不到你的對話,也看不到其他伺服器——這是刻意的設計。
04 — 伺服器提供什麼
伺服器提供三種東西。它們的差別不是「讀 vs 寫」——那是最常見的錯誤直覺。
真正的差別是誰決定要不要用它。下面三個情境,每一個的答案都不一樣:
答案:Resource — 由應用程式決定
你把一份文件拖進對話,或是 host 判斷「這個問題需要附上這個檔案」——決定權在應用程式手上,不在模型手上。模型只是收到了那份內容。
常見例子:檔案內容、git 歷史、資料庫 schema。
答案:Tool — 由模型決定
你說「幫我把這個 bug 開成一張票」,模型自己判斷要呼叫哪個功能、帶什麼參數。決定權在模型手上。
關鍵:一個唯讀的查詢也可以是 tool,只要是模型自己決定要不要查。所以「讀 = resource、寫 = tool」是錯的。
答案:Prompt — 由使用者決定
你從選單挑一個「程式碼審查」,或打一個斜線指令。決定權在你手上——模型不會自己跑去用它。
常見例子:斜線指令、範本選單。
├─ 三個情境的差別只有一個:誰按下決定鍵。
05 — 它怎麼傳輸
兩種標準方式:stdio——伺服器是一個子行程,透過標準輸入輸出溝通;與 Streamable HTTP——每則訊息是一個 HTTP POST。這是「怎麼傳」的差別,不是「在哪裡」的差別:一個跑在你自己機器上的伺服器,一樣可以講 Streamable HTTP。
值得知道的是兩者的安全性完全不同:stdio 直接繼承你的使用者權限、沒有驗證層;HTTP 那條需要 OAuth、需要驗證來源。另外,「本機伺服器」指的是「跑在你機器上」,跟它會不會連外網無關——本機伺服器一樣可以去打遠端 API。
06 — 這一版變了什麼
伺服器現在什麼都不記得。
2026-07-28 是 MCP 問世以來最大的一次改版,而且是破壞性的。以前客戶端要先跟伺服器「握手」建立連線,之後雙方記得彼此。現在沒有握手、沒有連線階段——每一個請求都自己帶著版本與身分,伺服器處理完就忘記。
方向也改了:伺服器不會回頭問你問題。它會回一個「我需要這個資訊」然後結束這次請求,由客戶端拿到答案後重新發一次。
你在別處看到這些,代表那份資料已經過期
- ├─
initialize握手 - ├─
Mcp-Session-Id標頭、協定層的 session - ├─ 伺服器主動送出一個請求給客戶端
- └─
ping、logging/setLevel這兩個方法
第三項要講清楚,因為它最容易被誤讀成「伺服器再也不能要東西了」。消失的是「主動送出請求」這個機制,不是伺服器提出要求的能力。以前伺服器可以直接推一個請求過來;現在它只能在回應裡說「我需要這個」然後結束,剩下的由客戶端接手。
所以那些「伺服器向客戶端要東西」的功能都還在,只是換了條路走——包括 Elicitation(跟使用者要一項資訊)與 Sampling(借用 host 的模型;方向與直覺相反,所以特別多人誤解)。
另外一件事跟上面無關:Roots(告訴伺服器你的工作目錄範圍)、Sampling 與 Logging 這三樣被標記為淘汰。它們現在還能用,但別當成現行架構學。淘汰與上面那個機制改變是兩回事:一個講「怎麼傳」,一個講「還要不要留著」。
07 — 本頁對應哪一版
MCP 的版號就是日期。它標示的是「最後一次做出破壞性變更的日子」,不是發布週期。所以你手上任何一份 MCP 資料,看它對應哪個日期就知道新不新——這是這頁最值得你帶走的一件事。
2024-11-05 → 2025-03-26 → 2025-06-18 → 2025-11-25 → 2026-07-28
有時效的說法
- 上一節「這一版變了什麼」只對 2026-07-28 成立。
- 三個被標記淘汰的功能,最早要到 2027-07-28 之後的某一版才會真的移除。
- 協定不再需要連線階段 ≠ 現實中的伺服器都無狀態了。大量已部署的伺服器仍在講舊版,這個落差會持續一段時間。