mcpField
M
mcp-config-auditor

mcp-config-auditor

本地服务
github.com/GuardBee安全2今天更新

关于 mcp-config-auditor

mcp-config-auditor 是用于审计 MCP 客户端配置文件及已安装服务清单的 MCP 服务和命令行工具,可帮助团队检查客户端可能运行的服务。它不会启动这些服务;本地扫描也不会将配置发送到其他位置。

主要功能

  1. 01审计 Cursor、Claude Desktop、Windsurf 和 VS Code 配置
  2. 02检测未固定版本的软件包和仿冒包名
  3. 03查找配置中的密钥及不安全的审批设置
  4. 04检查远程服务的认证与传输方式
  5. 05发现已安装服务并与允许列表比对
  6. 06支持文本、JSON 和 SARIF 输出

适用场景

  1. 01部署前审查 MCP 客户端配置
  2. 02查找配置文件中暴露的凭据
  3. 03将已安装服务与组织允许列表比对
  4. 04在 CI 中扫描配置目录

MCP 相关

向 MCP 客户端提供 MCP 配置审计能力。它会扫描配置和服务清单,但不会启动已配置的服务。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"guardbee-mcp-config-auditor": {
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-config-auditor"
]
}
}
}
启动命令npx -y @guardbee/mcp-config-auditor

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

安装包
npm@guardbee/mcp-config-auditor0.8.1

工具

6

收录的工具列表 · 更新于 今天

参数类型必填说明
labelstring否在发现结果中显示的可选文件名
contentstring是原始 JSON 配置

详细介绍

@guardbee/mcp-config-auditor

🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇧🇷 Português | 🇪🇸 Español | 🇩🇪 Deutsch

npm version npm downloads License: MIT

一个 MCP 服务,用于审计设备上的 MCP 客户端配置:Cursor mcp.json、Claude Desktop claude_desktop_config.json、Windsurf mcp_config.json 和 VS Code mcp.json。

mcp-server-auditor 会读取 MCP 服务的源代码。此软件包会读取决定 Agent 将运行哪些服务的配置。它不会启动这些服务,也不会将配置发送到任何地方。

默认关闭遥测。设置 GUARDBEE_TELEMETRY=1 后,它会发送服务、工具、成功状态、耗时以及文件路径等简短参数值;较长的字符串以及 content、token 或 password 等字段会被替换为占位符。请参阅 @guardbee/mcp-telemetry。

Claude ──► mcp-config-auditor ──► mcp.json  (or host-wide discover)
              │
              ├─ Unpinned package     (npx -y pkg, @latest)
              ├─ Typosquat            (one edit from a known server package)
              ├─ Secret in env/args
              ├─ autoApprove "*"
              ├─ Remote HTTP without auth
              ├─ Cross-server shadowing (when you pass a tool inventory)
              ├─ Agent SKILL.md (allowed-tools, body, lookalike names)
              └─ Shadow MCP discover  (OWASP MCP09 — host paths + org allowlist)

检查项

模式严重程度OWASP含义
unpinned_packagehighMCP04:2025启动器(npx、uvx、pnpm、yarn、bunx、pipx)运行的包未指定 major.minor.patch 版本
unpinned_container_imagehighMCP04:2025docker run / podman run 按标签而非 @sha256: 摘要启动镜像
typosquat_packagecriticalMCP04:2025包名称与已知 MCP 服务包仅相差一个字符
secret_in_envcriticalMCP01:2025值的格式像凭据,或敏感键包含较长的字面值
secret_in_argscriticalMCP01:2025命令行中包含令牌
auto_approve_wildcardcriticalMCP02:2025autoApprove / alwaysAllow 为 * 或 true
cleartext_remotehighMCP07:2025非回环 http:// URL
unauthenticated_remotehigh/mediumMCP07:2025非回环 URL 未提供 Authorization / API 密钥标头,且没有令牌环境变量
cross_server_tool_shadowhighMCP03:2025两个服务上存在同名工具
confusable_tool_namecriticalMCP03:2025不同服务上的工具名称包含同形异义字符或仅相差一个字符
cross_server_tool_redirecthighMCP03:2025描述指示模型调用其他服务的工具
skill_unrestricted_shellcriticalMCP02:2025allowed-tools 包含未限定的 Bash、shell 或 *
skill_unrestricted_writehighMCP02:2025allowed-tools 包含未限制路径的 Write 或 Edit
skill_instruction_overridecriticalMCP06:2025技能指示模型忽略之前的指令
skill_covert_instructioncriticalMCP06:2025技能指示模型向用户隐瞒其行为
skill_secret_file_readcriticalMCP01:2025技能指示模型读取 .ssh、.env 或类似文件
skill_at_secret_refcriticalMCP01:2025@ 引用内嵌了凭据路径
secret_in_skillcriticalMCP01:2025技能文件中写有字面令牌
skill_name_shadowhighMCP03:2025两个 SKILL.md 文件使用了相同名称
skill_confusable_namecriticalMCP03:2025两个技能名称仅在易混淆字符上不同
shadow_mcp_serverhighMCP09:2025discover — 服务已安装在主机上,但不在组织允许列表中
allowlist_not_configuredmediumMCP09:2025运行 discover 时未配置允许列表
unreviewed_mcp_serverlowMCP09:2025在 discover 期间发现的服务尚无允许列表
mcp_server_drift_across_clientsmediumMCP09:2025两个客户端中的同一服务键映射到不同的包 / URL

回环 URL(localhost、127.0.0.1、::1)不属于远程问题。占位值(${API_KEY}、changeme)不属于机密信息。报告的机密信息匹配项会经过脱敏。Bash(git diff:*) 是命令允许列表,不属于不受限的 shell。单独使用 Read 不会触发标记。

快速开始

{
  "mcpServers": {
    "guardbee-mcp-config-auditor": {
      "command": "npx",
      "args": ["-y", "@guardbee/mcp-config-auditor"]
    }
  }
}
npx @guardbee/mcp-config-auditor scan .cursor/mcp.json --fail-on=high --format=sarif > results.sarif
npx @guardbee/mcp-config-auditor inventory ./tool-inventory.json
npx @guardbee/mcp-config-auditor discover --allowlist=./mcp-allowlist.json --fail-on=high
Shadow MCP discover (MCP09)

遍历本机上常见的 Cursor / Claude Desktop / Claude Code / Windsurf / VS Code / Gemini CLI / Cline / Zed 路径,并将每个已安装的服务与组织允许列表进行比对。不会启动服务。Claude Code 的项目级服务(~/.claude.json 中的 projects["<path>"].mcpServers)会列在 claude-code:<path> 下;支持 Zed 的 context_servers 和带注释的 JSON。

清单。 --format=json 会添加 inventory:针对每个服务,列出其客户端、配置路径、名称、传输方式、命令和参数、npm/PyPI 软件包及版本和是否已固定、URL、环境变量和标头的名称、自动批准设置,以及该服务的检测结果。清单不会包含任何密钥:环境变量和标头的值会省略,--token/--api-key 类标志后面的参数值、KEY=value 键值对、提供商令牌和连接字符串中的密码都会替换为 [redacted],URL 中的凭据和查询参数值也会移除。--format=text 会打印相同的列表;--format=sarif 会打印检测结果。

全组织范围。 --upload 会将清单发送到 GuardBee 仪表板(使用 GUARDBEE_API_KEY,即具有 gateway.write 范围的工作区密钥),仪表板会保留每台机器的最新清单;可通过设备管理工具或登录脚本运行此命令。清单会包含机器的主机名、操作系统和操作系统用户名;--no-user 会省略用户名。

GUARDBEE_API_KEY=gb_… npx @guardbee/mcp-config-auditor discover --allowlist=./mcp-allowlist.json --upload --fail-on=none

允许列表 JSON:

{
  "names": ["filesystem", "github"],
  "packages": ["@modelcontextprotocol/server-filesystem", "@guardbee/mcp-secret-scanner"],
  "hosts": ["mcp.example.com"]
}

也可以按行填写:name:filesystem、package:@scope/pkg、host:mcp.example.com,或直接填写服务名称。

目录扫描会打开 mcp.json、mcp_config.json、claude_desktop_config.json 和 SKILL.md。传入文件路径即可扫描其他名称的文件。名为 SKILL.md 的文件会作为 Agent 技能进行审计。目录扫描会显示同名和相似技能的检测结果,因为单个文件无法查看其他文件。

guardbee.yml:

mcp-config-auditor:
  fail-on: high
  max-files: 5000
  exclude:
    - "fixtures/"

工具清单结构:

{
  "servers": [
    { "name": "github", "tools": [{ "name": "create_issue", "description": "Open an issue" }] }
  ]
}

由于客户端配置不会列出工具,检测影子工具需要该清单。rug-pull-detector 可以收集实时的 tools/list;此软件包会比对其中的多个列表。

反馈

有问题、想法或误报?欢迎在 GitHub Discussions 中发起讨论,或提交问题。如果 GuardBee 对你有帮助,请在代码库点一个 ⭐,帮助其他人发现它。

评论

支持 Markdown

第一次接触 MCP?

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

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