审计MCP服务器配置Skill audit-mcp

此技能用于审计MCP服务器配置的质量、合规性和安全性,通过验证.mcp.json文件和服务设置,确保配置正确、安全,避免硬编码凭证和安全隐患。关键词:MCP审计、安全审计、配置验证、合规性检查、DevOps工具、AI工具集成。

安全审计 0 次安装 0 次浏览 更新于 3/11/2026

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.jsonmcpServers键)
插件 plugins/*/.mcp.json
企业 managed-mcp.json(系统路径)

构建发现配置的列表,包括范围、路径和服务器数量。

步骤3:解析参数和过滤

解析范围选择器和--force标志。过滤发现配置以匹配请求的范围。

步骤4:呈现审计计划

显示审计模式(智能或强制)、发现的配置,并列出每个文件及其范围和服务器数量。

步骤5:执行审计

对于每个配置,调用mcp-auditor子代理,传递范围、路径、配置类型和上次审计日期。当存在多个配置时,并行运行审计。

步骤5.5:验证发现

除非--skip-validation标志存在:

  1. 启动audit-finding-validator代理,传递:
    • project_root:捕获的项目根路径
    • audit_type:“mcp”
    • audit_files.claude/temp/audit-*-mcp-*.json文件路径列表
  2. 等待验证完成
  3. 读取更新后的带有验证结果的JSON文件
  4. 在聚合前完全过滤掉FALSE_POSITIVE发现
  5. 注意:过滤的发现记录到.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审计(强制模式)...
[无论修改状态如何,审计所有配置]