MCP Card 与 MCPGuard:MCP 世界的「说明书」和「质检员」

MCP Card 与 MCPGuard:MCP 世界的「说明书」和「质检员」

一句话总结: MCP Card 是工具的说明书,告诉你它支持什么。MCPGuard 是质检员,验证它是不是真的做到了。


先搞懂 MCP 是什么

MCP(Model Context Protocol)是一个开放协议,让 AI 应用可以连接到外部的数据源和工具。类比一下:MCP 就像 AI 世界的 USB-C 接口------有了它,不同的 AI 应用(Claude、ChatGPT、各种 IDE)可以统一地使用各种工具(文件系统、数据库、搜索引擎)。

一个 MCP 系统里有三个角色:

  • MCP Server:提供某个能力的服务程序,比如一个「天气查询 Server」或一个「文件操作 Server」
  • MCP Client / Agent:使用这些工具的 AI 应用,比如 Claude Desktop 或 Cursor IDE
  • MCP 协议:两者之间通信的标准化语言(基于 JSON-RPC 2.0)

当一个 AI Agent 需要查天气时,它通过 MCP 协议向天气 Server 发一个请求,Server 返回结果。整个过程大致就三步:发现有什么工具 → 决定用哪个 → 调用并拿到结果。

问题来了:Agent 怎么知道 Server 支持什么工具?Server 声称支持的东西,实际跑起来对不对?这篇文章要对比的两个概念,就是回答这两个问题的。


MCP Card:工具的说明书

最直观的理解

想象你买了一个新电器,包装盒里有一张 产品规格卡,上面写着:

  • 名称:某某牌空气炸锅
  • 功能:炸鸡翅、烤红薯、解冻
  • 参数:温度范围 80-200°C,容量 5L
  • 电源要求:220V

这就是一张 Card。它不启动、不工作、不烹饪------它只告诉你这个电器能干什么。

MCP Card 做的是一样的事。它是一个 MCP Server 的「能力声明卡」,描述:

  • 这个 Server 叫什么
  • 它提供哪些工具(tools)
  • 每个工具接受什么参数、返回什么结果
  • 怎么安装和启动它

一个真实的例子

MCP 官方 Registry(可以理解为 MCP Server 的应用商店)定义了一个 server.json 格式,这就是 Card 的标准形态。以下是一个天气 Server 的 Card 简化版:

json 复制代码
{
  "name": "weather-mcp",
  "description": "提供任意位置的天气数据",
  "capabilities": {
    "tools": {
      "get_forecast": {
        "description": "获取指定位置的天气预报",
        "inputSchema": {
          "latitude": { "type": "number", "description": "纬度" },
          "longitude": { "type": "number", "description": "经度" }
        },
        "outputSchema": {
          "temperature": { "type": "number" },
          "conditions": { "type": "string" }
        }
      }
    }
  }
}

Agent 读到这张 Card 就知道:我可以调用一个叫 get_forecast 的工具,需要传入经纬度,会返回温度和天气状况。

Card 在现实中的模样

你在不同地方看到过 Card,只是不一定意识到:

  • IDE 的 MCP 面板:VS Code 或 Cursor 的侧边栏里会列出当前连接了哪些 Server、每个 Server 有哪些工具,那就是 Card 的图形化展示
  • MCP Inspector:官方调试工具,可以查看 Server 的能力清单
  • PulseMCP、Smithery:MCP Server 的在线目录,每个 Server 的详情页就是一张 Card

这些形式的本质都一样:回答「这个 Server 声明支持什么」。

所以 MCP Card 的定位是:静态契约层------设计时写好的描述文档,给 Agent 看的。


MCPGuard:工具的质检员

问题驱动

好,现在我们知道 Server 声明了什么。但问题来了:

AI Agent 调用了一个文件操作 Server 的 write 工具,传参 path: "../../etc/passwd"------Server 会怎么响应?是拒绝了、报错了、还是真的写了?

Card 不会回答这个问题。Card 告诉你「我有一个 write 工具,接受 path 参数」,但它不告诉你:

  • path 参数有没有防路径穿越的保护?
  • 同时发 100 个请求会不会崩溃?
  • 同样的参数调用两次,结果一致吗?
  • 号称支持 10 个工具,实际哪几个能正常跑?

Card 说的是你想做什么,MCPGuard 验证的是你做得怎么样。

它是怎么工作的

MCPGuard 的核心思路是 「在中间架一个监控」

复制代码
没有 MCPGuard 时:
    Agent ──── 发请求 ────→ MCP Server

有 MCPGuard 时:
    Agent ──── 发请求 ────→ [MCPGuard 代理层] ────→ MCP Server

这个代理层不修改消息内容,它只是记录下来,然后做一些检查:

  • 录制(Record):把每一次工具调用和返回结果存下来,存成 JSONL 文件
  • 回放(Replay):用录制好的数据模拟 Server 响应,不需要真的启动 Server 也能测试
  • 契约检查(Contract):实际返回的数据和 Card 里描述的结构一致吗?
  • 安全检测(Audit):参数里有没有注入攻击、路径穿越?

所有操作都在 MCP 通信层面完成,不依赖 Server 用什么语言写的。

一个类比

还是说回电器。

Card 是说明书上写的「温度范围 80-200°C」。MCPGuard 做的事情是:把温度计放进去,设到 200°C,等十分钟,然后看温度计------真的是 200°C 吗?同一台机器再测一次还是 200°C 吗?换一台同型号的也一样吗?

说明书对,不代表机器对。能跑,不代表能稳定、安全地跑。


放在一起看:互补而非竞争

一句话区分

MCP Card MCPGuard
说明书,设计时写好 质检,运行时验证
回答「你支持什么」 回答「你表现如何」
给 AI Agent 看的 给开发者 / 测试者用的
静态的(描述即事实) 动态的(跑过才知道)

更直白的类比:

  • Card ≈ TypeScript 类型定义:你声明了函数签名
  • Guard ≈ 测试用例:你验证函数确实返回了正确的值

只有类型没有测试的代码,编译可能过但运行会错。只有测试没有类型,改了签名可能没人知道。两者缺一不可。

它们怎么配合

一个完整的 MCP 质量保障流程是这样的:

  1. 写 Card:开发 Server 时,描述它支持什么工具、参数、返回值
  2. Agent 读 Card:知道该调什么工具
  3. Agent 发请求 → MCPGuard 拦截
    • 检查参数是否符合 Card 的描述(契约检查)
    • 检查参数有没有安全风险(安全检测)
    • 记录请求和响应(录制,供后续回归测试)
  4. MCPGuard 转发给 Server
  5. 返回结果给 Agent------同时 MCPGuard 再次检查返回数据
  6. 出测试报告:哪些通过了,哪些不符合契约,哪些有安全风险
  7. 如果 Server 更新了:更新 Card,重新跑一遍

Card 提供「预期」,Guard 提供「实际」。两者的差距,就是质量问题的来源。


展望:MCP 生态正在走向成熟

MCP 从 2024 年底发布到现在只有一年多,整个生态正处于从「野蛮生长」到「质量管控」的转型期。几个明显的方向:

说明书会更详细

现在的 Card 还比较简单,未来可以预期会有:

  • 更完善的输入输出描述
  • 权限声明------Server 需要读文件还是写文件?要不要网络?
  • 性能特征------期望的响应时间、能承受的并发数

质量检测会变成准入门槛

就像 npm 包要有测试才能上生产,未来的 MCP Registry 可能要求每个 Server 必须通过基本的质量检测和安全扫描才能发布。

Card + Guard = 自动化质量流水线

未来的 CI 流程里,可能会有一条标准流水线:

复制代码
读 Card → 启动 Server → 契约验证 → E2E 场景执行 → 安全扫描 → 出报告

每一步都可以自动化,代码一提交就自动跑。

整体架构

把 Card、Guard 和 Registry 放在一起看,MCP 生态的质量保障有三层:

  1. Card(声明契约)------设计时定义应该做什么
  2. Guard(验证质量)------测试和运行时检查实际做了什么
  3. Registry(存储和分发)------全生命周期管理可信的元数据

结语

所以,从入门的角度,记住这几个类比就够了:

概念 一句话 类比
MCP AI 连接外部工具的标准化协议 AI 界的 USB-C
MCP Card 工具的能力说明书 产品规格卡
MCPGuard 工具的质量检测工具 质检员
Card vs Guard 声明 vs 验证 TypeScript 类型 vs 测试用例

MCP Card 和 MCPGuard 不是竞争关系------一个是设计时的契约,一个是运行时的验证。说明书不等于品质,测试不是编造,两者在一起才构成完整的质量保障。