n8n-skills 的 MCP 工具实测日志:以真实工具响应驱动 n8n 工作流技能库的构建
n8n-skills 的 MCP 工具实测日志:以真实工具响应驱动 n8n 工作流技能库的构建
导读
本文以 docs/MCP_TESTING_LOG.md 为骨架,完整解读 n8n-skills 项目中那份用于指导技能内容创作的 MCP 工具实测日志。日志记录了 n8n-mcp 服务器在真实环境下的健康检查结果、节点数据库统计、搜索与验证工具的返回形态,以及由此沉淀出的对 14 个 Claude Code 技能(如表达式语法、MCP 工具专家、验证专家、节点配置等)的关键结论。读完本文,你将掌握 n8n-mcp 工具的调用返回结构、nodeType 双格式等关键陷阱、Webhook 数据嵌套结构,以及一套"先实测、再写技能"的文档化方法论。
一、为什么技能库需要一份"实测日志"
n8n-skills 的目标是让 AI 助手(Claude Code)借助 n8n-mcp)。在生成技能内容之前,项目作者面临一个基本问题:技能文档里写的工具调用示例和返回结构,必须与实际工具响应一致,否则 AI 会照着错误的示例写代码。
于是有了 MCP_TESTING_LOG.md——它记录了 n8n-mcp 工具在一台真实测试实例(n8n-test.n8n-mcp.com)上的实际响应,作为技能内容的事实依据。这份日志生成于 2025-10-20,属于项目"Evaluation-First + MCP-Informed"开发方法论的一部分:先测试工具、记录真实响应,再据此编写技能(见 README.md 的 Development Approach)。
仓库的 MCP 接入配置也印证了这一点:mcp.json 声明了 n8n-mcp 服务器,类型为 streamable-http,端点 https://api.n8n-mcp.com/mcp;plugin.json 将本包描述为 "Expert skills for building n8n workflows with the n8n-mcp MCP server"。
二、实例健康检查:工具可用性的第一道闸门
日志第一节记录了 n8n_health_check(在 skills/n8n-mcp-tools-expert/SKILL.md 中称为自助手工具)的真实返回:
{
"status": "ok",
"apiUrl": "https://n8n-test.n8n-mcp.com",
"mcpVersion": "2.20.3",
"versionCheck": "up to date",
"responseTime": 798ms
}
关键信息:
status:实例健康状态,ok表示 API 可用;apiUrl:测试实例地址,即工作流类工具(n8n_create_workflow等)实际写入的目标;mcpVersion:n8n-mcp 服务器版本(2.20.3),判定技能内容对应的功能基线;versionCheck:版本是否过时,"up to date" 说明无需升级;responseTime:798ms 的端到端响应时延。
依据该结果,日志判定"所有工作流创建/管理工具均可用"(All workflow creation/management tools functional)。从源码层面看,n8n_health_check 支持 mode: "diagnostic" 深度诊断,返回状态、环境变量、工具状态与 API 连通性,并附带 officialMcp 预检块,用于判断哪些能力需要额外的 N8N_MCP_ACCESS_TOKEN(见 skills/n8n-mcp-tools-expert/SKILL.md 的 Self-Help Tools 一节)。这提示我们:在调用任何需要 n8n API 的工具之前,先做一次健康检查是稳妥的第一步。
三、节点数据库统计:技能内容的覆盖面基线
日志记录了测试实例的节点数据库快照,这是判断技能库覆盖面的硬数据:
{
"totalNodes": 537,
"totalTemplates": 2653,
"statistics": {
"aiTools": 270,
"triggers": 108,
"versionedNodes": 141,
"nodesWithDocumentation": 470,
"documentationCoverage": "88%"
},
"packageBreakdown": [
{"package": "@n8n/n8n-nodes-langchain", "nodeCount": 100},
{"package": "n8n-nodes-base", "nodeCount": 437}
]
}
解读要点:
- 537 个节点 = 437 个
n8n-nodes-base基础节点 + 100 个@n8n/n8n-nodes-langchainAI 节点; - 270 个 AI 工具(
aiTools):对应 AI Agent 工作流中可挂接的工具位,佐证了"AI 连接类型有 8 种"这一技能结论; - 108 个触发器节点:Webhook、Schedule、Manual、轮询等触发方式的选择空间;
- 88% 文档覆盖率:470/537 个节点带有可检索文档,说明
get_node({mode: "docs"})有足够内容可用; - 2,653 个模板(平均 4,115 次浏览):这是 skills/n8n-workflow-patterns/SKILL.md 中"真实模板示例"的来源。
这套统计直接支撑了技能库的三项宣称:README 中"525+ n8n nodes supported"、"2,653+ workflow templates for examples"均可在日志中找到出处。
四、搜索工具实测:nodeType 双格式陷阱
日志对 search_nodes 做了典型查询实测,暴露了项目中最关键的约定之一——nodeType 存在两种不同格式:
| 查询关键词 | 返回节点示例 | 短格式(搜索/验证用) | 长格式(工作流工具用) |
|---|---|---|---|
webhook |
Webhook(触发器)、Respond to Webhook(转换) | nodes-base.webhook |
n8n-nodes-base.webhook |
http |
HTTP Request、HTTP Request Tool (AI)、Code Tool | nodes-base.httpRequest |
n8n-nodes-base.httpRequest |
database |
Firebase、Redis Vector Store 等 | — | — |
日志用 ⚠️ 明确警告:"Critical: Use different formats for different tools!"(不同工具必须使用不同格式!)
在 skills/n8n-mcp-tools-expert/SKILL.md 中,这一规则被系统化为两套:
- 搜索/验证类工具(
search_nodes、get_node、validate_node、validate_workflow)使用短前缀:nodes-base.slack、nodes-langchain.agent; - 工作流管理类工具(
n8n_create_workflow、n8n_update_partial_workflow)使用完整前缀:n8n-nodes-base.slack、@n8n/n8n-nodes-langchain.agent; search_nodes会同时返回两种格式:nodeType(短)与workflowNodeType(长),调用方按需选用。
常见错误包括 get_node({nodeType: "slack"})(缺前缀 → "Node not found")和把完整前缀误用于搜索工具。这是"n8n MCP Tools Expert"技能中"Common Mistakes"表格的第一条,也是实测日志最有价值的产出之一。
五、Webhook 节点实测:数据在 $json.body 而非根上
日志对 Webhook 节点做了实测,明确了它的关键属性与输出结构:
httpMethod:GET、POST、PUT、DELETE 等(默认 GET);path:Webhook 的 URL 路径(如form-submit);responseMode:onReceived、lastNode、responseNode;- CRITICAL:Webhook 的数据结构是
$json.body.*,不是$json.*。
实测输出结构:
{
"headers": {...},
"params": {...},
"query": {...},
"body": { // ⚠️ 用户数据在这里!
"name": "John",
"email": "john@example.com"
}
}
原因:Webhook 节点把收到的数据包裹在 .body 下,是为了同时保留 headers、params 和 query 参数,避免命名冲突。
这条结论被原样固化进 skills/n8n-expression-syntax/SKILL.md:
- ❌ 错误:
{{$json.name}}、{{$json.email}}; - ✅ 正确:
{{$json.body.name}}、{{$json.body.email}}; - 跨节点引用:
{{$node["Webhook"].json.body.email}}。
同时,它也是 skills/n8n-code-javascript/SKILL.md 中"Critical gotcha"与 skills/n8n-workflow-patterns/SKILL.md 中"Common Gotchas #1"的同一来源。一次实测,三处受益,这正是"以真实数据驱动技能内容"的价值。
六、验证工具实测:缺失字段与验证档案
日志在 Slack 节点上用 {resource: "channel", operation: "create"} 做验证测试,结果:
- 所有验证档案都能检出该错误:Missing required field "name";
- 给出的修复建议:
Provide a channel name; - 附带的最佳实践警告:关于 rate limits(限流与瞬时故障)的提示。
这一实测印证了验证工具的响应结构。在 skills/n8n-validation-expert/SKILL.md 中,缺失字段对应的错误类型是 missing_required,其返回对象包含 type、property、message、fix 四个字段,例如:
{
"type": "missing_required",
"property": "channel",
"message": "Channel name is required",
"fix": "Provide a channel name (lowercase, no spaces, 1-80 characters)"
}
同时,该日志结论支撑了验证档案(Validation Profiles)的设计:minimal(快速结构检查)/ runtime(推荐默认,平衡)/ ai-friendly(含最佳实践建议)/ strict(最大 lint,用于生产加固)。最佳实践类警告只在 ai-friendly 与 strict 下出现,而安全与弃用警告在所有档案下都会出现——这与日志中"rate limits 警告作为 best practice 附带"的行为一致。
日志还记录了典型的验证循环形态(来自遥测 7,841 次出现):配置 → validate_node(约 23 秒思考错误)→ 读错误 → 修复 → 再次 validate_node(约 58 秒修复)→ 通常 2–3 轮后通过。验证是迭代过程,不是一次性动作——这正是验证专家技能的核心哲学。
七、模板分析:真实工作流的结构规律
日志对 2,653 个模板做了抽样分析,得出"Webhook → Transform → Action → Notify"(5–7 节点)的常见模式。三个典型模板:
- 模板 #2947:Weather via Slack(1,500 次浏览)——Webhook → OpenStreetMap → NWS → Slack;
- 模板 #4039:Download Slack Media(778 次浏览)——SlackTrigger → HTTP Request;
- 模板 #5529:Jamf Patch to Slack(147 次浏览)——复杂多节点编排。
这些真实模板随后在 skills/n8n-workflow-patterns/SKILL.md 中被引用为"Real Template Examples",并支撑了六种核心模式(Webhook 处理、HTTP API 集成、数据库操作、AI Agent、定时任务、批量处理)与"Webhook 工作流占全部工作流的 27.6%"这一统计结论。模板的元数据(复杂度、搭建时间、所用服务)也构成了 search_templates / get_template 工具按 by_metadata 检索的依据。
八、五个技能的关键结论:从日志到 SKILL.md 的映射
日志最后一节把上述实测结果按技能归并,形成五组可直接写入技能文档的结论。下表展示了日志结论与仓库技能文件的对应关系:
| 技能 | 日志关键结论 | 仓库落点 |
|---|---|---|
| #1 表达式语法 | Webhook 数据在 .body;Code 节点用直接访问($json)而非表达式({{}});节点引用 $node["Node Name"].json.field |
skills/n8n-expression-syntax/SKILL.md |
| #2 MCP 工具专家 | nodeType 格式不同(nodes-base.* vs n8n-nodes-base.*);get_node 优先于 get_node({detail: "full"})(5KB vs 100KB+);验证档案 minimal/runtime/ai-friendly/strict;智能参数(IF 用 branch="true"/"false",Switch 用 case=N);任何更新都会对全部节点运行自动净化 |
skills/n8n-mcp-tools-expert/SKILL.md |
| #3 工作流模式 | 2,653 个真实模板可用;模板元数据含复杂度/搭建时间/服务;常见模式 Trigger → Process → Act(5–7 节点);Webhook 工作流占 27.6% | skills/n8n-workflow-patterns/SKILL.md |
| #4 验证专家 | 记录真实验证错误;自动净化修正算子结构;二元算子(equals、contains)vs 一元算子(isEmpty、isNotEmpty) | skills/n8n-validation-expert/SKILL.md |
| #5 节点配置 | 属性依赖(如 sendBody → contentType);操作相关需求各不相同;支持 8 种 AI 连接类型 |
skills/n8n-node-configuration/SKILL.md |
值得展开的两条"从实测到实现"的链路:
-
get_node详情级别:日志明确"5KB vs 100KB+"的差异,技能据此把detail: "standard"定为默认(覆盖约 95% 场景,约 1–2K tokens),仅当standard不够时才用full(3–8K tokens)或search_properties模式按名查找字段(见 skills/n8n-node-configuration/SKILL.md 的 Progressive Discovery)。 -
自动净化(Auto-sanitization):日志与技能均强调,任何一次工作流更新(
n8n_create_workflow、n8n_update_partial_workflow或其他保存动作)都会自动规范化算子结构——二元算子移除多余的singleValue,一元算子补上singleValue: true,IF/Switch 填充conditions.options元数据。但净化无法修复断裂的连接、分支数不匹配等结构性错误(见 skills/n8n-validation-expert/SKILL.md 的 Auto-Sanitization System)。日志给出的是行为事实,技能给出的是使用规则。
九、工具可用性分级:无 API 也能干活的边界
日志最后总结了工具的可用性边界,这是技能库设计"降级路径"的依据:
无需 n8n API 即可使用(仅需 MCP 服务器本身):
search_nodes、get_nodevalidate_node(含mode: "minimal"模式)validate_workflow、get_node({mode: "search_properties"})search_templates、get_template、list_tasks
需要 n8n API(在 n8n-test.n8n-mcp.com 上可用):
n8n_create_workflown8n_update_partial_workflown8n_validate_workflow(按 ID 校验)n8n_list_workflows、n8n_get_workflown8n_trigger_webhook_workflow
对应地,skills/n8n-mcp-tools-expert/SKILL.md 的 Tool Availability 一节给出了更细的三层划分:始终可用(search_nodes、get_node、validate_node、validate_workflow、search_templates、get_template、tools_documentation);需要 Public API 凭据(N8N_API_URL + N8N_API_KEY,如所有 n8n_* 工作流工具);需要额外的 N8N_MCP_ACCESS_TOKEN(如 n8n_manage_agents、n8n_explore_node_resources,以及 n8n_test_workflow 的 prepare/pinned/direct 路由方法)。若 API 工具不可用,技能给出的策略是:退回到模板与仅验证的工作流。
这套分级在仓库的钩子层也有呼应:hooks/hooks.json 中,PreToolUse 钩子对 get_node、n8n_create_workflow、n8n_update_partial_workflow、validate_workflow、n8n_test_workflow 等高频/高影响工具调用注入技能提示,PostToolUse 钩子在 validate_workflow 之后路由到剩余风险所属的技能——确保"验证通过是必要而非充分条件"的提醒在决策时刻出现。
十、结论:一份日志如何变成一套技能
MCP_TESTING_LOG.md 的收尾是一句 "Testing Complete: Ready for skill implementation with real data!"(测试完成,已可用真实数据实施技能)。回顾全文,这份日志的价值可以概括为三点:
- 事实来源:健康检查、数据库统计、工具返回形态全部来自真实实例,杜绝了技能文档中的臆测内容;
- 陷阱清单:
nodeType双格式、Webhook.body嵌套、验证档案分级、get_node详情级别等,都是从实测中沉淀的高价值结论; - 可复用方法论:先测工具、记录真实响应、再写技能(MCP-Informed),配合 3+ 条评估用例(见 evaluations/ 目录,如 evaluations/mcp-tools/eval-002-nodetype-format.json)迭代直至 100% 通过。
对使用 n8n-mcp 的开发者而言,本文提到的所有结论都能直接复用到自己的调用中:调用前先健康检查、搜索节点后区分两种 nodeType 格式、读取 Webhook 数据走 $json.body、配置节点用 standard 详情并按档案迭代验证。如果你在构建自己的 AI 技能库,这份日志本身就是一份"如何用真实工具响应驱动内容创作"的完整范本。
延伸阅读(均为仓库内文件):
- 项目总览与 14 个技能清单:README.md
- MCP 服务器接入配置:mcp.json
- 插件元数据:plugin.json
- 技能内容与更深的操作指南:skills/n8n-mcp-tools-expert/SKILL.md、skills/n8n-mcp-tools-expert/SEARCH_GUIDE.md、skills/n8n-mcp-tools-expert/VALIDATION_GUIDE.md
- 表达式语法与 Webhook
.body陷阱:skills/n8n-expression-syntax/SKILL.md - 验证档案、错误类型与自动净化:skills/n8n-validation-expert/SKILL.md
- 节点配置与属性依赖:skills/n8n-node-configuration/SKILL.md
- 工作流模式与真实模板示例:skills/n8n-workflow-patterns/SKILL.md
- 钩子强制层配置:hooks/hooks.json