编程 MCP 协议 0.28 重大升级:无状态核心、能力治理体系与 Agent 生产级落地的完整指南 [range 12106-24212]

2026-07-26 07:51:08 +0800 CST views 10

Agent 继续执行
await client.continue_task({
"task_id": "task-uuid-123",
"resume_from": "stage-2"
})


这个机制让 AI Agent 可以像人类一样"边做边问",而不需要在上一步就把所有信息都问清楚。

---

## 五、证据链与可追溯:从"说了什么"到"依据能否还原"

### 5.1 企业场景的证据需求

在企业级 AI 应用中,AI 给出的结论往往需要被审计和追溯。考虑以下场景:

**场景:银行信贷审批**

信审员使用 AI Agent 辅助审查一家供应商的资质。AI 给出了"该供应商存在重大法律风险,建议拒绝"的结论。

三个月后,供应商投诉:"凭什么拒绝我们?" 信审员需要回答:
- AI 的结论基于哪些数据?
- 数据的时间点是什么?
- 有没有可能数据已经过期?

**旧版 MCP 的问题**:工具调用结果只返回自然语言数据,没有任何元信息可以追溯。

**新版 MCP 的改进**:每个工具调用结果都携带结构化的证据元信息。

```json
// v0.28+ 工具调用结果(带证据元信息)
{
  "result": {
    "data": {
      "company_name": "企查查科技股份有限公司",
      "credit_code": "91110108MA01XXXXX",
      "risk_level": "high",
      "litigation_count": 23,
      "penalty_count": 5
    },
    "_meta": {
      "evidence_id": "evidence-uuid-789",
      "data_source": "qcc_mcp_business_data",
      "query_timestamp": "2026-07-26T07:00:00+08:00",
      "data_timepoint": "current",
      "confidence": 0.95,
      "fields_used": ["litigation_count", "penalty_count", "risk_level"],
      "raw_response_hash": "sha256:abc123...",
      "limitations": [
        "仅覆盖中国大陆司法数据",
        "行政处罚数据可能存在 7 天更新延迟"
      ]
    }
  }
}

5.2 完整 JSON Schema 的生产价值

2026-07-28 规范将工具的输出 Schema 升级到完整的 JSON Schema 2020-12,这不只是格式升级,而是让结构化交付成为可能。

旧版 Schema(简化)

{
  "type": "object",
  "properties": {
    "company_name": {"type": "string"},
    "risk_level": {"type": "string"}
  }
}

新版 Schema(完整)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "company_name": {
      "type": "string",
      "description": "企业名称"
    },
    "risk_level": {
      "type": "string",
      "enum": ["low", "medium", "high", "critical"],
      "description": "综合风险等级"
    },
    "litigation_count": {
      "type": "integer",
      "minimum": 0,
      "description": "当前有效诉讼数量"
    },
    "last_updated": {
      "type": "string",
      "format": "date-time",
      "description": "数据更新时间"
    }
  },
  "required": ["company_name", "risk_level", "last_updated"],
  "additionalProperties": false
}

完整 Schema 的价值在于:

  • 客户端可以自动验证返回数据的完整性
  • AI Agent 可以知道哪些字段是必填的、哪些是可选的
  • 可以自动生成类型安全的客户端代码
  • 数据质量可以被系统化地监控

5.3 链路追踪:W3C Trace Context 集成

新版 MCP 引入了 W3C Trace Context 标准,让每次工具调用都可以被纳入分布式追踪体系:

# 工具调用时注入链路追踪上下文
result = await client.call_tool(
    "risk_scan",
    {"company_id": "qcc-123"},
    trace_context={
        "traceparent": "00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01",
        "tracestate": "congo=t61rcWkgMzE"
    }
)

# 链路追踪结构
trace = {
    "trace_id": "0af7651916cd43dd8448eb211c80319c",
    "span_id": "b7ad6b7169203331",
    "parent_span_id": "a1b2c3d4e5f6",  # 调用方 span
    "duration_ms": 234,
    "tools_in_chain": [
        "company_anchor",
        "risk_scan",
        "litigation_query",
        "penalty_query"
    ],
    "tokens_used": 18432,
    "errors": []
}

对于企业级部署,这意味着:

  • 可以精确分析每次 AI 推理的耗时分布(哪个工具最慢?)
  • 可以发现工具调用链中的错误和异常
  • 可以审计每次 AI 决策背后的完整数据路径
  • 可以对比不同 AI 模型在同一任务上的表现差异

六、企业级 MCP 架构:实战设计模式

6.1 一个完整的企业 MCP 部署架构

基于 2026-07-28 规范,一个生产级的 MCP 部署架构大概是这样的:

┌──────────────────────────────────────────────────────────────────────┐
│                           客户端层                                    │
│  Claude Desktop | Cursor | 自定义 Agent | 第三方平台                   │
└──────────────────────────────────────────────────────────────────────┘
                                  │
                                  ▼
┌──────────────────────────────────────────────────────────────────────┐
│                          MCP Gateway(Envoy/Kong)                      │
│  • JWT 鉴权 & 租户隔离                                                 │
│  • 限流(per-tenant, per-tool)                                        │
│  • 链路追踪(OpenTelemetry)                                           │
│  • 请求路由(根据 tool/server 分发)                                    │
│  • 响应缓存(基于 cacheTtlMs)                                         │
│  • 成本计量(per-tool-cost tracking)                                   │
└──────────────────────────────────────────────────────────────────────┘
           │                    │                    │
           ▼                    ▼                    ▼
┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
│  Business MCP      │ │  Legal MCP        │ │  DocParse MCP    │
│  Server            │ │  Server          │ │  Server          │
│  ─────────────    │ │  ─────────────    │ │  ─────────────    │
│  185 tools        │ │  10 tools        │ │  2 tools        │
│  (company/risk/   │ │  (laws/cases/    │ │  (PDF→struct/   │
│   ip/opera...)    │ │   citations)      │ │   doc→struct)    │
└───────────────────┘ └───────────────────┘ └───────────────────┘
           │                    │                    │
           ▼                    ▼                    ▼
┌───────────────────┐ ┌───────────────────┐ ┌───────────────────┐
│  企业数据源        │ │  法律数据库        │ │  文档存储         │
│  (工商/司法/      │ │  (裁判文书/       │ │  (PDF/Word/      │
│   知识产权/...)   │ │   法规/...)       │ │   Excel)          │
└───────────────────┘ └───────────────────┘ └───────────────────┘

6.2 无状态 Server 的实现模式

在 2026-07-28 规范下,MCP Server 应该是完全无状态的。这意味着:

# 错误示范:Server 中存储会话状态
class MCPStatefulServer:
    def __init__(self):
        self.sessions = {}  # ❌ 不应该在 Server 中维护会话状态
        self.cache = {}    # ❌ 不推荐:限制水平扩容
    
    async def handle_request(self, request):
        session_id = request.headers.get("Mcp-Session-Id")  # ❌ v0.28 已移除
        if session_id in self.sessions:
            return self.sessions[session_id]

# 正确示范:无状态 Server
class MCPStatelessServer:
    def __init__(self, redis_url: str, upstream_db: str):
        self.redis = aioredis.from_url(redis_url)  # ✅ 状态外置到 Redis
        self.db = create_db_pool(upstream_db)
        # ✅ 无本地状态,可水平扩展
    
    async def handle_request(self, request: MCPRequest) -> MCPResponse:
        # 每个请求自包含所有必要信息
        trace_id = request.meta.trace_id  # 从请求中获取链路 ID
        tenant_id = request.meta.tenant_id  # 从请求中获取租户 ID
        
        # 状态从外部存储读取(Redis/DB)
        context = await self.redis.get(f"context:{trace_id}")
        
        # 执行工具逻辑
        result = await self.execute_tool(request.params)
        
        # 证据元信息
        result._meta = EvidenceMeta(
            trace_id=trace_id,
            timestamp=datetime.now().isoformat(),
            server_instance=self.instance_id  # 用于追踪哪台服务器处理的
        )
        
        return result

6.3 能力治理的实施清单

将能力治理落地到生产环境,建议按以下顺序推进:

Phase 1:工具分类(Week 1-2)

  • 盘点所有现有工具,按"数据域"分类
  • 标记每个工具的 dataScope(当前/历史)
  • 标记每个工具的 capabilityType(查询/扫描/分析)
  • 识别工具间的互斥关系

Phase 2:描述增强(Week 3-4)

  • 为每个工具补充完整的 description
  • 添加 prerequisites 声明
  • 添加 cacheTtlMs 建议
  • 完善 inputSchemaoutputSchema

Phase 3:治理配置(Week 5-6)

  • 配置限流规则(per-tool, per-tenant)
  • 配置成本计量
  • 启用审计日志
  • 配置缓存策略

Phase 4:监控体系(Week 7-8)

  • 接入 OpenTelemetry 链路追踪
  • 设置工具调用成功率告警
  • 设置响应时间 P99 告警
  • 构建成本仪表盘

七、性能对比:v1.x vs v0.28

我们来做一个量化的对比分析:

维度MCP v1.x(会话模式)MCP v0.28(无状态)提升
水平扩容需要黏性会话负载均衡器任意 HTTP 网关即可架构复杂度大幅降低
故障恢复Session 中断需重建任意实例可接管RTO ≈ 0
滚动发布需要优雅停机等待会话迁移任意时刻可切换实例发布窗口扩大
协议握手2-RTT(initialize + initialized)0-RTT(直接调用)延迟降低
网关兼容性仅支持 SSE 感知网关任何 HTTP 网关生态丰富
工具治理限流/缓存/审计/计费企业可用
任务持久化Tasks + MCP Apps复杂场景支持
证据追溯完整元信息 + Trace Context合规保障

八、迁移路径:从 v1.x 到 v0.28

8.1 客户端迁移

对于 MCP 客户端(如 Claude Desktop、Cursor、自定义 Agent),迁移主要是协议层面的:

# v1.x 客户端
class MCPv1Client:
    async def connect(self, url: str):
        self.session = await create_session(url)
        await self.session.initialize()  # v1.x 需要握手
        self.session_id = self.session.id
    
    async def call_tool(self, name: str, args: dict):
        return await self.session.call(
            "tools/call",
            {"name": name, "arguments": args},
            headers={"Mcp-Session-Id": self.session_id}
        )

# v0.28 客户端
class MCPv28Client:
    async def connect(self, url: str):
        # v0.28 不需要握手,直接可用
        self.base_url = url
    
    async def call_tool(self, name: str, args: dict):
        return await self.http.post(
            f"{self.base_url}/tools/call",
            {
                "jsonrpc": "2.0",
                "id": self._next_id(),
                "method": "tools/call",
                "params": {
                    "name": name,
                    "arguments": args,
                    "meta": {
                        "trace_id": uuid.uuid4().hex,
                        "tenant_id": self.tenant_id
                    }
                }
            }
        )

8.2 服务端迁移

对于 MCP Server,迁移需要注意兼容性问题:

class MCPv28CompatibleServer:
    async def handle_request(self, request: Request) -> Response:
        # 检测客户端协议版本
        client_version = request.headers.get("MCP-Version", "1.x")
        
        if client_version.startswith("1."):
            # 兼容 v1.x 客户端:维护 Session
            return await self._handle_v1(request)
        else:
            # v0.28+ 客户端:无状态处理
            return await self._handle_v28(request)
    
    async def _handle_v28(self, request: Request) -> Response:
        # 无状态处理:所有上下文从请求中获取
        result = await self._execute_tool(request.json)
        
        # 添加 v0.28 特有的元信息
        result["_meta"] = {
            "server_version": "0.28.0",
            "trace_id": request.params.meta.trace_id,
            "capabilities_discovered": True
        }
        
        return result

8.3 迁移检查清单

  • 确认所有 MCP 客户端升级到支持 v0.28 的版本
  • 服务端移除 Mcp-Session-Id 依赖
  • 将会话级状态外置到 Redis/数据库
  • 为每个工具补充 annotations 元信息
  • 配置限流和审计规则
  • 更新文档(工具描述、使用示例)
  • 测试故障恢复场景
  • 验证水平扩容能力

九、未来展望:MCP 的演进方向

9.1 协议成熟度的判断标准

2026-07-28 规范的发布,标志着 MCP 进入"生产成熟期"。判断一个协议是否达到生产成熟,有几个关键信号:

信号一:规范稳定 —— 协议的基本结构不再频繁变更,企业可以基于稳定规范做长期投入

信号二:治理能力完备 —— 不仅仅是"能用",还要"管得住"。限流、审计、缓存、追踪等治理能力是生产部署的基础

信号三:生态丰富 —— 有足够多的客户端、Server、网关、中间件选择,企业不会被单一实现绑定

信号四:向后兼容 —— 新版本需要照顾存量部署,不能因为升级而破坏现有系统

从这几个标准看,MCP v0.28 是一个重要的里程碑,但生态的完全成熟还需要时间。

9.2 接下来值得关注的方向

方向一:MCP Apps 生态

随着 MCP Apps 的成熟,可能会出现"企业级 MCP App Store"——企业可以购买、组合标准化的 MCP Apps 来快速构建 Agent 能力。比如"反洗钱 KYC App"、"供应商评估 App"、"竞品分析 App"。

方向二:MCP 安全标准

企查查在实践中已经遇到了 MCP 安全的问题:"大模型可能被恶意构造的工具描述或提示词操纵,执行超出预期的操作"。协议层面需要有更严格的能力边界描述和执行机制。

方向三:多模态 MCP

当前 MCP 主要处理文本工具调用。随着 AI Agent 能力的扩展,图像生成、视频处理、代码执行等能力的 MCP 标准化调用也是值得期待的方向。


结语

MCP 2026-07-28 规范的核心,不是增加了几种调用方式,而是推动了 MCP 从"工具连接协议"走向"生产级 Agent 基础设施"。无状态核心让远程 MCP 部署不再需要特殊的会话管理;能力发现机制让大规模工具集可以被系统化理解;任务协作和证据链让 AI Agent 能够完成复杂的企业级任务。

对于正在构建 AI Agent 系统的开发者,这次升级意味着:

  • 如果你正在考虑将 MCP 引入生产环境,现在是好时机——协议已经准备好
  • 如果你已经部署了 MCP v1.x,升级到 v0.28 可以获得显著的架构简化
  • 如果你还在观望,2026-07-28 是一个值得关注的里程碑节点

唯一不变的是变化本身。MCP 的演进还在继续,但方向已经清晰:让 AI Agent 不仅能调用工具,而且能可靠地、可治理地、可持续地调用工具。


选题来源:MCP 2026-07-28 规范候选版技术解读
标签:MCP|AI Agent|协议标准化|生产级 AI|工具调用|无状态架构
关键字:MCP|Model Context Protocol|AI Agent|无状态核心|能力发现|工具治理|企业 AI|协议规范


附:MCP Server 实战开发——从零构建企业级 MCP Server

A.1 项目结构与依赖

让我们通过一个完整示例来展示如何构建一个符合 v0.28 规范的生产级 MCP Server。

# 项目结构
mcp-enterprise-server/
├── src/
│   ├── __init__.py
│   ├── server.py              # 主服务器入口
│   ├── tools/                 # 工具实现
│   │   ├── __init__.py
│   │   ├── business.py        # 企业数据工具
│   │   ├── risk.py            # 风险查询工具
│   │   └── legal.py           # 法律数据工具
│   ├── governance/             # 治理层
│   │   ├── __init__.py
│   │   ├── rate_limiter.py    # 限流器
│   │   ├── cost_tracker.py    # 成本计量
│   │   └── audit_logger.py    # 审计日志
│   ├── schemas/               # Schema 定义
│   │   ├── business.py
│   │   └── risk.py
│   └── utils/
│       ├── evidence.py         # 证据元信息生成
│       └── trace.py           # 链路追踪
├── pyproject.toml
├── Dockerfile
└── docker-compose.yaml
# pyproject.toml
[project]
name = "mcp-enterprise-server"
version = "0.28.0"
requires-python = ">=3.11"

dependencies = [
    "mcp>=1.0.0",
    "fastapi>=0.110.0",
复制全文 生成海报 MCP AI Agent

推荐文章

API 管理系统售卖系统
2024-11-19 08:54:18 +0800 CST
JavaScript 异步编程入门
2024-11-19 07:07:43 +0800 CST
MCP 协议升级测试[只有附录]
2026-07-26 07:51:41 +0800 CST
Vue中的异步更新是如何实现的?
2024-11-18 19:24:29 +0800 CST
HTML + CSS 实现微信钱包界面
2024-11-18 14:59:25 +0800 CST
gin整合go-assets进行打包模版文件
2024-11-18 09:48:51 +0800 CST
在 Rust 生产项目中存储数据
2024-11-19 02:35:11 +0800 CST
Elasticsearch 监控和警报
2024-11-19 10:02:29 +0800 CST
在 Rust 中使用 OpenCV 进行绘图
2024-11-19 06:58:07 +0800 CST
程序员茄子在线接单