---
title: "MCP 是什麼？模型上下文協定架構白話解說 | TauX"
description: "MCP（Model Context Protocol）讓 AI 應用程式接上外部資料與工具。白話解釋 host、client、server 三個角色，以及 prompts、resources、tools 的差別在於「誰決定」而不是讀或寫。依規格修訂版 2026-07-28 撰寫。"
url: "https://taux.io/zh-Hant-TW/what-is-mcp"
locale: "zh-Hant-TW"
alternates:
  en-US: "https://taux.io/en-US/what-is-mcp"
  ja-JP: "https://taux.io/ja-JP/what-is-mcp"
  ko-KR: "https://taux.io/ko-KR/what-is-mcp"
  zh-Hans-CN: "https://taux.io/zh-Hans-CN/what-is-mcp"
---

# 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。 

client 在 host **裡面**，一個伺服器配一個。箭頭一律從 client 出發。 

Host（宿主）

AI 應用程式本身。Claude Desktop、VS Code、Claude Code 都是 host。它握有模型、握有對話、決定權限。**host 就是那個「應用程式」**。

Client（客戶端）

host **裡面**的一個連接器，一個伺服器配一個。它不是應用程式，是應用程式內部的零件。VS Code 同時接兩個伺服器，就有兩個 client。

Server（伺服器）

對外提供工具與資料的程式。可以跑在你自己的機器上，也可以在遠端。它**看不到你的對話，也看不到其他伺服器**——這是刻意的設計。

## 04 — 伺服器提供什麼

伺服器提供三種東西。它們的差別**不是**「讀 vs 寫」——那是最常見的錯誤直覺。 

真正的差別是**誰決定要不要用它**。下面三個情境，每一個的答案都不一樣： 

 我想讓 AI 讀我的檔案 我想讓 AI 幫我開一張票 我想用現成的審查流程 

答案：**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 之後的某一版才會真的移除。
*   **協定不再需要連線階段 ≠ 現實中的伺服器都無狀態了**。大量已部署的伺服器仍在講舊版，這個落差會持續一段時間。

接下來

*   [想知道怎麼實際用它做事 → Claude Skills 實戰指南](https://taux.io/zh-Hant-TW/claude-skills-guide)
*   [另一個 AI 時代的新標準 → LLMs.txt 是什麼](https://taux.io/zh-Hant-TW/what-is-llms-txt)
