MCP安全测试工具

MCP Testbench是一个全面的安全测试工具,用于在隔离的Docker容器中运行MCP服务器并执行自动化的漏洞扫描、模糊测试和渗透测试。

  • by ubermorgenland
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 ubermorgenland/mcp-testbench

使用说明

MCP测试平台

针对模型上下文协议(MCP)服务器的Docker隔离安全测试。

MCP Testbench 是一个全面的安全测试框架,它在隔离的 Docker 容器中运行 MCP 服务器,并执行自动化漏洞扫描、模糊测试(fuzzing)和渗透测试。

为何选择MCP测试平台?

随着像CVE-2025-6514(CVSS评分9.6)和CVE-2025-49596(CVSS评分9.4)这样的关键漏洞影响到MCP服务器,安全测试已不再是可选项。MCP Testbench提供:

  • 🌐 全面测试与……配合使用 两者都使用标准I/O(stdio) (本地)和 HTTP(超文本传输协议) (远程) MCP 服务器
  • 🔒 Docker 隔离安全地测试潜在恶意服务器 --network none
  • 🔍 CVE 扫描自动检测已知漏洞
  • ⚡ 模糊测试引擎使用畸形输入进行协议一致性测试
  • 🛡️ 注入测试提示注入、SQL注入、跨站脚本(XSS)攻击以及路径遍历测试
  • 📊 安全评分简单的A-F等级评分,并在README文件中使用shields.io徽章展示
  • **🚀 准备就绪,支持CI/CD(持续集成/持续交付)**JSON报告与GitHub Actions集成

经证实的效果在流行的MCP服务器(如time-mcp和docker-mcp)中发现了具有重大影响的F级漏洞。

安装

CLI 安装

pip install mcp-testbench

或者从源头:

git clone https://github.com/ubermorgenland/mcp-testbench
cd mcp-testbench
pip install -e .

GitHub Action(GitHub 动作)

添加到 .github/workflows/security.yml:

- name: MCP Security Scan
  uses: ubermorgenland/mcp-testbench@v1
  with:
    target: 'http://localhost:8000'

见 GITHUB_ACTION.md 翻译为中文是:“GITHUB_ACTION.md 文件”或“关于 GITHUB_ACTION 的说明文件(.md 格式)”。其中,.md 通常表示 Markdown 格式,是一种轻量级的标记语言,用于编写结构化的文本 以获取完整指南。

快速入门

测试Stdio MCP服务器(本地)

大多数MCP服务器使用stdio传输(npx命令)。测试任何stdio服务器:

# Test time-mcp
mcp-testbench run --stdio "npx time-mcp"

# Test docker-mcp
mcp-testbench run --stdio "npx @edjl/docker-mcp"

# Test GitHub MCP server
mcp-testbench run --stdio "npx @modelcontextprotocol/server-github"

# With verbose output
mcp-testbench run --stdio "npx time-mcp" --verbose

# Custom output directory
mcp-testbench run --stdio "npx time-mcp" --output ./security-reports

真实成果我们测试了流行的MCP服务器:

  • time-mcp: F级 (5次崩溃,36%的失败率)
  • docker-mcp: F级 (12次故障,86%的失败率)

两者均在基本输入验证上失败。 查看详细的碰撞分析报告。

测试HTTP MCP服务器(远程)

通过HTTP测试远程MCP服务器:

# Test local HTTP server
mcp-testbench run http://localhost:8000

# Test production deployment
mcp-testbench run https://mcp.yourcompany.com/

# With custom output
mcp-testbench run http://localhost:8000 --output ./security-reports

Docker 隔离测试(推荐)

为了最大程度的安全性,请在Docker中运行测试:

mcp-testbench run --docker --docker-path /path/to/mcp-server

这将您的MCP服务器安装在一个隔离的容器中,其中包含:

  • --network none (无网络连接)
  • --cpus 2 (CPU限制)
  • --memory 2g (内存限制)

输出

MCP 测试平台生成:

  1. JSON 报告详细的测试结果及漏洞详情
  2. 安全徽章为你的 README 文件添加 shields.io Markdown 徽章
  3. 终端摘要带有风险等级的易读结果

示例徽章

请将以下内容添加到您的MCP服务器的README文件中:

![MCP Security Score](./mcp_testbench_report/SECURITY_BADGE.md)

安全测试

CVE 扫描器

  • 检查CVE-2025-6514(mcp-remote远程代码执行漏洞)
  • 检查CVE-2025-49596(MCP Inspector远程代码执行漏洞)
  • 识别出易受攻击的服务器版本

模糊测试引擎

  • 无效的JSON有效载荷
  • 超大输入(100KB+的字符串)
  • 深度嵌套的对象(1000+层)
  • Unicode漏洞和空字节
  • 类型混淆攻击
  • 协议一致性测试

注射测试

  • 提示注入工具中毒攻击
  • 命令注入尝试执行Shell命令
  • 路径遍历文件系统访问测试
  • SQL注入数据库查询操作
  • **XSS(跨站脚本攻击)**跨站脚本攻击载荷

建筑

CLI → TestEngine → PluginRegistry → [CVEScanner, Fuzzer, PromptInjection]
                                                    ↓
                                              Reporter → JSON + Badge

插件系统

MCP测试平台采用插件架构以实现可扩展性:

from engine import Plugin
import httpx

class CustomPlugin(Plugin):
    async def run(self, client: httpx.AsyncClient) -> dict:
        # Your test logic here
        response = await client.get("/")
        return {
            "status": "completed",
            "custom_metric": response.status_code
        }

保存至 plugins/custom_plugin.py 并且它将被自动发现。

安全评分

  • **A(鲜绿色)**无漏洞,通过所有测试
  • **B(绿色)**小问题,无重大漏洞
  • **C(黄色)**中等风险,部分测试失败
  • **D(橙色)**高风险,存在多个漏洞或插件错误
  • **F(红色)**检测到关键漏洞

Docker 隔离

MCP 测试平台在隔离的容器中运行测试,使用:

docker run --network none --cpus 2 --memory 2g

这防止恶意MCP服务器:

  • 发起网络请求
  • 消耗过多资源
  • 访问主机文件系统
  • 破坏测试环境

路线图/时间表

  • [x] GitHub Action 用于 CI/CD ✅
  • [x] Docker 隔离模式 ✅
  • [ ] 限流测试
  • [ ] 日志净化检查
  • [ ] 输入验证测试
  • [ ] 实时CVE信息集成
  • [ ] 可观测性指标
  • [ ] 注册表签名验证

做出贡献

我们欢迎投稿!详见 CONTRIBUTING.md 翻译为中文是:“贡献指南.md” 或 “贡献规范.md”。(注:在中文语境中,".md" 通常指的是 Markdown 格式的文件,因此在翻译时通常不需要对“.md”进行翻译,而是直接保留。) 作为指导方针。

许可证

MIT 许可证 - 请参阅 许可证 详情如下。

参考文献


由ApInference团队构建 | 网站 | Twitter(推特)