MCP声明能力检测工具

一个本地演示工具,展示MCP服务器在不同版本或授权状态下声明能力的变化,并提供变更检测功能。

  • by jordanstarrk
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jordanstarrk/mcp-visibility-gap-demo

使用说明

MCP能见度差距演示

一个最小的本地演示,展示如何 已声明的MCP能力表面可以无声地扩展 而运行时工作流和测试保持绿色。

这表明了什么

  • MCP服务器可以更改其 已声明的刀具表面 跨版本或身份验证状态
  • 运行时强制和测试仍然可以通过
  • 审稿人没有协议原生方式来证明表面没有变化

看到当前表面与检测变化不同

MCP发现方法公开服务器的 当前申报的能力缺失的图元是 连续性:之前审查过的表面持久记录,以及检测和检查随时间变化的可靠方法。

问题 MCP协议 清单/框架(MCP融合) MCP表面打印(快照+差异)
服务器现在声明什么? ✅ ✅ ✅
之前审查的版本声明了什么? ❌ 也许,如果手动保留 ✅ 已保存快照
申报的表面是否发生了变化? ❌ 通常❌ ✅ 结构差异
究竟添加、删除或修改了什么? ❌ 通常❌ ✅
CI可以阻止未查看的曲面更改吗? ❌ 通常❌ ✅
它能检测到未声明的运行时行为变化吗? ❌ ❌ ❌

演示并不是“添加了新工具,因此存在漏洞”。差距在于 信任决策可能会变得过时 没有任何强制重新审核的内容:

  1. 版本A已检查并批准。
  2. 版本B添加或扩展了声明的功能(看起来合法,影响更大)。
  3. 现有的功能测试仍然是绿色的。
  4. MCP在查询时仍然准确地报告新表面。
  5. 没有什么能比得上之前批准的表面。
  6. Surfaceprint使信任边界更改明确(快照+差异,在CI中可执行)。

快速启动(协议级验证)

Prereq(Python):

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt

Prereq(MCP Fusion构建,一次):

cd fusion
npm install
npm run build
cd ..

运行一个命令线束:

python scripts/prove_protocol_surfaces.py

它写入持久的快照工件(A/B+ diff.txt)under snapshots/proof/.

下一步去哪里看

  • 结果/证据: EXPERIMENT_LOG.md (包括香草MCP与MCP融合表)
  • 光标运行手册: EXPERIMENTS.md (人类可见的客户端行为)
  • 深潜/讲解员: docs/OVERVIEW.md (全幅+演示)

关键要点

MCP(和MCP Fusion)可以告诉你服务器现在声明了什么。它们没有提供一种持久的方法来证明自上次审查以来发生了什么变化。缺少的检查原语是这个仓库的重点。

非目标

  • 沙盒
  • 运行时实施
  • 漏洞利用