mirror of
https://github.com/czlonkowski/n8n-skills.git
synced 2026-03-16 23:43:08 +00:00
feat: Complete Skill #2 - n8n MCP Tools Expert
Implements comprehensive guidance for using n8n-mcp MCP tools effectively. This is the HIGHEST PRIORITY skill that addresses the 20% MCP tool failure rate. Files created: - 5 evaluations testing tool selection, nodeType formats, validation, and smart parameters - SKILL.md (505 lines) - Core tool usage guide with telemetry insights - SEARCH_GUIDE.md (243 lines) - Node discovery tools (search, essentials vs info) - VALIDATION_GUIDE.md (377 lines) - Configuration validation and auto-sanitization - WORKFLOW_GUIDE.md (385 lines) - Workflow management with 15 operation types - README.md - Skill metadata emphasizing highest priority Key features: - Tool selection guide with success rates (search_nodes 99.9%, get_node_essentials 91.7%) - nodeType format distinction (nodes-base.* vs n8n-nodes-base.*) - Validation profiles explained (minimal/runtime/ai-friendly/strict) - Smart parameters for IF/Switch nodes (branch="true", case=0) - Auto-sanitization system for operator structures - Telemetry insights (56s between edits, 18s search→essentials, 23s+58s validate→fix) - AI connection types (8 types documented) Total: ~1,650 lines across 10 files Based on analysis of 447,557 real MCP tool usage events. 🤖 Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en
This commit is contained in:
24
evaluations/mcp-tools/eval-001-tool-selection.json
Normal file
24
evaluations/mcp-tools/eval-001-tool-selection.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"id": "mcp-001",
|
||||
"skills": ["n8n-mcp-tools-expert"],
|
||||
"query": "I need to find a node that can send messages to Slack. Which n8n-mcp tool should I use and how?",
|
||||
"expected_behavior": [
|
||||
"Recommends search_nodes as the starting tool",
|
||||
"Provides correct syntax: search_nodes({query: 'slack'})",
|
||||
"Explains the nodeType format returned (nodes-base.slack)",
|
||||
"Suggests following up with get_node_essentials for configuration details",
|
||||
"References the search → essentials workflow pattern",
|
||||
"Mentions the tool is <20ms fast"
|
||||
],
|
||||
"baseline_without_skill": {
|
||||
"likely_response": "May suggest searching documentation or using generic search, unlikely to know specific MCP tool names and syntax",
|
||||
"expected_quality": "Low - would not know n8n-mcp specific tools"
|
||||
},
|
||||
"with_skill_expected": {
|
||||
"response_quality": "High - precise tool recommendation with syntax",
|
||||
"uses_skill_content": true,
|
||||
"provides_correct_tool": true,
|
||||
"shows_proper_workflow": true,
|
||||
"explains_nodeType_format": true
|
||||
}
|
||||
}
|
||||
24
evaluations/mcp-tools/eval-002-nodetype-format.json
Normal file
24
evaluations/mcp-tools/eval-002-nodetype-format.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"id": "mcp-002",
|
||||
"skills": ["n8n-mcp-tools-expert"],
|
||||
"query": "I'm getting 'node not found' errors when calling get_node_essentials. I'm using 'slack' as the nodeType. What's wrong?",
|
||||
"expected_behavior": [
|
||||
"Identifies incorrect nodeType format",
|
||||
"Explains need for prefix: 'nodes-base.slack' not just 'slack'",
|
||||
"Distinguishes between nodeType (nodes-base.*) and workflowNodeType (n8n-nodes-base.*)",
|
||||
"Provides correct syntax: get_node_essentials({nodeType: 'nodes-base.slack'})",
|
||||
"References nodeType format documentation from SKILL.md",
|
||||
"Warns about common format confusion"
|
||||
],
|
||||
"baseline_without_skill": {
|
||||
"likely_response": "May suggest checking spelling or tool availability, unlikely to know specific prefix requirements",
|
||||
"expected_quality": "Low - would not understand nodeType format nuances"
|
||||
},
|
||||
"with_skill_expected": {
|
||||
"response_quality": "High - immediately identifies format issue",
|
||||
"uses_skill_content": true,
|
||||
"provides_correct_format": true,
|
||||
"explains_prefix_difference": true,
|
||||
"gives_working_example": true
|
||||
}
|
||||
}
|
||||
25
evaluations/mcp-tools/eval-003-validation-workflow.json
Normal file
25
evaluations/mcp-tools/eval-003-validation-workflow.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"id": "mcp-003",
|
||||
"skills": ["n8n-mcp-tools-expert"],
|
||||
"query": "I've created a Slack node configuration and want to make sure it's valid before deploying. Walk me through the validation process using n8n-mcp tools.",
|
||||
"expected_behavior": [
|
||||
"Recommends validate_node_operation tool",
|
||||
"Explains validation profiles (minimal, runtime, ai-friendly, strict)",
|
||||
"Recommends 'runtime' profile for pre-deployment",
|
||||
"Shows complete validation syntax with all parameters",
|
||||
"Explains validation loop pattern (validate → fix → validate again)",
|
||||
"References VALIDATION_GUIDE.md",
|
||||
"Mentions 23s avg thinking time, 58s avg fixing time from telemetry"
|
||||
],
|
||||
"baseline_without_skill": {
|
||||
"likely_response": "May suggest testing the workflow or checking documentation, unlikely to know validation tools and profiles",
|
||||
"expected_quality": "Medium - might guess at validation but miss profile options"
|
||||
},
|
||||
"with_skill_expected": {
|
||||
"response_quality": "High - complete validation workflow with profiles",
|
||||
"uses_skill_content": true,
|
||||
"recommends_correct_profile": true,
|
||||
"shows_validation_loop": true,
|
||||
"explains_error_handling": true
|
||||
}
|
||||
}
|
||||
25
evaluations/mcp-tools/eval-004-essentials-vs-info.json
Normal file
25
evaluations/mcp-tools/eval-004-essentials-vs-info.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"id": "mcp-004",
|
||||
"skills": ["n8n-mcp-tools-expert"],
|
||||
"query": "Should I use get_node_info or get_node_essentials to understand how to configure a node? What's the difference?",
|
||||
"expected_behavior": [
|
||||
"Strongly recommends get_node_essentials for most cases",
|
||||
"Explains size difference (5KB vs 100KB+)",
|
||||
"Explains success rate difference (91.7% vs 80%)",
|
||||
"Lists when to use get_node_info (debugging complex issues, need full schema)",
|
||||
"Provides performance comparison (<10ms vs slower)",
|
||||
"References the 20% failure rate for get_node_info",
|
||||
"Shows examples of both tool calls"
|
||||
],
|
||||
"baseline_without_skill": {
|
||||
"likely_response": "May assume more data is better, unlikely to know performance and reliability differences",
|
||||
"expected_quality": "Low - would not understand the critical difference"
|
||||
},
|
||||
"with_skill_expected": {
|
||||
"response_quality": "High - clear recommendation with data-driven reasoning",
|
||||
"uses_skill_content": true,
|
||||
"recommends_essentials": true,
|
||||
"explains_trade_offs": true,
|
||||
"provides_both_examples": true
|
||||
}
|
||||
}
|
||||
25
evaluations/mcp-tools/eval-005-smart-parameters.json
Normal file
25
evaluations/mcp-tools/eval-005-smart-parameters.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"id": "mcp-005",
|
||||
"skills": ["n8n-mcp-tools-expert"],
|
||||
"query": "I'm using n8n_update_partial_workflow to connect an IF node to two different handlers. How do I specify which branch (true or false) each connection should use?",
|
||||
"expected_behavior": [
|
||||
"Explains smart parameters for multi-output nodes",
|
||||
"Shows branch parameter: branch='true' or branch='false'",
|
||||
"Provides complete example with addConnection operation",
|
||||
"Explains this is simpler than using sourceIndex manually",
|
||||
"Mentions Switch nodes use case=N parameter",
|
||||
"References WORKFLOW_GUIDE.md for more details",
|
||||
"Shows both true and false branch connections"
|
||||
],
|
||||
"baseline_without_skill": {
|
||||
"likely_response": "May suggest using output indices without knowing semantic parameters exist",
|
||||
"expected_quality": "Medium - might work but miss the easier smart parameter approach"
|
||||
},
|
||||
"with_skill_expected": {
|
||||
"response_quality": "High - teaches smart parameters for cleaner code",
|
||||
"uses_skill_content": true,
|
||||
"shows_branch_parameter": true,
|
||||
"provides_working_example": true,
|
||||
"mentions_switch_equivalent": true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user