規格說明
Model Context Protocol (MCP) 是一個開放的協定,它能夠讓 LLM 應用程式與外部資料來源和工具之間進行無縫整合。無論您是要開發 AI 驅動的 IDE、增強聊天介面,或是建立自訂的 AI 工作流程,MCP 都提供了一種標準化的方式來連接 LLM 與它們所需要的情境脈絡。
這份規格說明定義了權威的協定需求,基於 schema.ts 中的 TypeScript 結構描述。
如需實作指南和範例,請造訪 modelcontextprotocol.io。
本文件中的關鍵字「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」和「OPTIONAL」應按照 BCP 14 [RFC2119] [RFC8174] 中的描述來解釋,且僅當它們以全大寫形式出現時才適用,如此處所示。
概述
MCP 為應用程式提供了一種標準化的方式來:
- 與語言模型分享情境資訊
- 向 AI 系統公開工具和功能
- 建立可組合的整合方案和工作流程
該協定使用 JSON-RPC 2.0 訊息來建立以下各方之間的通訊:
- 主機(Hosts):發起連線的 LLM 應用程式
- 客戶端(Clients):主機應用程式內的連接器
- 伺服器(Servers):提供情境脈絡和功能的服務
MCP 從 Language Server Protocol 中獲得了一些靈感,後者標準化了如何在整個開發工具生態系統中新增程式語言支援。同理,MCP 標準化了如何將額外的情境脈絡和工具整合到 AI 應用程式生態系統中。
關鍵細節
基礎協定
- JSON-RPC 訊息格式
- 有狀態連線
- 伺服器與客戶端功能協商
功能特性
伺服器向客戶端提供以下任何功能:
- 資源(Resources):給使用者或 AI 模型使用的情境脈絡和資料
- 提示(Prompts):給使用者使用的樣板訊息和工作流程
- 工具(Tools):供 AI 模型執行的函式
客戶端可以向伺服器提供以下功能:
- 取樣(Sampling):由伺服器發起的代理行為和遞迴 LLM 互動
- 根節點(Roots):由伺服器發起的 URI 或檔案系統邊界查詢,以便在其中運作
- 引導(Elicitation):由伺服器發起的向使用者索取額外資訊的請求
額外工具
- 配置
- 進度追蹤
- 取消操作
- 錯誤回報
- 日誌記錄
安全性與信任安全
Model Context Protocol 透過任意資料存取和程式碼執行路徑來啟用強大的功能。隨著這種強大能力而來的是重要的安全性和信任考量,所有實作者都必須仔細處理這些問題。
關鍵原則
-
使用者同意與控制
- 使用者必須明確同意並理解所有資料存取和操作
- 使用者必須保有對分享什麼資料以及採取什麼行動的控制權
- 實作者應該提供清楚的使用者介面來檢視和授權活動
-
資料隱私
- 主機必須在向伺服器公開使用者資料之前獲得明確的使用者同意
- 主機不得在未獲得使用者同意的情況下將資源資料傳輸到其他地方
- 使用者資料應該受到適當的存取控制保護
-
工具安全性
- 工具代表任意程式碼執行,必須以適當的謹慎態度對待
- 特別是,工具行為的描述(如註釋)應被視為不可信任的,除非是從可信任的伺服器取得
- 主機必須在呼叫任何工具之前獲得明確的使用者同意
- 使用者應該在授權使用之前了解每個工具的功能
- 工具代表任意程式碼執行,必須以適當的謹慎態度對待
-
LLM 取樣控制
- 使用者必須明確批准任何 LLM 取樣請求
- 使用者應該控制:
- 是否進行取樣
- 將要發送的實際提示
- 伺服器可以看到什麼結果
- 協定故意限制伺服器對提示的可見性
實作指南
雖然 MCP 本身無法在協定層級強制執行這些安全 原則,實作者應該:
- 在其應用程式中建立強健的同意和授權流程
- 提供安全性影響的清楚說明文件
- 實作適當的存取控制和資料保護
- 在整合過程中遵循安全性最佳實務
- 在功能設計中考慮隱私影響
了解更多
探索每個協定元件的詳細規格說明: