内容
# 测试MCP
基于模型上下文协议(MCP)构建的通用AI驱动测试服务器。
允许AI代理检查、执行、测试、监控、调试和报告软件项目。
## 快速入门
```bash
# 安装
pip install -e ".[dev]"
# 安装Playwright浏览器(用于UI测试)
playwright install chromium
# 可选安全工具
pip install bandit semgrep trivy
# 启动服务器(SSE模式)
testing-mcp serve
# 或stdio模式(用于Claude Desktop、Cursor等)
testing-mcp stdio
```
## MCP客户端配置
将以下内容添加到您的MCP客户端配置文件(`claude_desktop_config.json`、`~/.config/opencode/opencode.json`等):
```json
{
"mcpServers": {
"testing-mcp": {
"command": "testing-mcp",
"args": ["stdio"]
}
}
}
```
或将`testing-mcp.json`复制到您的项目根目录中以实现自动发现。
## 配置
在您的项目根目录中创建一个`testing-mcp.toml`文件:
```toml
[server]
host = "127.0.0.1"
port = 8080
# 环境变量也支持:
# TESTING_MCP_HOST=0.0.0.0
# TESTING_MCP_PORT=8080
# TESTING_MCP_LOG_LEVEL=DEBUG
```
## 健康检查端点
在SSE模式下运行服务器时,服务器会暴露HTTP健康检查端点:
| 端点 | 描述 |
|----------|-------------|
| `GET /health` | 服务器状态、版本、运行时间、工具数量 |
| `GET /health/live` | 存活探测(始终200) |
| `GET /health/ready` | 就绪探测(始终200) |
用于Docker、K8s和监控系统。
## MCP工具(共62个)
### 核心
| 工具 | 描述 |
|------|-------------|
| `analyze_project_tool` | 检测语言、框架、结构、依赖项 |
| `run_tests` | 发现并执行现有测试 |
| `generate_tests` | AI生成单元测试(pytest、unittest、Jest) |
| `generate_report` | 生成Markdown、HTML或JSON报告 |
| `compare_runs` | 测试运行之间的回归比较 |
| `suggest_fix` | 根原因分析和修复建议 |
| `inspect_logs` | 日志分析,带有错误模式匹配 |
| `fix_gitignore` | 添加缺少的条目以防止凭证泄漏 |
| `generate_dockerfile` | 从项目自动生成Dockerfile |
| `generate_ci_workflow` | 生成GitHub Actions或GitLab CI配置 |
| `extract_migration` | 将内联SQL模式提取到迁移文件中 |
| `ping` | 健康检查 |
### 测试
| 工具 | 描述 |
|------|-------------|
| `console_test` | 测试控制台应用程序(stdin、stdout、退出代码) |
| `fuzz_test` | 使用随机输入模糊测试控制台应用程序 |
| `ui_test` | Playwright浏览器自动化 |
| `api_test` | API端点测试,带有模式验证 |
| `discover_endpoints` | 自动发现API端点 |
| `database_validate` | 验证DB迁移、约束、回滚 |
| `performance_test` | 启动时间、API延迟、负载测试 |
| `load_test` | 并发负载/压力测试,带有延迟百分位 |
| `integration_tests` | 发现并运行集成测试 |
| `smoke_tests` | 端点和命令的冒烟测试 |
| `mutation_test` | 变异测试以评估测试质量 |
### 安全
| 工具 | 描述 |
|------|-------------|
| `security_scan` | 运行所有安全扫描(模式:all、sast、secrets、headers、tls、deps、dast、crawl) |
| `scan_sast` | 静态分析:SQLi、XSS、CSRF、SSRF、CMDI、路径遍历、弱加密等 |
| `scan_secrets` | 扫描硬编码的API密钥、令牌、凭证、证书 |
| `scan_headers` | 检查HTTP安全头(HSTS、CSP、X-Frame-Options等) |
| `scan_tls` | 验证TLS/SSL证书 |
### 浏览器自动化(隐身)
| 工具 | 描述 |
|------|-------------|
| `browser_new_session` | 创建隐身浏览器会话(反机器人指纹识别) |
| `browser_navigate` | 导航到URL,自动处理Cloudflare挑战 |
| `browser_click` | 按CSS选择器点击元素 |
| `browser_fill` | 填写表单字段 |
| `browser_select_option` | 选择下拉选项 |
| `browser_get_text` | 从页面/元素获取可见文本 |
| `browser_get_html` | 获取完整页面或元素HTML |
| `browser_evaluate` | 执行任意JavaScript |
| `browser_screenshot` | 将截图保存到文件或返回base64 |
| `browser_get_cookies` | 列出会话cookie |
| `browser_list_sessions` | 显示所有活动浏览器会话 |
| `browser_set_active_session` | 切换活动会话 |
| `browser_close_session` | 关闭并清理会话 |
### 视觉
| 工具 | 描述 |
|------|-------------|
| `take_screenshot_tool` | 捕获网页截图 |
| `visual_regression` | 比较截图,突出差异 |
| `create_diff_gif` | 基线和当前之间的动画GIF |
| `accessibility_scan` | 使用axe-core进行WCAG无障碍扫描 |
| `check_color_contrast_tool` | 检查WCAG颜色对比度 |
### API和协议
| 工具 | 描述 |
|------|-------------|
| `graphql_test` | 运行GraphQL查询 |
| `graphql_introspect` | 反射GraphQL模式 |
| `graphql_detect` | 检测GraphQL端点 |
| `websocket_test` | 测试WebSocket连接 |
| `grpc_test` | 测试gRPC端点 |
### 平台
| 工具 | 描述 |
|------|-------------|
| `detect_mobile` | 检测Android、Flutter、React Native项目 |
| `run_mobile_tests` | 运行Android(Gradle)或Flutter测试 |
| `detect_game` | 检测Godot、Unity、Unreal项目 |
| `run_game_tests` | 运行游戏引擎测试 |
| `infrastructure_info` | Docker、K8s、CI配置检测 |
| `check_docker` | 检查Docker可用性 |
| `check_kubernetes` | 检查Kubernetes可用性 |
### 配置文件
| 工具 | 描述 |
|------|-------------|
| `profile_memory` | 测量当前内存使用量 |
| `profile_resources` | 测量启动时间和资源使用量 |
| `profile_api` | 配置文件API内存和延迟 |
| `system_info` | CPU、内存、磁盘、网络信息 |
## 安全扫描详情
### SAST(30个内置规则)
检测15+漏洞类别:
- **SQL注入** — 字符串连接、f-string、原始查询
- **XSS** — innerHTML、dangerouslySetInnerHTML、不安全的模板渲染
- **命令注入** — os.system、subprocess(shell=True)、exec/eval、popen
- **SSTI** — 模板注入(Jinja2、Flask `render_template_string`)
- **路径遍历** — open/Path,带有用户控制的路径,不安全的连接
- **SSRF** — 请求/httpx/fetch/urlopen中的用户控制URL
- **CSRF** — csrf_exempt装饰器、禁用的Django CSRF中间件
- **IDOR** — 参数中的不安全直接对象引用
- **LDAP注入** — 不安全的LDAP搜索过滤器
- **XXE** — 启用外部实体扩展的XML解析器
- **反序列化** — pickle.loads、yaml.load、marshal.load
- **硬编码秘密** — 源代码中的密码、API密钥、令牌
- **弱加密** — MD5、SHA1、DES、RC4、ECB模式
- **弱CORS** — `Access-Control-Allow-Origin: *`,带有凭证
- **原型污染** — 不安全的对象合并/赋值
- **大规模赋值** — `**kwargs`或`update()`,带有请求数据
- **竞争条件** — 文件操作中的TOCTOU模式
- **文件上传** — 无限制的文件上传,验证不足
- **ReDoS** — 不安全的正则表达式模式,带有用户输入
- **信息泄露** — 堆栈跟踪、调试端点暴露
- **调试模式** — 生产环境中启用Flask调试模式
### 秘密扫描器(25+模式)
扫描:
AWS密钥、GitHub令牌、GitLab令牌、Slack令牌、Discord令牌、JWT令牌、Stripe密钥、SSH私钥、PGP私钥、Google API密钥、Azure密钥、GCP密钥、Telegram令牌、Twilio凭证、Heroku API密钥、npm令牌、npmrc身份验证令牌、数据库连接字符串(MySQL、PostgreSQL、MongoDB、Redis)和通用承载者/令牌模式
### HTTP头扫描器(15个检查)
验证:
Strict-Transport-Security(包括弱`max-age`)、Content-Security-Policy(包括不安全的`script-src 'unsafe-inline'`)、X-Frame-Options、X-Content-Type-Options、Referrer-Policy、Permissions-Policy、Cross-Origin-Embedder-Policy、Cross-Origin-Opener-Policy、Cross-Origin-Resource-Policy、服务器披露、X-Powered-By披露
### TLS/SSL检查器
验证证书、到期日期、SAN条目、协议版本
### DAST(动态分析)
- 技术指纹识别(服务器头、cookie、框架模式)
- 端点发现(JS源映射、常见API路径)
- SQL注入检测(基于错误、基于时间)
- XSS检测(反射有效载荷)
- 身份验证感知扫描
### 依赖项扫描器
通过OSV.dev API扫描锁定文件:
- `requirements.txt`、`Pipfile.lock`、`poetry.lock`
- `package-lock.json`、`Cargo.lock`、`Gemfile.lock`、`go.sum`
### 配置扫描器
**Docker检查(10个)**:以root用户运行、使用最新标签、ADD vs COPY、构建参数中的秘密、暴露的端口、缺少HEALTHCHECK、没有.dockerignore、漏洞基础镜像、ENTRYPOINT中的shell、多阶段构建缺失
**K8s检查(10个)**:特权容器、hostNetwork、runAsNonRoot、readOnlyRootFilesystem、allowPrivilegeEscalation、资源限制、seccomp、securityContext、hostPID/IPC、ServiceAccount令牌挂载
**CI/CD检查(5个)**:硬编码秘密、不固定的操作、脚本注入、缺少代码签出、缺少工件上传
### 网络爬虫
通过以下方式发现端点和文件:
- HTML源模式(表单、链接、脚本、API端点)
- JS源扫描(XHR/fetch URL、路由模式)
- 常见文件(robots.txt、sitemap.xml、security.txt、.well-known/)
### 报告器
统一的报告构建器,聚合所有扫描结果:
- 跨扫描器的查找重复项
- 风险评分(NONE → INFO → LOW → MEDIUM → HIGH → CRITICAL)
- 文本和JSON输出格式
## 项目结构
```
testing_mcp/
├── analyzers/ # 项目检测(语言、框架、依赖项)
├── api/ # API测试(httpx、OpenAPI、GraphQL、WebSocket、gRPC)
├── browser/ # 隐身浏览器自动化(反机器人指纹识别、Cloudflare绕过)
├── database/ # 数据库验证(迁移、约束)
├── fix/ # 修复工具(gitignore、Docker、CI、迁移)
├── generators/ # AI测试生成
├── performance/ # 基准测试(Locust、负载/压力测试、性能分析)
├── plugins/ # 插件框架(语言、框架、报告器)
├── reporters/ # 报告生成(Markdown/HTML/JSON)
├── runners/ # 测试执行器 + 分析(Python、Java、JS、Go、Rust、移动端、游戏)
├── security/ # SAST(30个规则)、秘密(25+模式)、头、TLS、DAST、
│ # 依赖项扫描(OSV.dev)、配置(Docker/K8s/CI)、
│ # 网络爬虫、报告器
├── server/ # MCP服务器 + 工具注册
├── tests/ # 测试套件(220+测试,涵盖所有模块)
├── ui/ # Playwright UI自动化 + 无障碍 + 视觉回归
└── utils/ # 配置、实用工具
```
## 运行测试
```bash
pip install -e ".[dev]"
pytest testing_mcp/tests/ -v --cov --cov-report=term-missing
```
## Docker
```bash
docker build -t testing-mcp .
docker run -p 8080:8080 testing-mcp
```
## 许可证
LGPL v2.1