Model Context Protocol, MCP

#agent

「模型上下文協定」不是只為了讓 AI 更會聊天,
而是為了讓 agent 能在真實世界裡 做事、協作、創造價值 的一種協議,讓大家共用

MCP 流程個人筆記.png

MCP (Model Context Protocol) is an open-source standard for connecting AI applications to external systems.


動機

以前的 AI 像「顧問」:只會回答,不會操作。

  1. 自己手動串接每個 API
    與其他應用接口連線,包含查資料、看日曆、存取資料庫
  2. 每個模型(OpenAI、Anthropic…)都要不同格式
  3. 工程師只能「一個一個」寫接口,把 AI 綁到某個 API、某個工具

→ 成本高、難維護、還容易幻覺


Function Calling(工具時代的開端)

為了讓 AI「用工具」,各家模型開始支援:

→ AI 從「說話」升級成「能呼叫 API」但每家格式不同 → 出現痛點:


Tools / Plugins(多樣但混亂)

為了解決「每次都要重寫 API 整合」的問題,
各家模型推出自己的 插件(plugin / tool)生態系

每個平台都設計自己的「工具描述格式」,例如:

→ 聽起來強大,但實際上「各自為政」,結果導致:

  1. 碎片化生態
    • 每家插件格式不同,開發者要為不同平台重寫一次。
    • 例:同一個「天氣查詢」功能,要做成三個版本:OpenAI、Claude、Gemini。
  2. 安全與授權難統一
    • 各平台的 OAuth 機制不相容,無法集中控管。
    • 缺乏統一審計與使用者授權記錄。
  3. 維護成噩夢
    • 工具版本更新後容易壞;測試流程冗長。
    • 不同平台的 SDK、API 改動頻繁,開發者疲於追版本。
  4. 缺乏跨平台協作
    • Plugin 無法在不同模型間共用(Claude 無法用 ChatGPT plugin)。
    • 工具之間無上下文共享能力。

MCP

MCP 想做的事:
要有一個所有模型都聽得懂的語言, 能讓 AI 自動發現、呼叫、驗證外部工具
把「AI 使用外部工具」這件事,標準化

讓任何支援 MCP 的模型都能:

→ 「一次串好,所有模型都能用」


架構角色(Host / Client / Server)

MCP 的世界裡,一共有三個角色,負責「誰控制誰、誰執行誰」

使用者 → Host → Client → Server → Client → Host → 回覆使用者

Host(主機)

例如:Claude 桌面版、Cursor 編輯器、VSCode 插件、或 ChatGPT App

它負責:

Host 通常內建一個 MCP client,幫 AI 跟外界對話
→ 使用者直接互動的 AI 應用本體

Client(客戶端)

Host 與 Server 之間的「中介層」,負責通訊與轉譯
是 MCP 的「橋樑角色」

任務:

  1. 接收模型的工具呼叫(例如:get_weather(city="Taipei")
  2. 用 MCP 規範的格式發送給 Server(可能是 JSON-RPC、SSE、HTTP Stream)
  3. 收到回傳結果後,再送回 Host → 由模型整合進回覆

→ 讓指令與資料在模型 ↔ 工具之間安全流動

Server(伺服器)

實際連接外部系統的程式/API,負責執行具體任務、回傳結果給 Client

MCP server 會:


傳輸協定(Transport Protocols)

MCP 並不是綁死在單一網路協定上,而是提供多種「Host ↔ Server 溝通管道」方式,不同協定適合不同場景(本地開發、雲端整合、即時串流)

Stdio(Standard Input / Output)

最早期、也是最穩定的 MCP 傳輸方式
常用於「本地工具或 CLI 程式」與模型互通

原理,利用作業系統提供的三個資料流:

0 → stdin(輸入)
1 → stdout(輸出)
2 → stderr(錯誤)

Host 啟動 MCP server 時,互相傳送 JSON

SSE(Server-Sent Events)

Server 單向推送協定(HTTP-based streaming)
由瀏覽器時代的 EventSource API 延伸而來

原理:

優點:


Streamable HTTP(新式傳輸方式)

MCP 近期升級版本的主流選擇。
是對 SSE (Server-Sent Events) 的進化版,採「可雙向流式傳輸」的 HTTP 通訊模式
因為有些缺點:

原理:


協定類型 資料方向 即時性 跨平台 適用場景 備註
Stdio 雙向(本機) ★★ 本地 Agent、IDE 穩定、低延遲
SSE 單向(Server → Host) ★★★ 雲端串流回覆 Web 最常見
Streamable HTTP 雙向(全雙工) ★★★★ ✅✅ 跨系統 Agent、長任務 新標準、支援二進位

為什麼產生(動機)

以前的 AI 就是「會說話但不會動手的顧問」

  1. 與其他應用接口連線,包含查資料、看日曆、存取資料庫
  2. 工程師只能「一個一個」寫接口,把 AI 綁到某個 API、某個工具

所以 Function Calling 出現了,提供了不同的參數、模型、微調選擇
最重要的是讓模型有使用工具的能力! → Tools

這些 Tools 會透過 JSON 的方式和模型溝通
但是!各家廠商的格式不同會導致開發成本提升,或是無法自由切換,結果就是:

MCP 出現:它就是要蓋一條「標準化的大橋」,讓所有 AI 都能用同樣的方式安全走出去,接觸外部世界,產生的理由可能包含:


總結

MCP 帶來的價值

挑戰與注意

小補充


其他

Screenshot 2025-10-20 at 11.52.31 PM.png
所有 client→server 請求都必須「驗證誰、並授權能做什麼」。


mcp是什麼?mcp server是什麼?mcp中文、意思、實例一次看懂|數位時代 BusinessNext

每日AI小知识:Function calling与MCP详解,它们有什么区别?_哔哩哔哩_bilibili

Powered by Forestry.md