关于 mcpgawk
mcpgawk 是一款本地优先的命令行工具和 MCP 服务,用于测量 MCP 服务并检测工具表面的变化。它可在本地阻止已变更的工具、在沙箱中运行工具,并报告能力与令牌成本信息,不会上传清单。
主要功能
- 01扫描服务工具与能力
- 02固定基线并检测漂移
- 03执行前阻止已变更工具
- 04在沙箱中运行工具以观察行为
- 05报告令牌成本与能力事实
- 06支持 stdio、HTTP、SSE 和 OAuth 远程服务
适用场景
- 01添加服务前进行审计
- 02阻止调用获批后发生变化的工具
- 03按漂移或令牌预算检查拉取请求
- 04在沙箱中审查服务行为
MCP 相关
可通过 stdio 作为 MCP 服务运行,并通过 stdio、流式 HTTP、SSE,以及经 mcp-remote 桥接的 OAuth 远程服务扫描 MCP 服务。检查在本地执行,不会上传清单。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
2收录的工具列表 · 更新于 3 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| launch_local | boolean | 否 | 启动本地(stdio)服务器以进行扫描。这会运行其代码。 |
详细介绍
路径中只有一个网关。就在你的机器上。
mcpgawk
你的 Agent 会调用 Model Context Protocol 服务,而这些服务可能在你批准后更改工具的行为,Agent 却会毫无察觉地调用新工具。mcpgawk 会读取 Agent 能访问的每个服务,将每次调用与已批准的基线进行比对,并拦截发生变化的调用。它在你的机器上运行,不会上传任何内容。
mcpgawk Platform 由同一引擎提供支持:mcpgawk enforce 会在整个服务集群前设置一个端点,为每位调用者分配独立密钥、对每次调用执行策略检查,并生成哈希链式审计日志;mcpgawk monitor 则全天候监控你已批准的服务,并在其中一个发生偏移时通知你。这个免费层提供底层的检测与拦截功能。mcpgawk Platform 按人订阅,每人最多可用于 3 台机器:前往 https://mcp.gawk.dev/trial.html?utm_source=github&utm_medium=readme 开始 7 天免费试用(无需信用卡),或前往 https://mcp.gawk.dev/subscribe 订阅。随后在同一安装版本中运行 mcpgawk login <key>,即可获取付费引擎并启用这些功能——只需再运行一条命令,无需其他设置。
观看:64 秒了解 mcpgawk。你批准的工具在更新中发生变化;mcpgawk 会拒绝调用,直到你作出决定。
mcpgawk demo — 展示其自身输出,并在不会触碰你任何内容的沙盒中运行。
运行同一条命令,就会得到相同结果。
原因
你批准的服务之后仍可能更改其工具的行为。MCP 不会告知 Agent 发生了这种情况——它只会调用新工具。这就是所谓的“暗中掉包”,也是 mcpgawk 专为应对此类情况而构建的原因。
能够正确查看服务后,会带来两项好处。你可以在信任每个服务之前,了解它能访问什么;也可以了解它的成本:每次请求都会将所有工具加载到上下文中,无论是否使用。
有何不同
- 它会拦截,而不只是报告。 扫描器会事后告知你结果。
mcpgawk guard会安装一个执行前钩子;你批准服务后出现的工具不会运行。 - 它会运行服务,而不只是读取服务。
mcpgawk verify会在沙箱中调用工具,并报告它们实际做了什么——数据外泄、SSRF、投毒——在报告前重现这些行为。 - 不会上传任何内容。 云端扫描器会将你的清单发送到服务端,并在那里作出判定。这里的所有判定都在你的机器上完成,无需账户,也无需登录。
- 它会说明未检查的内容。 跳过的工具会明确标记为跳过,绝不会算作安全。
功能
- 🛑 在变更后的工具运行前将其拦截 —
mcpgawk guard install会在 Agent 的工作循环中安装一个执行前钩子。判定在本地完成,耗时约 10ms,无需登录。适用于 21 个受支持客户端中的 6 个;其余客户端没有钩子接入点,我们会明确说明,而非含糊带过。 - 🧪 实际运行,而不只是读取 —
mcpgawk verify会在沙箱中调用工具,并报告它们做了什么:数据外泄、SSRF、工具投毒、机密泄露。默认情况下,沙箱使用代理,因此无需 Docker;有 Docker 时,它可提供完整的容器隔离。安全模式只调用可证明为只读的工具,并将所有跳过的工具明确标记为跳过。 - 🧑⚖️ 审批必须由人完成 —
mcpgawk decide会打开本地界面,显示发生了哪些变更。按钮位于终端中打印的带令牌链接上,因此打开页面的 Agent 无法自行批准以绕过拦截。 - 🖥️ 一个本地面板 —
mcpgawk panel:查看每个服务、每项决策和每条证据。 - 📜 供应商都不会发布的变更日志 —
mcpgawk changes会显示你记录的快照之间,服务工具界面的所有变更:新增或移除的工具、扩展的输入架构、重写的描述和注释。它会读取你的本地历史记录,因此适用于你几周前就已批准的服务——这是全新扫描永远无法告诉你的信息。 - 🔌 支持任意传输方式 — stdio、streamable-HTTP、SSE,以及 OAuth 远程服务(通过
mcp-remote桥接)。 - 💸 令牌成本索引 — 显示连接时每个工具为上下文增加的确切内容,以及最占用上下文的 3 个工具。
- 🧾 能力事实 — 直接从架构中读取写入、可外泄、已声明的注释,以及信任面摘要(写入比例、可外泄比例、已声明破坏性操作的数量)和注释完整度评分。
- 📌 完整性固定值 + 漂移检测 — 发现服务是否在悄悄改写其工具(
--track)。 - 🚩 有限信号 — 类注入描述、跨服务遮蔽、声明不足的 Server Cards——这些只是供人工查看的线索,不是判定结果。
- 🔒 从设计上杜绝出站流量 — 测量层不会导入任何网络库,并通过测试强制验证。两项检查需主动启用,且会明确例外(参见保证):
--supply-chain和--oauth-scopes。
获取方式 — 三种选择
CLI(任意终端):
uv tool install --force mcpgawk # or: pipx install --force mcpgawk
mcpgawk # finds every agent config on the machine itself
将其作为 MCP 服务运行:mcpgawk mcp(stdio),或 uvx mcpgawk mcp。
编辑器(VS Code / Cursor):从 VS Code Marketplace 或 Open VSX 安装 mcpgawk。它会扫描工作区中的 mcp.json,并以内联方式显示成本和能力标记。该扩展会将此引擎作为子进程调用——它单独构建和发布,因此源代码不在此仓库中。
CI(GitHub Action):根据令牌预算 / 漂移情况拦截每个 PR(Marketplace):
- uses: gawk-dev/mcpgawk@v1
with: { config: mcp.json, max-tokens: 8000, fail-on-flagged: true }
适用场景
- 运行一次,然后保持启用 —
mcpgawk guard install。此后,已获批准的服务上出现的工具不会被调用。 - 添加服务之前 — 先了解它的成本和功能,再决定是否信任它。
- Agent 运行缓慢或选错工具时 — 通常是 MCP 臃肿造成的(工具过多或过于笨重)。
- 每次 PR 时 — CI 门禁会捕捉配置偏差和不断增加的 Token 成本。
- 如果你要 发布 MCP 服务 — 了解它会给用户带来多少成本,以及客户端如何读取它,并进行改进(通常每个工具只需修改一行)。精简且注释完善,是一项差异化优势。
使用
mcpgawk # first run: every agent config on this machine
mcpgawk demo # the whole arc in a sandbox — approve, drift, block
mcpgawk guard install # put the baseline in your agent's loop
mcpgawk guard status # is protection actually on?
mcpgawk decide # what changed, and approve it as a human
mcpgawk panel # the local page: servers, decisions, evidence
mcpgawk verify mcp.json # run the servers and watch what they do
mcpgawk changes # what changed on your servers since you approved them
mcpgawk login <key> # licence? one command fetches the paid engine (enforce, monitor)
如果只需要扫描:
mcpgawk scan mcp.json # a whole config
mcpgawk scan --stdio "npx -y @modelcontextprotocol/[email protected] /tmp"
mcpgawk scan --http https://host/mcp --header "Authorization: Bearer $TOKEN"
mcpgawk scan --sse https://host/sse
mcpgawk scan mcp.json --track # record + detect rug-pulls over time
mcpgawk scan mcp.json --json # machine-readable labels
mcpgawk scan mcp.json --verbose # full per-tool table, not just flagged tools
mcpgawk scan mcp.json --supply-chain # opt-in: npm/PyPI deprecation check (network)
mcpgawk scan mcp.json --oauth-scopes # opt-in: decode a supplied Bearer JWT's scope
不要将 Token 放进配置文件。在 mcpgawk wrap 下,env 中写作 keychain:<service>
(或 keychain:<service>@<account>)的值,会在服务启动时从 macOS 钥匙串读取,并且只放入服务的环境中。配置文件保存的是引用,Agent 看到的也是引用,mcpgawk 不存储任何内容。若无法读取引用,则会拒绝启动服务并指出该引用,但绝不会显示其值。
"github": { "command": "mcpgawk", "args": ["wrap", "--", "npx", "-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "keychain:gh-work" } }
报告内容
- 成本指数 — 每个工具在连接时增加的 Token 数量(使用指定的分词器;这是可比较的指数,并非 Claude 的绝对计数),以及最笨重的 3 个工具。
- 信任面 — 汇总能力事实(写入/修改、可外传、声明的注释),计算写入占比、可外传占比,以及声明为破坏性的工具数量。
- 注释完整度 — 透明的综合指标(声明读/写意图且带有注释的工具数 ÷ 声明读/写意图的工具总数),不是风险评分。
- 覆盖范围 — 统计工具、提示词和资源(使用
--verbose查看完整的逐工具表格)。 - 完整性锁定 — 如果服务悄悄重写工具,哈希值就会改变;
--track可将其转变为随时间检测暗中替换的机制。 - 有限信号 — 精确且误报率低、供人工审核 的提示,而非定论:注入式描述(包括工具 和 提示词)、跨服务名称冲突,以及未充分声明服务实际暴露内容的公开 Server Card。
- 供应链(可选,
--supply-chain)— 检查已启动的包在公开 npm/PyPI registry 中是否已弃用或撤回。 - OAuth 作用域(可选,
--oauth-scopes)— 在本地解码所提供 Bearer JWT 中的scope声明。
保证
- 不会将清单数据发送到外部。 唯一的网络通信是协议客户端与指定服务之间的通信。测量层不会导入任何网络库,因此从设计上就不可能向外传输(并通过测试强制执行)。公开 Server Card 的发现请求不附带认证,也不会跟随重定向。
两个标志是明确的可选例外:
--supply-chain会将已启动包的名称(以及固定版本,如果有)发送至公开 npm registry 或 PyPI JSON API,而绝不会发送你的工具清单。--oauth-scopes完全不进行网络调用,只在本地解码你已提供的 Bearer JWT。除非传入相应标志,否则这两项功能都不会运行。 - 事实 ≠ 启发式信号。 精确的能力事实和 Token 指数绝不会与有限的启发式信号混在一起——代码和输出中均各自独立。
- 结果可复现。 一条命令,结果一致。
- 跟进协议更新。 基于官方
mcpSDK 构建,由它协商协议版本。
开发
uv run --extra dev --with mcp --with tiktoken --with httpx python -m pytest -q
CI 门禁 — GitHub Action
在每次拉取请求时扫描你的 MCP 服务;如果服务过于笨重或触发信号,则让构建失败。它完全在你的 runner 中运行,不会上传任何内容,并会在作业摘要中发布逐服务的成本/标记表格。
- uses: gawk-dev/mcpgawk@v1
with:
config: mcp.json # or: stdio / http / sse — a single server
max-tokens: 8000 # fail if any server loads more than this at connect
fail-on-flagged: true # fail if any bounded signal fires
可通过 GitHub Marketplace 获取。
参与贡献
欢迎提交问题和 PR。请先阅读 CONTRIBUTING.md,并参阅 THREAT-MODEL.md 中的设计边界。安全问题请通过 SECURITY.md 私下报告,不要公开提交问题。
许可证
Apache-2.0 — 请参阅 LICENSE。属于 nativerse · gawk.dev 系列。网站和文档:mcp.gawk.dev。价值在于 仓库,而非云端。
在你的 Agent 中使用(技能)
让你的编码 Agent 自行运行检查 — 每当它添加、升级或审计 MCP 服务时:
# Claude Code (similar for other agents: copy the folder into their skills directory)
mkdir -p ~/.claude/skills && cp -r skills/mcpgawk ~/.claude/skills/mcpgawk
该技能会教 Agent 在信任服务之前先进行测量,将 MCP-2 升级审计为基线差异,而不是盲目信任,并将每条征求同意的提示原样转达给你。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。

