name: audit-mcp description: 审计MCP服务器配置的质量、合规性和安全性。用于验证.mcp.json文件和服务设置。 argument-hint: [project | user | settings | all] [–force | --skip-validation] allowed-tools: Read, Bash, Glob, Grep, Task
审计MCP命令
审计MCP服务器配置的质量、合规性和安全性。
步骤0:初始化审计环境
获取当前UTC日期,捕获项目根路径,确保临时目录存在,并在用户确认后清理任何过时的审计文件。调用claude-ecosystem:mcp-integration技能以加载权威的MCP配置指导。
审计内容
此命令从多个来源审计MCP服务器配置:
- 项目范围:项目根目录中的
.mcp.json(版本控制、团队共享) - 用户(全局)范围:
~/.claude.json中的根级mcpServers键 - 本地范围:
.claude/settings.local.json中的mcpServers键(如果存在) - 插件范围:插件目录内的
.mcp.json文件 - 企业范围:系统目录中的
managed-mcp.json
对于每个配置,验证JSON结构、服务器字段、传输类型、身份验证、环境变量使用和安全性(无暴露凭据)。
命令参数
- 无参数:审计所有可发现的MCP配置
- project:仅审计项目根目录的
.mcp.json - user:审计用户级配置(
~/.claude.json) - all:审计所有MCP配置(项目 + 用户 + 插件)
- –force:无论修改状态如何都进行审计
- –skip-validation:跳过发现验证(更快,但可能包含误报)
步骤1:CLI优先发现(强制)
**始终首先运行claude mcp list**以获取配置的MCP服务器的权威列表。这提供了运行系统的真实情况,并防止错过存储在意外的位置的配置。
# 获取带有范围信息的权威列表
claude mcp list
# 如果需要,获取特定服务器的详细信息
claude mcp get <服务器名称>
为什么CLI优先:
- 文件位置可能在Claude Code版本之间更改
- 用户配置在
~/.claude.json中(不是~/.claude/.mcp.json- 此路径不存在) mcpServers键可能在文件深处(200+行),容易因部分读取而错过- CLI输出显示范围、连接状态和传输类型
步骤2:验证配置文件
在CLI发现后,验证配置文件是否存在且可读。对于大文件如~/.claude.json,使用grep在读取前找到mcpServers键的位置。
配置位置(根据官方文档):
| 范围 | 位置 |
|---|---|
| 项目 | .mcp.json(项目根目录) |
| 用户(全局) | ~/.claude.json(根级mcpServers键) |
| 本地 | .claude/settings.local.json(mcpServers键) |
| 插件 | plugins/*/.mcp.json |
| 企业 | managed-mcp.json(系统路径) |
构建发现配置的列表,包括范围、路径和服务器数量。
步骤3:解析参数和过滤
解析范围选择器和--force标志。过滤发现配置以匹配请求的范围。
步骤4:呈现审计计划
显示审计模式(智能或强制)、发现的配置,并列出每个文件及其范围和服务器数量。
步骤5:执行审计
对于每个配置,调用mcp-auditor子代理,传递范围、路径、配置类型和上次审计日期。当存在多个配置时,并行运行审计。
步骤5.5:验证发现
除非--skip-validation标志存在:
- 启动
audit-finding-validator代理,传递:project_root:捕获的项目根路径audit_type:“mcp”audit_files:.claude/temp/audit-*-mcp-*.json文件路径列表
- 等待验证完成
- 读取更新后的带有验证结果的JSON文件
- 在聚合前完全过滤掉FALSE_POSITIVE发现
- 注意:过滤的发现记录到
.claude/temp/audit-filtered-findings.json
如果--skip-validation标志存在:
- 完全跳过验证阶段(保持当前速度)
- 呈现所有发现而无过滤
- 在摘要中注明:“验证:已跳过”
步骤6:最终摘要
报告审计的总配置、服务器数量、按范围的结果和详细表格。列出安全警报和配置问题及修复步骤。
包括验证统计(如果执行了验证):
- 验证执行:是/否
- 发现验证:X
- 误报过滤:Y
- 已验证发现:Z
- 未验证发现:W
重要说明
安全考虑
MCP配置绝不能在版本控制的文件中包含硬编码的API密钥、令牌或密码。对于敏感值,使用环境变量扩展(${API_KEY})。
凭据严重性按位置:
| 位置 | 硬编码凭据 | 严重性 |
|---|---|---|
.mcp.json(项目,版本控制) |
严重失败 | 密钥在git中暴露 |
~/.claude.json(用户,非版本控制) |
警告 | 个人使用可接受 |
传输类型
有效类型:stdio(本地进程)、http(远程推荐)、sse(已弃用)。
跨平台路径
| 平台 | 用户配置位置 |
|---|---|
| Unix | ~/.claude.json |
| Windows | %USERPROFILE%\.claude.json |
审计日志位置
所有审计结果写入.claude/audit/mcp.md。
使用/audit-log mcp查看当前审计状态。
使用示例
示例1:审计所有MCP配置
用户:/audit-mcp
Claude:首先运行CLI发现...
$ claude mcp list
perplexity: cmd /c npx -y perplexity-mcp - 已连接(用户范围)
firecrawl: cmd /c npx -y firecrawl-mcp - 已连接(用户范围)
...
## 审计计划
**模式**:智能
**通过CLI发现的MCP服务器**:5
**配置文件**:~/.claude.json
### 要审计的服务器:
1. [用户] perplexity - stdio
2. [用户] firecrawl - stdio
3. [用户] context7 - stdio
4. [用户] microsoft-learn - http
5. [用户] ref - http
[启动mcp-auditor子代理]
## MCP审计完成
**总服务器**:5
**范围**:用户(全局)
| 服务器 | 传输 | 安全性 | 结果 |
| --- | --- | --- | --- |
| perplexity | stdio | 警告:硬编码API密钥 | 85/100 |
| firecrawl | stdio | 警告:硬编码API密钥 | 85/100 |
| context7 | stdio | 通过 | 95/100 |
| microsoft-learn | http | 通过 | 95/100 |
| ref | http | 警告:URL中的API密钥 | 85/100 |
示例2:仅审计项目MCP
用户:/audit-mcp project
Claude:检查项目.mcp.json...
[如果存在,审计项目根目录的.mcp.json]
示例3:强制审计
用户:/audit-mcp --force
Claude:运行完整的MCP审计(强制模式)...
[无论修改状态如何,审计所有配置]