Agent 與 MCP

MCP 是什麼?一次搞懂 AI 應用的萬用接頭

MCP(Model Context Protocol)是一層溝通協定,讓 AI 應用透過標準化的 MCP server 取得外部服務的工具與資料。它把工具定義與執行的負擔,從你的應用移到專門的 MCP server 上,你不必再為每個服務手寫、測試、維護一堆整合程式,接上就能用。
MCP 是什麼?一次搞懂 AI 應用的萬用接頭:文章重點卡

MCP 是什麼?一次搞懂 AI 應用的萬用接頭

你大概已經在很多地方看過 MCP(Model Context Protocol)這個縮寫:Claude 的桌面應用可以接 MCP、各種開發工具可以接 MCP,彷彿什麼都能接。但它到底是什麼?一句話講完:MCP 是一層溝通協定,讓 Claude 拿到外部的脈絡與工具,而你不必再寫一堆瑣碎的整合程式。

這篇文章帶你從一個具體的例子出發,看懂 MCP 解決什麼問題、client 與 server 怎麼分工,以及一個使用者提問從頭到尾的完整旅程。

你將學到什麼

MCP 解決什麼問題

從一個 GitHub 聊天機器人的例子,看整合負擔有多重。

client 與 server 的分工

誰負責溝通、誰負責實作,一張圖看懂。

MCP 與 tool use 的差別

最常見的誤解:兩者互補,但不是同一件事。

一個提問的完整旅程

從使用者提問到 Claude 回答,訊息怎麼流動。

從一個 GitHub 聊天機器人說起

假設你要做一個聊天介面,讓使用者問 Claude 自己的 GitHub 資料,例如「我所有的 repo 裡有哪些還開著的 pull request?」。要回答這種問題,Claude 需要能存取 GitHub API 的工具。

問題來了:GitHub 的功能非常龐大,repo、pull request、issue、project 一路數下去。沒有 MCP 的話,每一項功能你都得自己做一個工具:一份 schema 定義,加一個真正去打 API 的函式。想做出完整的 GitHub 聊天機器人,你得寫出數量驚人的工具,而且每一個都要自己測試、自己維護。

而這還只是一個服務:等你想再接上行事曆、雲端硬碟、內部資料庫,同樣的苦工要再來幾輪,維護負擔跟著服務數量一路往上疊。

核心痛點工具的 schema 與函式本身不難寫,難的是「量」與「維護」。外部服務一改版,所有整合程式都是你的事。

MCP 怎麼解決:把整合的工搬走

MCP 的解法很直接:把工具的定義與執行,從你的伺服器搬到專門的 MCP server 上。你不再自己寫 GitHub 工具,而是接上一個包好 GitHub 功能的 MCP server,裡面的工具早就有人寫好、測好了。

MCP server 的角色,就是外部服務的標準化介面:它把複雜的整合包成可重複使用的元件,任何應用都能接上來用。誰來寫這些 server?任何人都可以。實務上很常見的是服務商自己出官方版本,例如雲端服務商替自家各項服務釋出官方 MCP server。你想接的服務,很可能已經有現成的 server 在等你。

你的應用 MCP client 標準化訊息 MCP server 工具 / 資源 / 提示 實際 API 呼叫 外部服務 GitHub 等
MCP client 說標準化的協定語言,MCP server 負責翻譯成外部服務的實際 API 呼叫。

最常見的誤解:MCP 不等於 tool use

第一次接觸 MCP 的人,十個有九個會問:「這不就是 tool use 嗎?」不是,兩者互補但不同。tool use 講的是 Claude 怎麼呼叫工具;MCP 講的是工具由誰來寫、由誰維護。接上 MCP server,代表 schema 與函式都已經有人幫你完成,打包在 server 裡了。

跟直接呼叫 API 的差別也在這裡:直接打 API,工具定義全部自己來;走 MCP,這些實作工作全部省下。你維護的不再是一大包整合程式,而是一條接向 MCP server 的連線。

那我還需要學 tool use 嗎?需要。Claude 判斷何時呼叫工具、你把結果回填給它,這條迴圈完全不變;MCP 改變的只是工具從哪裡來。一句話總結:tool use 是機制,MCP 是供應鏈。

client 與 server 怎麼講話

你的應用裡負責跟 MCP server 溝通的元件叫 MCP client:它是你通往所有工具的入口,訊息傳遞與協定細節都由它處理。MCP 的一大優點是 transport agnostic:client 與 server 可以用不同的通道溝通。最常見的是兩者跑在同一台機器上,用標準輸入輸出對話;也可以走 HTTP、WebSocket 這類網路協定。

連上之後,兩邊交換的是 MCP 規格定義好的訊息類型,最主要的兩組是:

  • ListToolsRequest / ListToolsResult:client 問 server「你提供哪些工具?」,拿回工具清單。
  • CallToolRequest / CallToolResult:client 請 server 用指定的引數執行某個工具,拿回執行結果。

訊息類型不只這兩組,但九成的互動就靠它們:先問對方有什麼工具,再請對方執行。之後你自己實作 client 時會發現,SDK 早已把這些訊息的組裝與解析包好,你呼叫的只是 list_tools 與 call_tool 這樣的方法。

一個提問的完整旅程

把所有角色串起來,看「我有哪些 repo?」這個問題怎麼流動:

  1. 使用者把問題送進你的應用。
  2. 你的應用透過 MCP client 向 MCP server 要工具清單(ListToolsRequest)。
  3. 你的應用把問題加上工具清單,一起送給 Claude。
  4. Claude 判斷需要呼叫工具,回覆一個 tool use 請求。
  5. 你的應用請 MCP client 執行該工具(CallToolRequest),MCP server 實際去打 GitHub API。
  6. 結果一路回傳:GitHub → MCP server → MCP client → 你的應用。
  7. 你的應用把工具結果補送給 Claude,Claude 整理出最終回答,再由你的應用回給使用者。

步驟看起來多,但每個元件的責任都很清楚:MCP client 把 server 溝通的複雜度收乾淨,你只要專心寫應用邏輯。對使用者來說什麼都沒變,還是問一句話拿一個答案;對你來說,整條工具供應鏈換了人維護。這也是為什麼 MCP 生態一起來,「接工具」就從苦工變成了選型。想再深入,可以逛官方網站 modelcontextprotocol.io

參考出處本文取材自 Anthropic 官方 Claude Academy 免費課程「Introduction to Model Context Protocol」,由酒Ann 消化後以自己的視角重新編寫。想看英文原版課程,可到 Claude Academy 修習。

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

MCP 跟直接呼叫 API 差在哪?
直接呼叫 API 時,工具的 schema 與函式都要自己寫;MCP server 已經把這些定義好、包好,你接上就能用,省下整合與維護的工。
MCP 跟 tool use 是同一件事嗎?
不是。tool use 講的是 Claude 怎麼呼叫工具;MCP 解決的是工具由誰來寫、由誰維護。接上 MCP server,工具早就有人幫你寫好了。
誰在寫 MCP server?
任何人都能寫。實務上很常見的是服務商自己釋出官方 MCP server,把自家功能包成標準化的工具給大家接。
MCP client 跟 server 一定要在同一台機器上嗎?
不一定。MCP 是 transport agnostic 的協定:最常見的是同機用標準輸入輸出溝通,也可以走 HTTP、WebSocket 這類網路協定。