自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

快速上手:Anthropic MCP 協(xié)議規(guī)范

發(fā)布于 2025-3-20 07:28
瀏覽
0收藏

本文整理了MCP的基本協(xié)議規(guī)范,包括協(xié)議架構(gòu)、協(xié)議基本消息類型、協(xié)議生命周期管理、協(xié)議的傳輸層

1. 協(xié)議之架構(gòu)

1.1 基本組件

1.2 基本消息類型

1.3 能力協(xié)商

2. 協(xié)議規(guī)范之基本消息類型

2.1 Requests(消息請求)

2.2 Responses(消息應(yīng)答)

2.3 Notifications(通知)

2.4 舉例:Client獲取Server Tool列表

3. 協(xié)議規(guī)范之生命周期管理

3.1 Initialization(初始化):

3.2 Operation(操作)

3.3 Shutdown(關(guān)閉)

4. 協(xié)議規(guī)范之傳輸層

5. 參考


整個規(guī)范,可以分幾個大塊來了解:協(xié)議架構(gòu)、協(xié)議基本消息類型、協(xié)議生命周期管理、協(xié)議的傳輸層

快速上手:Anthropic MCP 協(xié)議規(guī)范-AI.x社區(qū)

1. 協(xié)議之架構(gòu)

Model Context Protocol (MCP) 采用 client-host-server 架構(gòu),每個 host 可以運行多個client實例。

這種架構(gòu)使用戶能夠在各個應(yīng)用程序中集成人工智能能力,同時保持清晰的安全邊界并隔離關(guān)注點。

MCP 基于 JSON-RPC 構(gòu)建,提供了一種有狀態(tài)的會話協(xié)議,專注于上下文交換和 clients 與servers之間的采樣協(xié)調(diào)。

JSON-RPC 2.0 規(guī)范: ???https://www.jsonrpc.org/specification??

1.1 基本組件

快速上手:Anthropic MCP 協(xié)議規(guī)范-AI.x社區(qū)

Host

Host進程充當(dāng)容器和協(xié)調(diào)者(比如Cline,cursor等):

  • 創(chuàng)建和管理多個客戶端實例
  • 控制客戶端連接權(quán)限和生命周期
  • 協(xié)調(diào) AI/LLM 集成和采樣
  • 管理Clients之間的上下文聚合

Clients

每個客戶端由Host創(chuàng)建,并保持一個獨立的 server 連接(比如由Cline代碼內(nèi)嵌的SDK Client):

  • 和每個 server 建立一個有狀態(tài)的會話
  • 處理協(xié)議協(xié)商和能力交換
  • 雙向路由協(xié)議消息
  • 管理訂閱和通知
  • 維護 servers 之間的安全邊界

host 應(yīng)用程序創(chuàng)建并管理多個 clients,每個 client 與特定 server 之間具有一對一的關(guān)系。

Servers

server 提供專業(yè)的上下文和能力:

  • 通過 MCP 原語暴露resources、tools 和prompts
  • 通過client 提供的接口請求sampling
  • 可以是本地進程或遠程服務(wù)

1.2 基本消息類型

MCP 定義了基于 JSON-RPC 2.0 的三種核心消息類型:

  • Requests: 雙向消息,帶有方法和參數(shù),期望有響應(yīng)
  • Responses: 匹配特定請求 ID 的成功結(jié)果或錯誤
  • Notifications: 無需回復(fù)的單向消息

1.3 能力協(xié)商

Model Context Protocol 使用了一種基于能力(capability-based)的協(xié)商機制,在初始化階段,clients和servers會明確聲明它們支持的功能,而這些能力決定了在會話期間可以使用哪些協(xié)議特性和原語(primitives)

快速上手:Anthropic MCP 協(xié)議規(guī)范-AI.x社區(qū)


2. 協(xié)議規(guī)范之基本消息類型

所有在 MCP clients 和 servers 之間的消息必須遵循 JSON-RPC 2.0 規(guī)范。該協(xié)議定義了三種基本類型的消息:

消息類型

描述

約束

??Requests??

用于具體操作的消息,比如查詢所有Tool、調(diào)用Tool等,支持的所有類型詳見2.1.1

必須包含唯一的 ID 和方法名稱

??Responses??

應(yīng)答??Requests??

必須包含與請求相同的 ID

??Notifications??

單向消息,不需要回復(fù)

不得包含 ID

2.1 Requests(消息請求)

??Requests??可以從Client端或者Server端發(fā)起

格式要求:

{
  jsonrpc: "2.0";
  id: string | number;
  method: string;
  params?: {
    [key: string]: unknown;
  };
}
  • 請求必須包含一個字符串或整數(shù)類型的 ID。
  • ID 不能為??null?? 。
  • 請求 ID 在同一會話中不得被請求者之前使用過。

2.1.1 Requests的關(guān)鍵業(yè)務(wù)類型:

Request method

發(fā)起方

響應(yīng)方

描述

initialize

Client

Server

初始化會話

tools/list

Client

Server

發(fā)現(xiàn)可用的工具

tools/call

Client

Server

調(diào)用工具

resources/list

Client

Server

發(fā)現(xiàn)可用的資源

resources/read

Client

Server

要獲取資源內(nèi)容

resources/templates/list

Client

Server

發(fā)現(xiàn)可用的參數(shù)化資源

resources/subscribe

Client

Server

以訂閱特定資源,并在其發(fā)生變化時接收通知

prompts/list

Client

Server

發(fā)現(xiàn)可用的提示詞

prompts/get

Client

Server

要獲取特定的提示詞

roots/list

Server

Client

列出Server有權(quán)限訪問Client的文件系統(tǒng)Root節(jié)點,暴露目錄和文件

sampling/createMessage

Server

Client

使Server能夠利用 AI 能力的生成能力

2.2 Responses(消息應(yīng)答)

??Responses??是對requests的回復(fù)。

格式要求:

{
  jsonrpc: "2.0";
  id: string | number;
  result?: {
    [key: string]: unknown;
  }
  error?: {
    code: number;
    message: string;
    data?: unknown;
  }
}
  • Responses 必須包含與其對應(yīng) request 相同的 ID。
  • 必須設(shè)置??result?? 或??error?? 之一。不得同時出現(xiàn)。
  • 錯誤代碼必須是整數(shù)。

2.3 Notifications(通知)

??Notifications??是從client 發(fā)送到server 或反向發(fā)送的。不需要回復(fù)。

格式要求:

{
  jsonrpc: "2.0";
  method: string;
  params?: {
    [key: string]: unknown;
  };
}

通知不得包含 ID。

2.4 舉例:Client獲取Server Tool列表

快速上手:Anthropic MCP 協(xié)議規(guī)范-AI.x社區(qū)

要查詢可用的工具,Client發(fā)送一個 ??tools/list?? 請求

Request(請求)

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {
    "cursor": "optional-cursor-value"
  }
}

Response(響應(yīng))

{
  "jsonrpc": "2.0",
"id": 1,
"result": {
    "tools": [
      {
        "name": "get_weather",
        "description": "Get current weather information for a location",
        "inputSchema": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "City name or zip code"
            }
          },
          "required": ["location"]
        }
      }
    ],
    "nextCursor": "next-page-cursor"
  }
}

3. 協(xié)議規(guī)范之生命周期管理

MCP定義了client-server連接的嚴(yán)格生命周期,確保了能力協(xié)商和狀態(tài)管理。

快速上手:Anthropic MCP 協(xié)議規(guī)范-AI.x社區(qū)

  1. Initialization(初始化): 能力協(xié)商和協(xié)議版本一致
  2. Operation(操作): 正常的協(xié)議通信
  3. Shutdown(關(guān)閉): 連接的優(yōu)雅關(guān)閉

3.1 Initialization(初始化):

初始化階段必須是 client 和 server 之間的第一次交互。在此階段,client 和 server確定協(xié)議版本兼容性、交換和協(xié)商各自的能力、分享實施細節(jié)。

由client 發(fā)送一個包含 ??initialize?? 請求來啟動此階段,包含:

  • 支持的協(xié)議版本
  • Client 能力
  • Client 信息

{
  "jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
    "protocolVersion": "2024-11-05",
    "capabilities": {
      "roots": {
        "listChanged": true
      },
      "sampling": {}
    },
    "clientInfo": {
      "name": "ExampleClient",
      "version": "1.0.0"
    }
  }
}

server 必須響應(yīng)其自身的能力和信息:

{
  "jsonrpc": "2.0",
"id": 1,
"result": {
    "protocolVersion": "2024-11-05",
    "capabilities": {
      "logging": {},
      "prompts": {
        "listChanged": true
      },
      "resources": {
        "subscribe": true,
        "listChanged": true
      },
      "tools": {
        "listChanged": true
      }
    },
    "serverInfo": {
      "name": "ExampleServer",
      "version": "1.0.0"
    }
  }
}

成功初始化后,client 必須發(fā)送一個 ??initialized?? 通知以表明它已準(zhǔn)備好開始正常操作:

{
  "jsonrpc": "2.0",
  "method": "notifications/initialized"
}

3.1.1 版本協(xié)商

在 ??initialize?? 請求中,client 必須發(fā)送其支持的協(xié)議版本。這應(yīng)該是client 支持的最新版本。

如果server支持請求的協(xié)議版本,則必須以相同的版本進行響應(yīng)。否則,server必須以其支持的其他協(xié)議版本進行響應(yīng)。這應(yīng)該是server支持的最新版本。

如果client 不支持server響應(yīng)中的版本,則應(yīng)該斷開連接。

3.1.2 能力協(xié)商

client 和server 在會話期間將提供哪些可選的協(xié)議功能。

關(guān)鍵能力包括:

類別

能力

描述

Client

??roots??

提供文件系統(tǒng)根目錄的能力

Client

??sampling??

支持LLM采樣請求

Client

??experimental??

描述對非標(biāo)準(zhǔn)實驗特性的支持

Server

??prompts??

提供提示模板

Server

??resources??

提供可讀的資源

Server

??tools??

公開可調(diào)用的工具

Server

??logging??

發(fā)出結(jié)構(gòu)化日志消息

Server

??experimental??

描述對非標(biāo)準(zhǔn)實驗特性的支持

3.2 Operation(操作)

在操作階段,client 和 server 根據(jù)協(xié)商的能力交換消息。

遵守協(xié)商的協(xié)議版本

僅使用成功協(xié)商的能力

3.3 Shutdown(關(guān)閉)

在關(guān)閉階段,連接被優(yōu)雅地終止。

client 發(fā)送斷開連接通知

server 關(guān)閉連接

清理相關(guān)資源

4. 協(xié)議規(guī)范之傳輸層

MCP 目前定義了兩種標(biāo)準(zhǔn)的 client-server通信傳輸機制:stdio(標(biāo)準(zhǔn)輸入輸出)和基于 SSE 的 HTTP??蛻舳藨?yīng)盡可能支持 stdio。

此外,客戶端和服務(wù)器也可以以可插拔的方式實現(xiàn)自定義傳輸機制。

5. 參考

??https://spec.modelcontextprotocol.io/specification/2024-11-05/??

本文轉(zhuǎn)載自??AI取經(jīng)路??,作者:AI取經(jīng)路


收藏
回復(fù)
舉報
回復(fù)
相關(guān)推薦