统一的MCP服务器安全扫描器,支持配置、渗透测试和仓库扫描模式。生成SARIF报告用于CI/CD集成,通过token和LLM分析器检测秘密、漏洞和配置错误。
MCP X-Ray 是一个统一的、开源的模型上下文协议(MCP)服务器安全扫描与渗透测试解决方案。它生成可用于生产的 SARIF 报告,以便无缝集成到安全工具和 CI/CD 流水线中。扫描结果可以可选地上传到 Traceforce Atlas 进行集中安全管理和跟踪。Atlas 注册表中包含超过 600 个 MCP,为 MCP 生态系统提供了全面的安全评估数据库。

# 克隆仓库
git clone https://github.com/traceforce/mcp-xray
cd mcp-xray
# 安装所需依赖(buf 等)
make install-dependencies
# 构建所有内容(生成 protobuf 代码并构建二进制文件)
# 二进制文件将在当前目录下创建为 `mcpxray`
make all
扫描 MCP 配置文件中的安全问题;在渗透测试前运行以建立基线。
# 扫描特定的 MCP 配置文件(默认使用令牌分析器)
./mcpxray config-scan /path/to/mcp/config.json
# 自动扫描 Cursor、Claude 和 Windsurf 的所有已知 MCP 配置路径。
# 已知配置位置(相对于 home 目录):
# ~/.cursor/mcp.json (Cursor)
# ~/Library/Application Support/Claude/claude_desktop_config.json (Claude Desktop)
# ~/.codeium/windsurf/mcp_config.json (Windsurf)
./mcpxray config-scan --scan-known-configs
# 使用 LLM 分析器进行更广泛和深入的分析
./mcpxray config-scan /path/to/mcp/config.json --analyzer-type llm --llm-model claude-3-5-sonnet-20241022
# 指定自定义输出文件
./mcpxray config-scan /path/to/mcp/config.json --output custom-report.sarif.json
检测能力:
通过实际调用 MCP 服务器的工具来执行安全测试计划。运行渗透测试需要 LLM。在生产环境中实际部署前运行此操作。
# 使用自动生成的测试计划运行渗透测试(需要 LLM 模型)
./mcpxray pentest /path/to/mcp/config.json --llm-model claude-sonnet-4-5
# 使用自定义的测试计划 YAML 文件
./mcpxray pentest /path/to/mcp/config.json --test-plan /path/to/test-plan.yaml --llm-model claude-sonnet-4-5
检测能力: 代码执行、SSRF、路径遍历、授权绕过、输入注入、信息泄露和 DoS 漏洞
扫描代码库中的漏洞;当您拥有或可以更改代码时使用。
# 扫描当前目录
./mcpxray repo-scan
# 扫描特定仓库
./mcpxray repo-scan /path/to/repository
# 指定自定义输出文件
./mcpxray repo-scan --output custom-report.sarif.json
检测能力:
MCP X-Ray 生成 SARIF(静态分析结果交换格式) 格式的报告,该格式被安全工具和 CI/CD 平台广泛支持。
将扫描结果上传到 Traceforce Atlas,实现集中安全管理、报告和随时间跟踪。在任何扫描命令中添加 --upload 标志。使用 --clean-up 在成功上传后删除生成的文件。
所需的环境变量:
TRACEFORCE_CLIENT_IDTRACEFORCE_CLIENT_SECRET这些凭据可以从 Atlas 用户界面的设置页面下载。
# 上传配置扫描结果
./mcpxray config-scan /path/to/mcp/config.json --upload
# 上传并清理
./mcpxray config-scan /path/to/mcp/config.json --upload --clean-up
# 上传渗透测试结果
./mcpxray pentest /path/to/mcp/config.json --llm-model claude-sonnet-4-5 --upload

示例扫描输出可在 examples/findings/ 中找到。
示例 MCP 配置文件可在 examples/mcp_configs/ 目录中找到。
示例 MCP 服务器位于 examples/mcp_server/ 目录中:
mcp_server.py:FastMCP 服务器,使用 streamable-http 传输mcp.json:连接到服务器的配置文件README.md:设置和扫描服务器的说明MCP X-Ray 提供两种分析工具安全性的方法:
令牌分析器使用基于规则的模式匹配快速检测工具描述中的安全问题。它速度快,不需要 API 密钥,并且可以离线工作。令牌分析器使用两种类型的规则:
internal/configscan/tokenanalyzer/token_rules.yaml 中。每条规则指定:
internal/yararules/unsafe_patterns.yar 中。这些规则检测不安全的系统命令模式。用法:
mcpxray config-scan --analyzer-type token
LLM 分析器使用大型语言模型对工具描述进行深度语义分析,提供更全面的安全洞察。
用法:
mcpxray config-scan --analyzer-type llm --llm-model <model-name>
默认情况下,渗透测试工具使用 LLM 根据 MCP 服务器提供的可用工具自动生成测试计划。测试计划也可以自定义并以 YAML 文件形式提供。测试计划是包含带有输入参数和期望输出的测试用例的 YAML 文件。
默认行为(LLM 生成的测试计划):
./mcpxray pentest /path/to/mcp/config.json --llm-model claude-sonnet-4-5
自定义测试计划:
./mcpxray pentest /path/to/mcp/config.json --test-plan /path/to/test-plan.yaml --llm-model claude-sonnet-4-5
MCP X-Ray 支持以下用于工具分析的 LLM 提供商:
claude-sonnet-4-5ANTHROPIC_API_KEY 环境变量gpt-5OPENAI_API_KEY 环境变量arn:aws:bedrock: 开头且包含 llama 的 Meta Llama 推理配置文件 ARNarn:aws:bedrock:<region>:<account-id>:inference-profile/us.meta.llama3-2-1b-instruct-v1:0对于基于 LLM 的工具分析,配置您的 LLM API 凭据:
export ANTHROPIC_API_KEY=your-api-key
export OPENAI_API_KEY=your-api-key
每个提供商都需要自己的特定环境变量。工具会根据模型名称自动检测要使用的提供商。
对于 AWS Bedrock 模型,请使用标准的 AWS SDK 方法之一配置 AWS 凭据:
# 选项 1:环境变量
export AWS_ACCESS_KEY_ID=your-access-key
export AWS_SECRET_ACCESS_KEY=your-secret-key
export AWS_REGION=us-east-1
# 选项 2:AWS 凭据文件 (~/.aws/credentials)
# 选项 3:IAM 角色(在 EC2/ECS/Lambda 上运行时)
MCP X-Ray 使用 AWS SDK,该 SDK 会自动从环境、凭据文件或 IAM 角色加载凭据。
欢迎贡献!请确保: