组件交互流程概述
MCP框架采用标准化通信机制实现客户端与服务端的高效协同。客户端基于用户指令构建符合JSON-RPC 2.0规范的请求,经代理层验证后转发至目标服务端。服务端执行操作并返回结构化响应,代理层完成二次校验后将结果传递回客户端。该流程通过统一的数据格式与协议层校验,确保AI模型与外部服务的交互具备高可靠性与安全性。
初始化流程:连接建立与能力对齐
客户端与服务端的初始化过程包含三层验证机制,确保协议兼容性与安全链路构建。
- 连接发起与基础校验(客户端→服务端)
客户端通过HTTP/2 POST请求发起连接,携带关键元数据:
- 协议版本标识:MCP-Version: 2.2
- 客户端标识:Client-ID: dev_456xyz
- 传输模式声明:Supported-Transports: http,websocket
- 数据格式:Content-Type: application/json
请求体包含角色定义与安全要求示例:
{
"role": "assistant",
"security_requirements": "tls1.3"
}
服务端执行三层验证:
- 协议版本:拒绝低于v2.0的请求(返回400错误)
- 身份验证:校验Client-ID是否在授权列表
- 传输模式:过滤不兼容的传输方式
- 能力协商与安全握手(服务端→客户端)
服务端返回能力清单与安全参数:
{
"context_aware": true,
"max_concurrent": 80,
"available_tools": [
{
"tool_name": "db/query",
"params": {"query": {"max_length": 300}}
}
],
"security": {
"auth_method": "oauth2",
"token_endpoint": "/auth/token",
"crypto": "tls1.3+chacha20"
},
"extensions": ["batch","streaming"]
}
安全链路构建:
- 加密通信:服务端返回ECC公钥,客户端生成会话密钥
- 高安全场景:启用量子密钥分发(BB84协议)
- 会话绑定与状态固化
服务端生成全局会话标识(如ctx_7a1b2c),关联客户端ID与权限范围。客户端通过确认请求绑定会话:
{
"jsonrpc": "2.0",
"method": "context/confirm",
"params": {"session_id": "ctx_7a1b2c", "preferred_transport": "websocket"},
"id": "init_001"
}
服务端返回{"result": "confirmed"}后完成连接建立。二次连接时,客户端直接携带session_id恢复会话,跳过握手流程。
数据交互核心机制
交互流程基于三大原语实现结构化通信。
1. 提示信息传递(Prompts)
采用JSON-RPC 2.0封装,包含上下文引用:
{
"jsonrpc": "2.0",
"method": "input/submit",
"params": {
"user_input": "查询最近订单状态",
"prev_context": ["ctx_7a1b2c:turn_3"],
"session": "ctx_7a1b2c"
},
"id": "input_1001"
}
服务端通过prev_context关联历史对话,解析用户意图。长文本输入支持SSE流式传输。
2. 资源访问(Resources)
资源通过URI标识,格式为
://:
- 数据库:db://orders/6789
- 文件:s3://reports/summary.pdf
资源获取请求示例:
{
"jsonrpc": "2.0",
"method": "resource/access",
"params": {
"resource_uri": "db://orders/6789",
"auth_token": "token_xyz789"
},
"id": "res_2001"
}
服务端验证URI路径规则与权限后,返回脱敏数据。
3. 工具调用(Tools)
工具执行采用标准化参数结构:
{
"jsonrpc": "2.0",
"method": "delivery/check",
"params": {
"order_no": "6789",
"session": "ctx_7a1b2c"
},
"id": "tool_3001"
}
执行流程:
- 参数校验(如order_no格式)
- 权限检查(客户端是否拥有调用权限)
- 执行中通过SSE推送进度
- 返回结构化结果(支持批量查询)
会话生命周期管理
会话管理包含创建、维护与终止三个阶段。
1. 会话创建
服务端生成唯一标识(ctx_7a1b2c),初始化三层上下文结构:
- 元数据层:超时时间(120分钟)、传输协议
- 内容层:对话历史容器、工具调用记录
- 安全层:会话令牌、权限日志
2. 会话维护
- 心跳保活:客户端每30秒发送context/heartbeat,连续3次超时触发会话冻结
- 上下文修剪:对话轮次超10轮时,保留Top 5关键对话轮次
- 权限动态更新:通过context/update接口实时调整权限
3. 会话终止
- 主动终止:客户端调用context/terminate,服务端归档日志(保留90天)并清理资源
- 被动终止:闲置超120分钟自动清理,支持基于快照的99.2%恢复率
- 安全处理:金融场景触发二次验证(短信确认)