1. 服务概述
一句话简介:CLI优先的API测试工具,用Rust编写,支持结构化失败输出,专为AI代理设计
- 服务名称:tarn-mcp
- 版本号:最新版本
- 开发者/提供方:NazarKalytiuk
- 协议类型:MCP (Model Context Protocol)
2. 核心功能
列出该MCP服务提供的主要功能点:
- 结构化失败输出:每个失败都带有稳定的类别、错误代码和修复提示
- MCP原生支持:暴露list、validate、run、fix_plan作为结构化工具
- YAML测试格式:使用.tarn.yaml文件,LLM已知的格式
- 单静态二进制:curl | sh安装,无运行时依赖
- REST + GraphQL支持:支持两种API类型
- 高级功能:captures、cookies、multipart、includes、polling、Lua脚本、并行执行
- 7种输出格式:支持多种输出格式包括JSON
- 失败优先循环:tarn failures + tarn inspect工作流
- 重新运行失败:tarn rerun --failed只重试失败的测试
- 差异比较:tarn diff比较运行结果
3. 使用场景
描述该服务适合在什么情况下使用:
- AI代理(Claude Code、Cursor、Windsurf、opencode)需要编写和运行API测试
- 需要结构化的API测试失败输出,便于AI理解和修复
- CI/CD流水线中的API测试
- 需要快速编写和执行API测试的场景
- 需要GraphQL API测试
- 需要复杂的API测试流程(认证、捕获、轮询等)
4. 接入方式
4.1 服务端点
CLI工具:通过命令行执行tarn命令
MCP Server:通过stdio协议与MCP客户端通信
4.2 认证与权限
Bearer认证:支持Bearer Token认证
Basic认证:支持Basic Auth认证
Cookie管理:自动捕获和发送Cookie
4.3 数据格式
测试文件使用YAML格式(.tarn.yaml),输出支持JSON等7种格式
4.4 服务器配置
安装tarn:
# macOS / Linux curl -fsSL https://raw.githubusercontent.com/NazarKalytiuk/tarn/main/install.sh | sh # from source cargo install --git https://github.com/NazarKalytiuk/tarn.git --bin tarn5. 接口定义
| MCP工具 | 功能描述 |
|---|---|
| list | 列出将要运行的测试,不实际运行 |
| validate | 验证测试文件语法和配置 |
| run | 运行测试并生成报告 |
| fix_plan | 将失败报告转换为可操作的建议 |
6. 快速开始
6.1 环境要求
- 支持macOS(Intel + Apple Silicon)
- 支持Linux(amd64 + arm64)
- 支持Windows(amd64)
- 无运行时依赖(单静态二进制)
6.2 示例代码
快速开始:
tarn init # 创建tests/目录和tarn.env.yaml配置文件 # 编辑tarn.env.yaml设置base_url tarn run # 运行tests/目录下的所有.tarn.yaml文件最小测试示例:
# tests/health.tarn.yaml name: Health check steps: - name: GET /health request: method: GET url: "{{ env.base_url }}/health" assert: status: 200失败调试流程:
tarn validate <path> # 运行前验证语法/配置 tarn run <path> # 写入.tarn/runs/<run_id>/ tarn failures # 根因分组;级联失败已折叠 tarn inspect last FILE::TEST::STEP # 查看单个失败的完整上下文 # 修复测试或应用代码 tarn rerun --failed # 只重试失败的(文件,测试)对 tarn diff prev last # 确认已修复/新增/持续失败常用命令:
tarn run --format json --json-mode compact # 结构化输出用于代理和CI tarn run --env staging # 使用命名环境 tarn run --only-failed # 静默处理通过的测试 tarn run --watch # 文件变化时重新运行 tarn run --parallel # 并行运行文件 tarn list --tag smoke # 列出将要运行的测试 tarn fmt --check # 规范化YAML,CI门控7. 注意事项
- 结构化失败:每个失败都有failure_category、error_code和修复提示,AI代理可以基于分类而非正则表达式分支
- 失败优先循环:使用tarn failures + tarn inspect工作流,避免阅读兆字节级的完整报告
- 级联失败折叠:一个失败步骤导致的5个下游跳过会显示为一个条目,而非6个
- 重新运行失败:tarn rerun --failed只重试失败的测试,节省时间
- 差异比较:tarn diff prev last将失败指纹分为new/fixed/persistent三类
- 安全执行:使用spawn而非shell执行,防止shell注入
- 输出限制:所有工具都有输出上限,防止上下文溢出
- 可复现运行:设置TARN_FAKER_SEED可冻结所有RNG支持的内置函数