規範(2024-11-05)

協議版本: 2024-11-05

模型上下文協議(MCP)是一個開放協議,它使 LLM 應用程序與外部數據源和工具之間能夠無縫集成。無論您是構建 AI 驅動的 IDE、增強聊天界面,還是創建自定義 AI 工作流,MCP 都提供了一種標準化的方式將 LLM 與它們所需的上下文連接起來。

本規範定義了權威的協議要求,基於 TypeScript 模式 schema.ts

有關實現指南和示例,請訪問 mcpcn.com

本文檔中的關鍵詞"必須"(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 消息在以下實體之間建立通信:

  • 宿主:發起連接的 LLM 應用程序
  • 客戶端:宿主應用程序內的連接器
  • 服務器:提供上下文和功能的服務

MCP 從語言服務器協議獲得了一些靈感,該協議標準化瞭如何在整個開發工具生態系統中添加對編程語言的支持。類似地,MCP 標準化瞭如何將額外的上下文和工具集成到 AI 應用程序的生態系統中。

關鍵細節

基礎協議

  • JSON-RPC 消息格式
  • 有狀態連接
  • 服務器和客戶端能力協商

功能

服務器向客戶端提供以下任何功能:

  • 資源:供用戶或 AI 模型使用的上下文和數據
  • 提示:用戶的模板化消息和工作流
  • 工具:AI 模型可以執行的函數

客戶端可以向服務器提供以下功能:

  • 採樣:服務器發起的智能行為和遞歸 LLM 交互

額外工具

  • 配置
  • 進度跟蹤
  • 取消
  • 錯誤報告
  • 日誌記錄

安全和信任與安全

模型上下文協議通過任意數據訪問和代碼執行路徑啟用強大的功能。隨之而來的是所有實現者必須仔細處理的重要安全和信任考慮。

關鍵原則

  1. 用戶同意和控制

    • 用戶必須明確同意並理解所有數據訪問和操作
    • 用戶必須保留對共享哪些數據和採取哪些行動的控制權
    • 實現者應提供清晰的 UI 用於審查和授權活動
  2. 數據隱私

    • 宿主在將用戶數據暴露給服務器之前必須獲得用戶的明確同意
    • 宿主未經用戶同意不得將資源數據傳輸到其他地方
    • 用戶數據應受到適當訪問控制的保護
  3. 工具安全

    • 工具代表任意代碼執行,必須謹慎對待
    • 宿主在調用任何工具之前必須獲得用戶的明確同意
    • 用戶應在授權使用前瞭解每個工具的功能
  4. LLM 採樣控制

    • 用戶必須明確批准任何 LLM 採樣請求
    • 用戶應控制:
      • 是否進行採樣
      • 將發送的實際提示
      • 服務器可以看到哪些結果
    • 協議有意限制服務器對提示的可見性

實施指南

雖然 MCP 本身不能在協議級別強制執行這些安全原則,但實現者應該

  1. 在其應用程序中構建健壯的同意和授權流程
  2. 提供清晰的安全影響文檔
  3. 實施適當的訪問控制和數據保護
  4. 在集成中遵循安全最佳實踐
  5. 在功能設計中考慮隱私影響

瞭解更多

瀏覽每個協議組件的詳細規範: