Safe MCP server + CLI for testing, scoring, and inspecting n8n workflows
Config-driven test suites with tiered scoring, execution traces, and a built-in node catalog.
______________________________________________________________________
为什么?
大多数n8n MCP集成都能为您提供 完全管理员权限 --凭证、破坏性操作、自动修复循环。这对开发来说很好,但对CI、共享环境或自主代理来说是有风险的。
n8n-workflow-tester-safe 采取了不同的方法:
| 功能 | 此MCP | 完全管理MCP |
|---|---|---|
| 带有评分的测试工作流程 | 是 | 否 |
| 执行跟踪(轻量级) | 是 | 否 |
| 含建议的节点目录 | 是 | 否 |
| 凭证管理 | 排除 | 是的 |
| 秘密生命周期 | 排除 | 是的 |
| 自动修复循环 | 排除 | 一些 |
结果: 一个专注的工具,可以很好地进行测试和检查,没有完整的管理包装的风险表面。
______________________________________________________________________
快速开始
1.安装
git clone https://github.com/souzix76/n8n-workflow-tester-safe.git
cd n8n-workflow-tester-safe
npm install && npm run build2.配置
cp .env.example .env
# Edit .env with your n8n URL and API keyN8N_BASE_URL=http://127.0.0.1:5678
N8N_API_KEY=your_n8n_api_key_here
DEFAULT_TIMEOUT_MS=300003.跑步
作为MCP服务器 (适用于Claude、OpenClaw或任何MCP客户端):
node dist/index.js作为CLI (用于脚本和CI):
node dist/cli.js --config ./workflows/example.json______________________________________________________________________
MCP客户端配置
克劳德代码(~/.claude.json)
{
"mcpServers": {
"n8n-workflow-tester": {
"type": "stdio",
"command": "node",
"args": ["/path/to/n8n-workflow-tester-safe/dist/index.js"],
"env": {
"N8N_BASE_URL": "http://localhost:5678",
"N8N_API_KEY": "your_api_key"
}
}
}
}OpenClaw/任何MCP客户端
服务器使用 stdio传输 --与任何支持stdio的MCP客户端兼容。
______________________________________________________________________
运作原理
测试配置
在JSON文件中定义测试:
{
"workflowId": "abc123",
"workflowName": "my-webhook-handler",
"triggerMode": "webhook",
"webhookPath": "/webhook/my-handler",
"timeoutMs": 15000,
"qualityThreshold": 85,
"testPayloads": [
{
"name": "happy-path",
"data": { "message": "Hello", "userId": "user_001" }
},
{
"name": "empty-input",
"data": { "message": "" }
},
{
"name": "large-payload",
"data": { "items": ["a","b","c","d","e","f","g","h","i","j"] }
}
],
"tier3Checks": [
{
"name": "has-response",
"field": "output",
"check": "not_empty",
"severity": "error"
},
{
"name": "response-length",
"field": "output.message",
"check": "min_length",
"value": 5,
"severity": "warning",
"message": "Response too short"
}
]
}评分系统
每次测试运行都会产生一个 两级评分:
Final Score = (Tier 1 x 70%) + (Tier 3 x 30%)| 层 | 重量 | 它检查什么 |
|---|---|---|
| 第1级 (基础设施) | 70% | HTTP成功,超时合规,非空输出 |
| 第3层 (质量) | 30% | 自定义字段检查:包含、等于、最小/最大长度、非空 |
测试 通过 什么时候:
- 一级得分=100(所有基础设施检查均通过)
- 最终得分>=质量阈值(默认值85)
- 无严重性问题
error
输出示例
{
"passed": true,
"score": 93,
"tier1Score": 100,
"tier3Score": 80,
"issues": [
{
"tier": "tier3",
"severity": "warning",
"check": "response-length",
"message": "Response too short"
}
]
}______________________________________________________________________
工具参考
测试(3个工具)
| 工具 | 说明 |
|---|---|
test_workflow | 从配置文件运行单个有效负载测试 |
evaluate_workflow_result | 运行测试并返回评估分数+问题 |
run_workflow_suite | 在配置中运行所有有效载荷,返回每个有效载荷的分数 |
工作流操作(5个工具)
| 工具 | 说明 |
|---|---|
create_workflow | 从JSON创建新工作流 |
update_workflow | 用ID替换现有工作流 |
delete_workflow | 按ID删除工作流 |
add_node_to_workflow | 将节点附加到现有工作流 |
connect_nodes | 在两个节点之间创建连接 |
内省(5个工具)
| 工具 | 说明 |
|---|---|
get_workflow_summary | 简明摘要:节点计数、名称、类型、禁用状态 |
list_node_types | 列出n8n实例中的所有可用节点类型 |
get_node_type | 特定节点类型的完整架构/元数据 |
list_executions | 最近执行的操作,可按工作流和状态进行筛选 |
get_execution | 按ID列出的完整执行数据 |
get_execution_trace | 轻量级的每节点跟踪 --计时、错误、项目计数 |
目录(5个工具)
| 工具 | 说明 |
|---|---|
get_catalog_stats | 导入目录中的节点/触发器/凭据计数 |
search_nodes | 按名称模糊搜索,可选仅触发过滤器 |
list_triggers | 目录中的所有触发节点 |
validate_node_type | 检查节点类型是否存在,获取接近的匹配项 |
suggest_nodes_for_task | 自然语言任务输入,相关节点输出 |
______________________________________________________________________
配置示例
这 workflows/ 目录包括现成的测试配置:
| 文件 | 触发模式 | 有效载荷 | 描述 |
|---|---|---|---|
example.json | webhook | 2 | 基本webhook回声测试 |
telegram-bot.json | webhook | 3 | 电报机器人命令处理程序 |
api-pipeline.json | 执行 | 3 | 多步API数据管道 |
______________________________________________________________________
建筑
src/
index.ts MCP server (stdio) + tool registration
cli.ts CLI runner for config-driven tests
n8n-client.ts REST client for n8n API v1
evaluator.ts Two-tier scoring engine
catalog.ts Node catalog parser + fuzzy search
config.ts JSON config reader + Zod validation
types.ts TypeScript interfaces
catalog/ Imported n8n node catalog (436 nodes, 389 credentials)
workflows/ Example test suite configs设计约束
- 仅限stdio传输 --无HTTP服务器,无需管理身份验证
- 显式工具曲面 --19个工具,每个工具都有明确的用途
- 依赖性占用空间小 --只有
@modelcontextprotocol/sdk和zod - 无凭据生命周期 --不会读取、创建或删除凭据
- 无代理汽车维修 --报告问题,不自动修复
______________________________________________________________________
安全姿势
包含
- 工作流测试执行(webhook+API)
- 分级评分的产出评估
- 工作流CRUD(创建、读取、更新、删除)
- 图形编辑(添加节点、连接)
- 执行检查和跟踪
- 节点目录查找和验证
故意排除
- 凭证管理
- 秘密生命周期
- 破坏性恢复流
- 自主LLM自动修复循环
- 生产部署操作
______________________________________________________________________
路线图
- \[\]只读模式标志(禁用所有变异工具)
- \[\]工作流程差异总结(比较前后)
- \[\]常见模式的可重用评估预设
- \[\]更丰富的跟踪可视化
- \[\]测试有效载荷的夹具库
- \[\]npm包
npx用法
______________________________________________________________________
贡献
- 分叉回购
- 创建要素分支(
git checkout -b feat/my-feature) - 提交更改(
git commit -m 'feat: add my feature') - 推送到分支(
git push origin feat/my-feature) - 打开拉取请求
______________________________________________________________________
许可证
______________________________________________________________________
Originally created by James (OpenClaw). Enhanced and maintained by Souzix76.
Built for n8n operators who want testing without the risk surface.
Compatible with Claude, OpenClaw, and any MCP client.
