mcpField
M
mcp-audit

mcp-audit

本地服务
github.com/saagpatel安全42 周前更新

关于 mcp-audit

mcp-audit 是用于审查本机 MCP 服务配置及其公开能力的命令行工具,面向希望检查配置风险的个人和 CI 流程。它提供静态检查、可选连接检查及基线变更对比,结果是审查线索而非安全结论。

主要功能

  1. 01静态审查 MCP 配置
  2. 02列出服务公开的工具
  3. 03为发现项评分并提供证据
  4. 04比较已保存的基线
  5. 05生成 JSON、SARIF 和 HTML 报告
  6. 06按本地策略评估配置

适用场景

  1. 01检查单个 MCP 配置文件
  2. 02在 CI 中生成 SARIF 报告
  3. 03比较服务配置与已保存基线
  4. 04依据本地策略审查配置

MCP 相关

它检查 MCP 服务配置,并可选择连接服务以列出其公开的工具元数据。默认检查为静态模式;连接检查可能启动本地程序或联系配置的端点。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"saagpatel-mcp-audit": {
"command": "uvx",
"args": [
"mcp-audits"
]
}
}
}
启动命令uvx mcp-audits

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-audits2.12.0

工具

13

收录的工具列表 · 更新于 2 周前

参数类型必填说明
skip_connectboolean否

详细介绍

mcp-audit

PyPI Python CI CodeQL License: MIT

查看你的 AI 工具的 MCP 服务能够访问哪些内容。

MCPAudit 会检查 MCP 服务配置,并在收到请求时列出服务公开的工具。它会突出显示已声明的能力、类似指令文本的特征,以及与已保存固定项相比的变化,帮助你判断需要进一步调查的内容。发现结果仅供审核参考:分数较高表示暴露的能力范围较广,并不意味着服务是恶意或不安全的。

重要

软件包名为 mcp-audits;命令名为 mcp-audit。 默认检查为静态检查。check --connect、--connect-all 和旧版命令 scan 可能会启动已配置的本地程序或联系已配置的端点。软件包验证、下载和大模型分析都是单独选择启用的操作。 MCPAudit 不会编辑配置,并且只会报告环境变量的键名, 不会报告其值。分享生成的报告前,请先检查报告内容。

立即试用

mcp-audit                              # static review of supported configs
mcp-audit check --config ./mcp.json    # review this file only; no connections
mcp-audit demo                         # see a bundled synthetic example
mcp-audit explain MCP007               # explain a finding offline; no config reads

使用 uv 安装:

uv tool install mcp-audits

或在不安装的情况下运行:

uvx --from mcp-audits mcp-audit demo

如何处理发现结果

先查看建议的操作,并检查其中提到的能力或证据。 例如,如果文件系统服务可以广泛写入,请限制其配置的目录,然后重新检查报告。基于模式的指令检查可能无法识别经过改写或混淆的文本,也可能需要人工审核。报告没有问题,并不代表获得了安全认证。

Review the server's configured access, narrow it if needed, then run the check again.

请参阅从这里开始了解引导式演练,并参阅阅读结果以理解分数、发现结果和覆盖范围。工作原理介绍了检查边界。

每条规则的含义、可能的后果、手动修复方法和置信度限制均列于发现结果参考;运行 mcp-audit explain MCP013 可离线打印同一条目。显式指定的 --config 来源会标记为 "explicit file; parsed as Claude-style config";解析器的标识并不能确定哪个客户端使用了该文件。

静态工具元数据检查还会标记格式错误的 MCP 标头注释、映射到标头的凭据参数、外部架构引用和意外的图标来源。这些检查只检查已提供的元数据,不会获取架构或图标。

在 CI 中使用

MCPAudit 可以生成 SARIF,并评估本地策略文件。请先从仅检查配置的 CI 开始,然后仅在工作流需要启动这些服务时启用连接检查。请参阅 CI 指南和策略示例。

对于固定版本的发布示例,组合式 Action 可以将 SARIF 上传到 GitHub 代码扫描:

- uses: saagpatel/[email protected]

发布检查清单会指出 Action 引用,以便维护者在有新的公开版本时更新示例。启用该 Action 前,请检查其权限和输入。

选择审查路径

目标起始点功能
了解输出mcp-audit demo使用随附的合成输入
审查单个文件mcp-audit check --config FILE对所选配置执行静态检查
制作分享卡片mcp-audit checkup --config FILE --card checkup.html生成仅含计数的本地 HTML 预览
查看发现的来源mcp-audit inspect列出身份和来源状态
检查单个服务mcp-audit check --connect --server ID连接到一个无歧义的身份
检查整个服务群mcp-audit check --connect-all连接到工作站服务;若要包含项目,请添加 --connect-project-configs
自动执行策略mcp-audit check --policy FILE评估本地策略
审查已保存的固定项mcp-audit pin --status显示基线状态;pin 是 baseline pin 的可见别名

服务 ID 的格式为 CLIENT:SCOPE:NAME;请使用 inspect 输出的确切身份,避免选择不明确。连接检查可能会启动已配置的本地命令,或联系相应端点。

默认情况下,checkup 会生成一张仅含计数、不含名称的本地分享卡片;详见 checkup 指南。

将证据置于上下文中

基于配置的发现描述的是声明的访问权限。连接后列出的信息会补充服务提供的工具元数据,但无法证明服务之后会执行什么操作。连接的 HTTP 扫描还会发送一个不含凭据的 server/discover 请求;若返回 401,则会审查范围受限的公开授权 元数据。探测不会使用配置中的标头值,也不会在使用 --skip-connect 时运行,或在未明确选择连接的项目来源上运行。 这些观察结果无法证明 OAuth 流程已完成。可选的金丝雀测试范围受限,只会在其文档规定的限制内测试符合条件的工具。有关这些观察结果的界限,请参阅工作原理。

报告可能包含配置结构、工具名称和证据文本。机密信息脱敏只能尽力而为(已知问题);分享报告前请先审查。解析时会完整读取配置,但解析过程中会丢弃环境变量值,且绝不会在报告中呈现;报告会保留键名以提供上下文。输出约定列出了稳定字段以及这些输出的限制。

状态

技术栈

MCPAudit 使用 Python 3.11+、uv、pytest、Ruff 和 mypy。JSON、SARIF 和 HTML 报告都是有版本管理的公开接口。提交更改前请运行 make check。

已知风险

静态发现描述的是已配置的访问权限和服务的元数据;无法证明服务之后的行为。机密信息脱敏只能尽力而为。有关此版本的兼容性变更,请参阅3.0 边界提案。

后续计划

本地更改请使用明确的合成测试夹具,保留只读默认设置,并确保覆盖率声明与已完成的检查相符。待 rpds-py/PyO3 锁文件刷新后,重新启用 Python 3.15。3.0 软件包拆分和弃用接口移除仍是计划中的工作。

更多文档

了解固定基线、影子审查、 抑制发现项、信任包指南、 MCP 信任包、输出约定和 沙盒测试夹具。请参阅文档索引、实验项目、 maintainers/ 中的维护者流程,以及 archive/ 中的旧资料。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。