MCP 是边界,不是约束层

MCP 可标准化 AI Application 发现和调用 Tool、读取 Resource、获取 Prompt 的方式,有助于互操作。它不会因为 Tool 带有 Schema 就成为系统宪法、完整治理层或 RBAC 替代。

控制 Protocol 可帮助描述 Application 必须执行
Tool Input 形状和已声明取值 可信身份、Object Access、业务 Policy
Resource URI 与内容表示 Tenant Filter、Ownership、Retention、Deletion
Sampling/模型请求 Capability Negotiation Budget、Consent、Destination、Privacy
Transport Message Delivery Endpoint Trust、Session Lifecycle、Replay 与 Limit

固定实际部署的 Specification、Transport、SDK/Runtime Revision、Tool Catalog 与 Test Fixture。Protocol Field 与 SDK API 会演进。

Schema 是校验,不是 Authority

JSON Schema 可拒绝格式错误的 Input,却不能证明 Customer 拥有 Order、Price 最新,或 Deletion 被允许。模型生成的 Identifier、Tool Annotation 和 Schema 通过结果均是不可信证据。

python
def authorize_tool(session, request, orders):
    if request.tool != "request_cancel_order":
        return {"status": "rejected", "reason": "unknown_tool"}
    order = orders.get_for_subject(request.order_token, session.subject_id)
    if order is None or order.status != "open":
        return {"status": "rejected", "reason": "not_cancellable"}
    return {"status": "confirmation_required", "order_id": order.public_id}

这是应用 Policy,不是 MCP Code。重要副作用 Endpoint 必须在执行前重新校验认证 Subject、Tenant、当前 Object State、Confirmation Binding、Expiry、Idempotency Key 和业务 Invariant。

构建应用控制平面

在 Protocol Boundary 周围执行控制:

  1. 从可信 Authentication Middleware 派生 Subject、Tenant 与 Role;
  2. 按 Workload Allowlist Tool,并限制 Input、Result、File 与 Egress;
  3. 由拥有服务授权每次 Object Retrieval 和 Action;
  4. 将每个 Tool Result、Resource、Prompt、Annotation 与 Remote URL 视为不可信内容;
  5. 对外部或破坏性副作用要求显式 Confirmation 和持久化 Idempotency;
  6. 在模型输出之外执行 Budget、Timeout、Queue、Cancellation 和 Concurrency Lock;
  7. 记录脱敏的 Policy Decision 和 Lifecycle Evidence。

不要将任意 SQL、Shell、Filesystem Path 或无限制 HTTP Fetch 暴露为通用 Agent Tool。

Resources、Result 与并发

Resource 可以是方便的 Reference,却不是 Permission Scope。每次 Retrieval 都要认证和授权;Cache Key 按 Tenant/Subject 隔离;Subscription 有界;Deletion 传播到派生 Index 和 Cache。

Tool Result 可能含 Prompt Injection、超大 File、误导 URL 或私密数据。限制 MIME、Byte、Nesting、Redirect 和 Retention;将外部内容作为 Data 而非 Instruction 渲染。

竞争写入应使用拥有系统的 Transaction、Optimistic Version Check、Lock 或 Workflow State Machine。Agent Protocol 不能仅靠串行 Message 解决业务冲突。

测试失败路径

测试 要证明的失败
Authorization Cross-tenant Token、模型提供 Object ID、过期 Role
Effects Duplicate Retry、执行后 Timeout、过期 Confirmation
Result Injected Instruction、超大 Artifact、不安全 URL
Concurrency 冲突 Update、Cancellation Race、Partial Failure
Privacy 敏感 Telemetry、Cache Leak、不完整 Deletion
Recovery 不可用 Tool、Retry Classification、Outcome_unknown

在代表性任务上度量 Completion 与 Recovery。没有工作负载实验和证据时,不要宣称通用 Latency 或 Security Guarantee。

常见问题

MCP 能阻止 Agent 绕过 Policy 吗?

只有应用将相关 Service、Credential、Network Egress 与 Action Endpoint 放在强制控制后才可能。Protocol 本身不能阻止另一条特权路径。

RBAC 足够吗?

不够。RBAC 可支持粗粒度授权,敏感操作通常还需 Tenant/Object Check、Purpose、Current State、Approval、Rate Limit 与 Audit。

应记录什么日志?

记录脱敏 Correlation ID、Policy Decision、Tool Revision、Result Class、Latency 和 Failure Class。不要默认保留原始 Prompt、Secret、Private Artifact 或 Hidden Model Reasoning。

延伸阅读