使用 ChatGPT 或 Claude 時,總會有些不盡人意的時刻。模型很聰明,卻看不到我的資料庫,也讀不了公司內部 Wiki。
因此,大家開始直接串接 API。但不同模型和工具的整合方式各不相同,組合越多,整合程式碼就會呈指數成長。
MCP(Model Context Protocol)就是為了解決這個問題而出現的標準。簡單說,它是將外部工具與資料接入 AI 模型的通用規格,常被稱為「AI 界的 USB-C」。
本文將整理 MCP 究竟解決了什麼問題、導入前後的整合工作有何差異、內部結構與 function calling 的不同,以及現在值得立即接上的代表性伺服器。
先來看看重點摘要。
- MCP 是連接 AI 與外部工具的開放標準協定(Anthropic 於 2024 年 11 月公開)。
- 直接整合需要數百行程式碼的工作,有了 MCP 伺服器後只要幾行設定即可完成。
- 它不是取代 function calling,而是在其上方標準化並重複使用工具的一層。
- OpenAI 與 Google 也採用後,MCP 實際上已成為業界標準,伺服器生態系正快速成長。
MCP 解決的問題:M×N 整合地獄
先看看 MCP 出現以前的情況。
如果有 M 個 AI 應用程式,以及 N 個想連接的工具,就需要 M×N 份整合程式碼。Claude、ChatGPT、Cursor 的 GitHub 整合都必須分別製作。
MCP 在兩者之間加入標準規格。工具端只要製作一次 MCP 伺服器,AI 應用程式端只要實作一次 MCP 用戶端即可。M×N 變成 M+N。
想想 USB-C 出現前,每台裝置都要攜帶不同充電線的日子就很清楚了。MCP 統一的就是這套線材規格。
不過只看 M+N 之類的公式,可能還是很難感受差異。實際用兩種方式製作同一項功能,差別就會很明顯。
同一項功能:導入前後比較
假設要製作一個「查詢 GitHub Issue 並回答問題的 AI」。
在 MCP 之前,以下工作全都得由自己負責。
- 定義工具結構描述:直接以 JSON 結構描述撰寫「list_issues 接收 owner、repo、state」。
- 撰寫實際呼叫程式碼:GitHub REST API 用戶端、權杖管理、分頁處理。
- 實作執行迴圈:模型呼叫工具後接收結果,再回傳給模型的往返程式碼。
- 在每個應用程式中重複上述工作:Claude 整合一份,公司內部聊天機器人再一份。
光是查詢 Issue,加上樣板程式碼就要數百行;每增加工具,就要重複 1~3 次。
有了 MCP,只要這樣就完成。
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
}
}
}
結構描述、API 呼叫、驗證與錯誤處理都已內建於伺服器中。我只要註冊伺服器,然後說「請摘要這個儲存庫最近的錯誤 Issue」。
| 項目 | 直接整合 | 使用 MCP 伺服器 |
|---|---|---|
| 撰寫的程式碼 | 結構描述、呼叫與迴圈數百行 | 5 行設定 |
| 驗證與錯誤處理 | 自行實作 | 內建於伺服器 |
| 新增其他 AI 應用程式 | 從頭重做 | 重複使用相同伺服器 |
| 新增工具 | 修改程式碼並重新部署 | 只需更新伺服器 |
最後一列尤其重要。即使伺服器新增功能,我這邊的程式碼也完全不用變,這就是標準化的力量。
內部結構:主機、用戶端與伺服器
MCP 有三個角色。
| 組成元件 | 角色 | 範例 |
|---|---|---|
| 主機 | 使用者使用的 AI 應用程式 | Claude Desktop, Cursor |
| 用戶端 | 在主機內與伺服器一對一通訊 | 內建於主機 |
| 伺服器 | 公開工具與資料的程式 | GitHub 伺服器、資料庫伺服器 |
一個主機可以啟動多個用戶端,而每個用戶端連接一個伺服器。通訊規格是 JSON-RPC 2.0;本機程序使用 stdio,遠端則使用 HTTP 串流。
伺服器公開的功能分為三類。
- 工具(tools):模型呼叫的函式,例如「建立 Issue」、「執行查詢」。
- 資源(resources):模型讀取的資料,例如檔案內容與資料庫結構描述。
- 提示(prompts):伺服器預先準備的提示範本。
重點在於執行階段才查詢工具清單。用戶端連接伺服器後會問「你能做什麼?」,伺服器則回傳工具清單與結構描述。這就是伺服器更新後,我的程式碼仍可維持不變的原因。
它和 function calling 有什麼不同?
讀到這裡,你可能會想:「這不是早就能用 function calling 做到了嗎?」
兩者位於不同層。function calling 是與模型對話的規約,也就是「模型,這些函式可用,需要時請以呼叫格式回覆」的約定。函式如何實作、從哪裡取得,完全由開發者負責。
MCP 是發布與重複使用這些函式的規約。它把工具實作、驗證與文件包成伺服器套件,讓任何 AI 應用程式都能接上使用。
如果說 function calling 是「函式呼叫語法」,MCP 就是「容納函式的函式庫生態系」。實際上,MCP 用戶端在內部仍直接使用 function calling。兩者不是替代關係,而是上下層關係。
因此,「function calling 和 MCP 該用哪個?」本身不是成立的問題。只在單一應用程式使用幾個函式時,直接實作 function calling 就足夠;若要在多個應用程式中重複使用,或採用他人製作的工具,就該用 MCP。
現在值得立即接上的代表性伺服器
生態系成長快速,常見工具大多已經有對應伺服器。這裡挑出五個反應良好的選項。
| 伺服器 | 可以做什麼 |
|---|---|
| Playwright | AI 直接操作瀏覽器:點擊、輸入、截圖 |
| Figma | 讀取設計稿並轉換成前端程式碼 |
| Notion | 搜尋與整理文件、會議記錄,並建立頁面 |
| GitHub | 查詢與建立 Issue、PR,並搜尋程式碼 |
| Supabase(Postgres) | 以自然語言查詢資料庫並掌握結構描述 |
如果只能選一個,我會選 Playwright。接上後試著說:「進入這個網站,填寫註冊表單並截圖。」看到 AI 開啟瀏覽器、實際點擊並輸入後,就不必再解釋工具連線為何會改變遊戲規則。它也能立即用於 E2E 測試自動化與重複性的網頁工作。
對前端開發者來說,Figma 也很有感。過去需要看著設計稿手動轉寫標記的工作,會變成對能直接讀取設計稿的 AI 說:「把這個框架做成 React 元件。」
注意事項與限制
它不是萬靈丹。以下也整理實務上可能遇到的問題。
首先是安全性。MCP 伺服器是授予模型執行權限的通道,因此接上不可信的伺服器,可能因提示注入而造成資料外洩。最安全的做法是只使用官方登錄庫或經驗證的伺服器。
還有上下文成本。連接越多伺服器,工具定義就越會佔用上下文視窗,反而可能降低模型效能。就像表格中所示,只連接目前需要的工具會更好。
收尾
MCP 不是讓「模型變得更聰明」的技術,而是將「模型能伸手觸及的範圍」標準化。把直接整合需要數百行程式碼的工作變成幾行設定,以及建立能直接接上他人製作工具的生態系,這兩點就是核心。
下一篇文章將整理經常與 MCP 比較的 Claude Code Skill,以及子代理程式各自扮演的角色。

![[MCP·Skill #1] 什麼是 MCP 伺服器?從連線方式到安全性注意事項 封面圖](/assets/images/posts/45e71f91-f21d-492e-a6da-e0ffc8d4af18/1.jpg)