当前位置: 首页 > news >正文

Model Context Protocol 的生命周期

生命周期阶段

生命周期分为三个主要阶段:

  1. 初始化阶段 (Initialization)

    • 客户端与服务器建立协议版本兼容性。
    • 交换并协商能力。
    • 分享实现细节。
    • 客户端必须发送 initialize 请求,包含支持的协议版本、客户端能力和客户端实现信息。
    • 服务器必须响应其自身能力和信息。
    • 成功初始化后,客户端必须发送 initialized 通知,表明已准备好开始正常操作。
  2. 操作阶段 (Operation)

    • 客户端和服务器根据协商的能力交换消息。
    • 双方应尊重协商的协议版本,并仅使用成功协商的能力。
  3. 关闭阶段 (Shutdown)

    • 通常由客户端干净地终止协议连接。
    • 没有定义特定的关闭消息,而是使用底层传输机制来信号连接终止。
    • 对于 stdio 传输,客户端应先关闭对子进程(服务器)的输入流,等待服务器退出,必要时发送 SIGTERMSIGKILL
    • 对于 HTTP 传输,关闭相关 HTTP 连接即可。

关键细节

1. 初始化阶段
  • initialize 请求

    • 客户端必须发送包含以下内容的 initialize 请求:
      • 支持的协议版本。
      • 客户端能力。
      • 客户端实现信息。
    • 示例 JSON 请求:
      {
        "jsonrpc": "2.0",
        "id": 1,
        "method": "initialize",
        "params": {
          "protocolVersion": "2024-11-05",
          "capabilities": {
            "roots": {
              "listChanged": true
            },
            "sampling": {}
          },
          "clientInfo": {
            "name": "ExampleClient",
            "version": "1.0.0"
          }
        }
      }
      
  • 服务器响应

    • 服务器必须响应其自身能力和信息。
    • 示例 JSON 响应:
      {
        "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"
          }
        }
      }
      
  • initialized 通知

    • 成功初始化后,客户端必须发送 initialized 通知:
      {
        "jsonrpc": "2.0",
        "method": "notifications/initialized"
      }
      
  • 版本协商

    • 客户端在 initialize 请求中必须发送其支持的协议版本。
    • 如果服务器支持请求的协议版本,则必须以相同版本响应。
    • 如果服务器不支持请求的版本,则必须以服务器支持的版本响应。
    • 如果客户端不支持服务器响应的版本,则应断开连接。
  • 能力协商

    • 客户端和服务器的能力决定了会话期间可用的可选协议功能。
    • 关键能力包括:
      • 客户端:
        • roots:提供文件系统根目录的能力。
        • sampling:支持 LLM 采样请求。
        • experimental:描述对非标准实验性功能的支持。
      • 服务器:
        • prompts:提供提示模板。
        • resources:提供可读资源。
        • tools:暴露可调用工具。
        • logging:发出结构化日志消息。
        • experimental:描述对非标准实验性功能的支持。
    • 能力对象可以描述子能力,例如:
      • listChanged:支持列表更改通知(适用于提示、资源和工具)。
      • subscribe:支持订阅单个项目更改(仅限资源)。

2. 操作阶段
  • 客户端和服务器根据协商的能力交换消息。
  • 双方应尊重协商的协议版本,并仅使用成功协商的能力。

3. 关闭阶段
  • 通常由客户端干净地终止协议连接。
  • 没有定义特定的关闭消息,而是使用底层传输机制来信号连接终止。
  • stdio 传输
    • 客户端应先关闭对子进程(服务器)的输入流。
    • 等待服务器退出,必要时发送 SIGTERMSIGKILL
  • HTTP 传输
    • 关闭相关 HTTP 连接即可。

错误处理

  • 实现应准备好处理以下错误情况:
    • 协议版本不匹配。
    • 无法协商所需能力。
    • 初始化请求超时。
    • 关闭超时。
  • 实现应为所有请求实现适当的超时,以防止连接挂起和资源耗尽。
  • 示例初始化错误:
    {
      "jsonrpc": "2.0",
      "id": 1,
      "error": {
        "code": -32602,
        "message": "Unsupported protocol version",
        "data": {
          "supported": ["2024-11-05"],
          "requested": "1.0.0"
        }
      }
    }
    

相关链接

  • Messages
  • Versioning
  • lifecycle
http://www.dtcms.com/a/73688.html

相关文章:

  • VBA第二十七期 数据录入中验证格式有效性
  • http proxy的原理是什么
  • 深度剖析陶瓷防静电地板的特性优势
  • matlab图论分析之指标计算(二)
  • BUU SQL COURSE 1
  • C++11 lambda表达式、包装器、Bind绑定
  • 开关电源实战(三)FlyBack反激电源MAX668
  • 玻璃制品制造行业的现状 内检实验室LIMS在玻璃制品制造的应用
  • 前端实现页面截图 -- html2canvas
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.17)
  • 前后端图像分类系统搭建文档
  • JavaScript语言的正则表达式
  • DC/DC开关电源学习笔记(十四)Buck-Boost升降压电路仿真与应用案例
  • 【css酷炫效果】纯css实现液体按钮效果
  • Hoppscotch 开源API 开发工具
  • 每日一题--进程与协程的区别
  • 第58天:Web攻防-SQL注入二次攻击堆叠执行SQLMAPTamper编写指纹修改分析调试
  • LCR 159. 库存管理 III
  • K8S学习之基础三十四:K8S之监控Prometheus部署pod版
  • AWTK-WEB 快速入门(5) - C 语言 WebSocket 应用程序
  • VSCODE 报错Fatal error: can‘t create CMakeFiles/hello_world.elf.dir/C_/Users/...
  • 通过turfjs使用线段分割矢量多边形
  • 【TPAMI 2024】卷积调制空间自注意力SpatialAtt,轻量高效,即插即用!
  • JVM常用概念之安全点轮询
  • TensorRT:高性能深度学习推理的利器
  • DeepSeek私有化部署与安装浏览器插件内网穿透远程访问实战
  • 轨道交通3U机箱CPCI电机控制板(DSP),主要运行控制算法以对牵引电机进行精准的运动控制
  • 【Go语言圣经5.1】
  • 微前端 无界wujie
  • 蓝牙技术联盟中国实体成立!华为、小米发声支持本土化战略