# Model Context Protocol (MCP)
## 什麼是MCP?
* **定義**: 一種由 Anthropic 開發並於 2024 年底推出的開放標準。
* **目的**: 提供標準化、安全、有效的方式,讓大型語言模型 (LLMs) 如 Claude、ChatGPT 等 AI 應用程式,連接和使用外部資料來源、工具和服務。
* **比喻**: AI 應用的「萬用轉接頭」或電腦的 USB 介面。
* **核心價值**: 統一軟體介面,讓不同 AI 模型能與多種外部功能互動,避免為每個服務/模型客製化整合。
## 為什麼需要MCP?
* **LLM 限制**: 依賴訓練資料,無法存取即時資訊、私有資料或執行特定操作(如發郵件)。
* **整合痛點**: 整合外部工具/API 複雜且重複,不同應用/服務商介面標準不一。
* **"M×N 問題"**: M 個 AI 應用和 N 個外部工具,可能需要 M×N 個整合方案。
* **MCP 的解決方案**: 提供通用協定,簡化為 **"M+N 問題"** (開發 N 個 MCP 伺服器 + M 個 MCP 客戶端),減少重複開發,提高互操作性。
## MCP的主要架構
採用客戶端-伺服器架構:
1. **MCP 主機 (MCP Host)**:
* 需要存取外部工具/資料的 AI 應用程式本身。
* 範例:Claude Desktop、整合 AI 的 IDE (如 Cursor)、客製化 AI 代理。
2. **MCP 客戶端 (MCP Client)**:
* 存在於主機應用中的程式碼。
* 負責管理與一個或多個 MCP 伺服器的連接 (通常一對一)。
* 轉發主機請求給伺服器,傳回伺服器回應給主機。
3. **MCP 伺服器 (MCP Server)**:
* 獨立運行的程式。
* 向 AI 系統提供特定外部服務/資料來源的功能。
* 可連接本地/遠端資料庫、API、檔案系統等。
* 根據 MCP 協定處理客戶端請求,回傳資訊/結果。
**互動流程簡述**: Host (AI 模型) -> Client -> Server (執行操作) -> Client -> Host (模型利用結果生成回應)。

## 基本運作流程
1. **Input**: 使用者輸入查詢(Query),這是整個流程的起點。
2. **Select MCP tool**: LLM 根據使用者的查詢判斷需要使用哪個 MCP 工具。
3. **Return MCP tool**: LLM 將所選定的 MCP 工具資訊返回給 MCP Client。
4. **MCP Tool approval**: 系統請求使用者確認是否允許使用該工具(為了避免濫用或敏感操作)。
5. **Request tool call**: MCP Client 轉發請求給 MCP Server,準備進行工具調用。
6. **Invoke MCP tool**: MCP Server 調用實際的 MCP Tool(通常是一個 API 或功能模組)。
7. **Return output**: 工具執行完畢後將結果返回給 MCP Client。
8. **Send output and query to LLM**: MCP Client 將 MCP tool 的輸出結果連同原始查詢一起傳給 LLM,以利生成最終回應。
9. **Generate**: LLM 根據查詢與工具的輸出產生最終回應,提供給使用者。

## 主要優勢
* **即時資料存取**: 連接即時數據源,超越訓練資料限制。
* **個人化與隱私**: 僅在需要時存取特定用戶資訊,最小化資料揭露。
* **降低幻覺**: 將回應建立在事實性外部資料上,減少不準確資訊。
* **簡化開發**: 提供標準化互動方式,降低整合複雜度,一次編寫,多處使用。
* **功能大幅擴展**: 利用外部工具執行更複雜任務 (程式碼分析、財務分析等)。
**與傳統API的主要區別**
| 特性 | MCP | 傳統 API |
| :---------- | :------------------------------------ | :-------------------------------- |
| **整合方式** | 一次整合多個工具 | 通常需為每個服務單獨整合 |
| **互動性** | 更即時、有狀態的互動 | 通常是無狀態的請求-回應模式 |
| **發現能力** | 支援動態探索可用工具/資源 | 通常需手動查閱文件 |
| **擴充性** | "即插即用" 特性,易於新增功能 | 擴充可能需更多整合工作 |
| **安全控制** | 旨在提供跨工具一致的安全控制 | 安全機制可能因 API 而異 |
| **AI 相容性** | 為 AI 設計,支援更動態的互動模式 | 可能更偏向靜態的資料交換 |
| **工具描述** | 協定內可包含工具自我描述,方便 AI 理解 | 通常需要額外的文件說明 |
## 實際應用場景
* **增強 AI 桌面應用程式功能**:
* 透過本地 MCP 伺服器,讓 AI 能直接存取使用者電腦上的資源(e.g. Claude 桌面應用程式)。
* 連接檔案系統伺服器,讓 AI 能回答關於本地檔案的問題 (如:檔案數量)。
* 整合網路搜尋伺服器 (如 Brave 搜尋),讓 AI 能查詢最新資訊。
* **整合到開發工具和 IDE 中**:
* 增強開發工具中 AI 助理的功能,讓開發者在 IDE 內使用 AI。
* 存取專案相關資料來源 (如:Google Drive)。
* 執行程式碼相關操作 (如:在 GitHub 創建分支、查詢程式碼),提供更好的程式碼相關資訊存取。
* **連接 AI 模型與各種外部服務/資料**:
* 標準化 AI 模型與外部世界的互動,讓 Claude、ChatGPT 等 AI 模型能透過統一協定請求使用這些服務和數據。例如: GitHub, Slack, Google Drive, Gmail, Google 日曆等正在開發 MCP 伺服器。
* **作為構建 AI 代理的基礎架構**:
* MCP 可作為 AI 代理的基礎,提供檢索、記憶和工具調用能力,使 AI 能夠更智慧、更彈性地處理複雜任務。
* 支援框架: Firebase Genkit, LangGraph, OpenAI agents sdk 等開始支援 MCP。
* **實現更複雜和實用的任務**:
* 程式碼分析: 連接版本控制系統。
* 財務分析: 使用即時市場數據。
* 圖像/文件分析: 透過專門服務處理。
* 3D 模型自動化: 整合 Claude AI 與 Blender 等工具。
## 如何開始使用和開發
* **使用官方 SDK**: Anthropic 和社群提供多語言 SDK (TypeScript, Python, Java, Kotlin, C#, Rust)。
* **探索現有伺服器**: 尋找符合需求的現成伺服器 (檔案系統, Git, Slack, Brave Search 等)。
* **開發自訂伺服器**: 使用 SDK 為私有資料/特定工具開發自己的 MCP 伺服器。
* **使用支援 MCP 的應用**: 嘗試已支援 MCP 的平台 (Claude Desktop, Cursor, Microsoft Copilot Studio)。
* **參考官方文件/社群**:
* 官方 GitHub: `modelcontextprotocol` (規範、文件、範例)。
* 社群資源: `awesome-mcp-servers` 列表等。
## 未來發展與潛在機會
* **更多產業專用伺服器**: 如醫療、金融、教育等。
* **MCP-as-a-Service**: 提供託管 MCP 連接的商業服務。
* **多公司聯盟與標準化**: 共同推動協定治理,可能成為通用 AI 整合標準。
* **雲端平台廣泛採用**: 主要 AI/雲端服務商增加整合。
* **更強大的工具與基礎設施**: 開發測試、部署、監控 MCP 伺服器的工具。
* **新創事業機會**:
* 開發/銷售熱門服務的 MCP 伺服器。
* 提供 MCP 相關諮詢/整合服務。
* 構建基於 MCP 的創新 AI 應用。
* 可能出現 "MCP 應用商店"。
---
Reference:
https://www.philschmid.de/mcp-introduction
[Model Context Protocol (MCP), clearly explained (why it matters)](https://youtu.be/7j_NE6Pjv-E?si=hSAWOcHcRtE8O2E3)
https://www.bnext.com.tw/article/82706/what-is-mcp