n8n-mcp 2.24.1 โ†’ 2.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,11 +5,11 @@
5
5
  [![npm version](https://img.shields.io/npm/v/n8n-mcp.svg)](https://www.npmjs.com/package/n8n-mcp)
6
6
  [![codecov](https://codecov.io/gh/czlonkowski/n8n-mcp/graph/badge.svg?token=YOUR_TOKEN)](https://codecov.io/gh/czlonkowski/n8n-mcp)
7
7
  [![Tests](https://img.shields.io/badge/tests-3336%20passing-brightgreen.svg)](https://github.com/czlonkowski/n8n-mcp/actions)
8
- [![n8n version](https://img.shields.io/badge/n8n-1.120.3-orange.svg)](https://github.com/n8n-io/n8n)
8
+ [![n8n version](https://img.shields.io/badge/n8n-1.121.2-orange.svg)](https://github.com/n8n-io/n8n)
9
9
  [![Docker](https://img.shields.io/badge/docker-ghcr.io%2Fczlonkowski%2Fn8n--mcp-green.svg)](https://github.com/czlonkowski/n8n-mcp/pkgs/container/n8n-mcp)
10
10
  [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/n8n-mcp?referralCode=n8n-mcp)
11
11
 
12
- A Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to n8n node documentation, properties, and operations. Deploy in minutes to give Claude and other AI assistants deep knowledge about n8n's 543 workflow automation nodes.
12
+ A Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to n8n node documentation, properties, and operations. Deploy in minutes to give Claude and other AI assistants deep knowledge about n8n's 545 workflow automation nodes.
13
13
 
14
14
  ## Overview
15
15
 
@@ -36,11 +36,44 @@ AI results can be unpredictable. Protect your work!
36
36
 
37
37
  ## ๐Ÿš€ Quick Start
38
38
 
39
- Get n8n-MCP running in 5 minutes:
39
+ Get n8n-MCP running in minutes:
40
40
 
41
41
  [![n8n-mcp Video Quickstart Guide](./thumbnail.png)](https://youtu.be/5CccjiLLyaY?si=Z62SBGlw9G34IQnQ&t=343)
42
42
 
43
- ### Option 1: npx (Fastest - No Installation!) ๐Ÿš€
43
+ ### Option 1: Hosted Service (Easiest - No Setup!) โ˜๏ธ
44
+
45
+ **The fastest way to try n8n-MCP** - no installation, no configuration:
46
+
47
+ ๐Ÿ‘‰ **[dashboard.n8n-mcp.com](https://dashboard.n8n-mcp.com)**
48
+
49
+ - โœ… **Free tier**: 100 tool calls/day
50
+ - โœ… **Instant access**: Start building workflows immediately
51
+ - โœ… **Always up-to-date**: Latest n8n nodes and templates
52
+ - โœ… **No infrastructure**: We handle everything
53
+
54
+ Just sign up, get your API key, and add to Claude Desktop:
55
+
56
+ ```json
57
+ {
58
+ "mcpServers": {
59
+ "n8n-mcp": {
60
+ "command": "npx",
61
+ "args": ["-y", "@anthropic-ai/mcp-remote@latest", "https://mcp.n8n-mcp.com/sse"],
62
+ "env": {
63
+ "API_KEY": "your-api-key-from-dashboard"
64
+ }
65
+ }
66
+ }
67
+ }
68
+ ```
69
+
70
+ ---
71
+
72
+ ## ๐Ÿ  Self-Hosting Options
73
+
74
+ Prefer to run n8n-MCP yourself? Choose your deployment method:
75
+
76
+ ### Option A: npx (Quick Local Setup) ๐Ÿš€
44
77
 
45
78
  **Prerequisites:** [Node.js](https://nodejs.org/) installed on your system
46
79
 
@@ -98,7 +131,7 @@ Add to Claude Desktop config:
98
131
 
99
132
  **Restart Claude Desktop after updating configuration** - That's it! ๐ŸŽ‰
100
133
 
101
- ### Option 2: Docker (Easy & Isolated) ๐Ÿณ
134
+ ### Option B: Docker (Isolated & Reproducible) ๐Ÿณ
102
135
 
103
136
  **Prerequisites:** Docker installed on your system
104
137
 
@@ -345,27 +378,6 @@ environment:
345
378
  SQLJS_SAVE_INTERVAL_MS: "10000"
346
379
  ```
347
380
 
348
- ### Memory Leak Fix (v2.20.2)
349
-
350
- **Issue #330** identified a critical memory leak in long-running Docker/Kubernetes deployments:
351
- - **Before:** 100 MB โ†’ 2.2 GB over 72 hours (OOM kills)
352
- - **After:** Stable at 100-200 MB indefinitely
353
-
354
- **Fixes Applied:**
355
- - โœ… Docker images now use better-sqlite3 by default (eliminates leak entirely)
356
- - โœ… sql.js fallback optimized (98% reduction in save frequency)
357
- - โœ… Removed unnecessary memory allocations (50% reduction per save)
358
- - โœ… Configurable save interval via `SQLJS_SAVE_INTERVAL_MS`
359
-
360
- For Kubernetes deployments with memory limits:
361
- ```yaml
362
- resources:
363
- requests:
364
- memory: 256Mi
365
- limits:
366
- memory: 512Mi
367
- ```
368
-
369
381
  ## ๐Ÿ’– Support This Project
370
382
 
371
383
  <div align="center">
@@ -386,7 +398,7 @@ Every sponsorship directly translates to hours invested in making n8n-mcp better
386
398
 
387
399
  ---
388
400
 
389
- ### Option 3: Local Installation (For Development)
401
+ ### Option C: Local Installation (For Development)
390
402
 
391
403
  **Prerequisites:** [Node.js](https://nodejs.org/) installed on your system
392
404
 
@@ -444,7 +456,7 @@ Add to Claude Desktop config:
444
456
 
445
457
  > ๐Ÿ’ก Tip: If youโ€™re running n8n locally on the same machine (e.g., via Docker), use http://host.docker.internal:5678 as the N8N_API_URL.
446
458
 
447
- ### Option 4: Railway Cloud Deployment (One-Click Deploy) โ˜๏ธ
459
+ ### Option D: Railway Cloud Deployment (One-Click Deploy) โ˜๏ธ
448
460
 
449
461
  **Prerequisites:** Railway account (free tier available)
450
462
 
@@ -524,7 +536,7 @@ You are an expert in n8n automation software using n8n-MCP tools. Your role is t
524
536
  CRITICAL: Execute tools without commentary. Only respond AFTER all tools complete.
525
537
 
526
538
  โŒ BAD: "Let me search for Slack nodes... Great! Now let me get details..."
527
- โœ… GOOD: [Execute search_nodes and get_node_essentials in parallel, then respond]
539
+ โœ… GOOD: [Execute search_nodes and get_node in parallel, then respond]
528
540
 
529
541
  ### 2. Parallel Execution
530
542
  When operations are independent, execute them in parallel for maximum performance.
@@ -536,7 +548,7 @@ When operations are independent, execute them in parallel for maximum performanc
536
548
  ALWAYS check templates before building from scratch (2,709 available).
537
549
 
538
550
  ### 4. Multi-Level Validation
539
- Use validate_node_minimal โ†’ validate_node_operation โ†’ validate_workflow pattern.
551
+ Use validate_node(mode='minimal') โ†’ validate_node(mode='full') โ†’ validate_workflow pattern.
540
552
 
541
553
  ### 5. Never Trust Defaults
542
554
  โš ๏ธ CRITICAL: Default parameter values are the #1 source of runtime failures.
@@ -547,10 +559,10 @@ ALWAYS explicitly configure ALL parameters that control node behavior.
547
559
  1. **Start**: Call `tools_documentation()` for best practices
548
560
 
549
561
  2. **Template Discovery Phase** (FIRST - parallel when searching multiple)
550
- - `search_templates_by_metadata({complexity: "simple"})` - Smart filtering
551
- - `get_templates_for_task('webhook_processing')` - Curated by task
552
- - `search_templates('slack notification')` - Text search
553
- - `list_node_templates(['n8n-nodes-base.slack'])` - By node type
562
+ - `search_templates({searchMode: 'by_metadata', complexity: 'simple'})` - Smart filtering
563
+ - `search_templates({searchMode: 'by_task', task: 'webhook_processing'})` - Curated by task
564
+ - `search_templates({query: 'slack notification'})` - Text search (default searchMode='keyword')
565
+ - `search_templates({searchMode: 'by_nodes', nodeTypes: ['n8n-nodes-base.slack']})` - By node type
554
566
 
555
567
  **Filtering strategies**:
556
568
  - Beginners: `complexity: "simple"` + `maxSetupMinutes: 30`
@@ -561,20 +573,20 @@ ALWAYS explicitly configure ALL parameters that control node behavior.
561
573
  3. **Node Discovery** (if no suitable template - parallel execution)
562
574
  - Think deeply about requirements. Ask clarifying questions if unclear.
563
575
  - `search_nodes({query: 'keyword', includeExamples: true})` - Parallel for multiple nodes
564
- - `list_nodes({category: 'trigger'})` - Browse by category
565
- - `list_ai_tools()` - AI-capable nodes
576
+ - `search_nodes({query: 'trigger'})` - Browse triggers
577
+ - `search_nodes({query: 'AI agent langchain'})` - AI-capable nodes
566
578
 
567
579
  4. **Configuration Phase** (parallel for multiple nodes)
568
- - `get_node(nodeType, {detail: 'standard', includeExamples: true})` - Essential properties (default)
569
- - `get_node(nodeType, {detail: 'minimal'})` - Basic metadata only (~200 tokens)
570
- - `get_node(nodeType, {detail: 'full'})` - Complete information (~3000-8000 tokens)
571
- - `search_node_properties(nodeType, 'auth')` - Find specific properties
572
- - `get_node_documentation(nodeType)` - Human-readable docs
580
+ - `get_node({nodeType, detail: 'standard', includeExamples: true})` - Essential properties (default)
581
+ - `get_node({nodeType, detail: 'minimal'})` - Basic metadata only (~200 tokens)
582
+ - `get_node({nodeType, detail: 'full'})` - Complete information (~3000-8000 tokens)
583
+ - `get_node({nodeType, mode: 'search_properties', propertyQuery: 'auth'})` - Find specific properties
584
+ - `get_node({nodeType, mode: 'docs'})` - Human-readable markdown documentation
573
585
  - Show workflow architecture to user for approval before proceeding
574
586
 
575
587
  5. **Validation Phase** (parallel for multiple nodes)
576
- - `validate_node_minimal(nodeType, config)` - Quick required fields check
577
- - `validate_node_operation(nodeType, config, 'runtime')` - Full validation with fixes
588
+ - `validate_node({nodeType, config, mode: 'minimal'})` - Quick required fields check
589
+ - `validate_node({nodeType, config, mode: 'full', profile: 'runtime'})` - Full validation with fixes
578
590
  - Fix ALL errors before proceeding
579
591
 
580
592
  6. **Building Phase**
@@ -614,15 +626,15 @@ Default values cause runtime failures. Example:
614
626
  ### โš ๏ธ Example Availability
615
627
  `includeExamples: true` returns real configurations from workflow templates.
616
628
  - Coverage varies by node popularity
617
- - When no examples available, use `get_node` + `validate_node_minimal`
629
+ - When no examples available, use `get_node` + `validate_node({mode: 'minimal'})`
618
630
 
619
631
  ## Validation Strategy
620
632
 
621
633
  ### Level 1 - Quick Check (before building)
622
- `validate_node_minimal(nodeType, config)` - Required fields only (<100ms)
634
+ `validate_node({nodeType, config, mode: 'minimal'})` - Required fields only (<100ms)
623
635
 
624
636
  ### Level 2 - Comprehensive (before building)
625
- `validate_node_operation(nodeType, config, 'runtime')` - Full validation with fixes
637
+ `validate_node({nodeType, config, mode: 'full', profile: 'runtime'})` - Full validation with fixes
626
638
 
627
639
  ### Level 3 - Complete (after building)
628
640
  `validate_workflow(workflow)` - Connections, expressions, AI tools
@@ -630,7 +642,7 @@ Default values cause runtime failures. Example:
630
642
  ### Level 4 - Post-Deployment
631
643
  1. `n8n_validate_workflow({id})` - Validate deployed workflow
632
644
  2. `n8n_autofix_workflow({id})` - Auto-fix common errors
633
- 3. `n8n_list_executions()` - Monitor execution status
645
+ 3. `n8n_executions({action: 'list'})` - Monitor execution status
634
646
 
635
647
  ## Response Format
636
648
 
@@ -776,12 +788,13 @@ Use the same four-parameter format:
776
788
  ```
777
789
  // STEP 1: Template Discovery (parallel execution)
778
790
  [Silent execution]
779
- search_templates_by_metadata({
791
+ search_templates({
792
+ searchMode: 'by_metadata',
780
793
  requiredService: 'slack',
781
794
  complexity: 'simple',
782
795
  targetAudience: 'marketers'
783
796
  })
784
- get_templates_for_task('slack_integration')
797
+ search_templates({searchMode: 'by_task', task: 'slack_integration'})
785
798
 
786
799
  // STEP 2: Use template
787
800
  get_template(templateId, {mode: 'full'})
@@ -800,17 +813,17 @@ Validation: โœ… All checks passed"
800
813
  // STEP 1: Discovery (parallel execution)
801
814
  [Silent execution]
802
815
  search_nodes({query: 'slack', includeExamples: true})
803
- list_nodes({category: 'communication'})
816
+ search_nodes({query: 'communication trigger'})
804
817
 
805
818
  // STEP 2: Configuration (parallel execution)
806
819
  [Silent execution]
807
- get_node('n8n-nodes-base.slack', {detail: 'standard', includeExamples: true})
808
- get_node('n8n-nodes-base.webhook', {detail: 'standard', includeExamples: true})
820
+ get_node({nodeType: 'n8n-nodes-base.slack', detail: 'standard', includeExamples: true})
821
+ get_node({nodeType: 'n8n-nodes-base.webhook', detail: 'standard', includeExamples: true})
809
822
 
810
823
  // STEP 3: Validation (parallel execution)
811
824
  [Silent execution]
812
- validate_node_minimal('n8n-nodes-base.slack', config)
813
- validate_node_operation('n8n-nodes-base.slack', fullConfig, 'runtime')
825
+ validate_node({nodeType: 'n8n-nodes-base.slack', config, mode: 'minimal'})
826
+ validate_node({nodeType: 'n8n-nodes-base.slack', config: fullConfig, mode: 'full', profile: 'runtime'})
814
827
 
815
828
  // STEP 4: Build
816
829
  // Construct workflow with validated configs
@@ -936,73 +949,52 @@ When Claude, Anthropic's AI assistant, tested n8n-MCP, the results were transfor
936
949
 
937
950
  Once connected, Claude can use these powerful tools:
938
951
 
939
- ### Core Tools
952
+ ### Core Tools (7 tools)
940
953
  - **`tools_documentation`** - Get documentation for any MCP tool (START HERE!)
941
- - **`list_nodes`** - List all n8n nodes with filtering options
942
- - **`get_node`** - Unified node information tool with multiple detail levels:
943
- - `detail: 'minimal'` - Basic metadata only (~200 tokens)
944
- - `detail: 'standard'` - Essential properties (default, ~1000-2000 tokens)
945
- - `detail: 'full'` - Complete information (~3000-8000 tokens)
946
- - `includeExamples: true` - Include real-world configurations from popular templates
947
- - `mode: 'versions'` - View version history and breaking changes
948
- - `mode: 'compare'` - Compare two versions with property-level changes
949
- - `includeTypeInfo: true` - Add type structure metadata (NEW!)
950
- - **`search_nodes`** - Full-text search across all node documentation. Use `includeExamples: true` to get top 2 real-world configurations per node from templates
951
- - **`search_node_properties`** - Find specific properties within nodes
952
- - **`list_ai_tools`** - List all AI-capable nodes (ANY node can be used as AI tool!)
953
- - **`get_node_as_tool_info`** - Get guidance on using any node as an AI tool
954
-
955
- ### Template Tools
956
- - **`list_templates`** - Browse all templates with descriptions and optional metadata (2,709 templates)
957
- - **`search_templates`** - Text search across template names and descriptions
958
- - **`search_templates_by_metadata`** - Advanced filtering by complexity, setup time, services, audience
959
- - **`list_node_templates`** - Find templates using specific nodes
960
- - **`get_template`** - Get complete workflow JSON for import
961
- - **`get_templates_for_task`** - Curated templates for common automation tasks
962
-
963
- ### Validation Tools
964
- - **`validate_workflow`** - Complete workflow validation including **AI Agent validation** (NEW in v2.17.0!)
965
- - Detects missing language model connections
966
- - Validates AI tool connections (no false warnings)
967
- - Enforces streaming mode constraints
968
- - Checks memory and output parser configurations
969
- - **`validate_workflow_connections`** - Check workflow structure and AI tool connections
970
- - **`validate_workflow_expressions`** - Validate n8n expressions including $fromAI()
971
- - **`validate_node_operation`** - Validate node configurations (operation-aware, profiles support)
972
- - **`validate_node_minimal`** - Quick validation for just required fields
973
-
974
- ### Advanced Tools
975
- - **`get_property_dependencies`** - Analyze property visibility conditions
976
- - **`get_node_documentation`** - Get parsed documentation from n8n-docs
977
- - **`get_database_statistics`** - View database metrics and coverage
978
-
979
- ### n8n Management Tools (Optional - Requires API Configuration)
980
- These powerful tools allow you to manage n8n workflows directly from Claude. They're only available when you provide `N8N_API_URL` and `N8N_API_KEY` in your configuration.
954
+ - **`search_nodes`** - Full-text search across all nodes. Use `includeExamples: true` for real-world configurations
955
+ - **`get_node`** - Unified node information tool with multiple modes (v2.26.0):
956
+ - **Info mode** (default): `detail: 'minimal'|'standard'|'full'`, `includeExamples: true`
957
+ - **Docs mode**: `mode: 'docs'` - Human-readable markdown documentation
958
+ - **Property search**: `mode: 'search_properties'`, `propertyQuery: 'auth'`
959
+ - **Versions**: `mode: 'versions'|'compare'|'breaking'|'migrations'`
960
+ - **`validate_node`** - Unified node validation (v2.26.0):
961
+ - `mode: 'minimal'` - Quick required fields check (<100ms)
962
+ - `mode: 'full'` - Comprehensive validation with profiles (minimal, runtime, ai-friendly, strict)
963
+ - **`validate_workflow`** - Complete workflow validation including AI Agent validation
964
+ - **`search_templates`** - Unified template search (v2.26.0):
965
+ - `searchMode: 'keyword'` (default) - Text search with `query` parameter
966
+ - `searchMode: 'by_nodes'` - Find templates using specific `nodeTypes`
967
+ - `searchMode: 'by_task'` - Curated templates for common `task` types
968
+ - `searchMode: 'by_metadata'` - Filter by `complexity`, `requiredService`, `targetAudience`
969
+ - **`get_template`** - Get complete workflow JSON (modes: nodes_only, structure, full)
970
+
971
+ ### n8n Management Tools (12 tools - Requires API Configuration)
972
+ These tools require `N8N_API_URL` and `N8N_API_KEY` in your configuration.
981
973
 
982
974
  #### Workflow Management
983
975
  - **`n8n_create_workflow`** - Create new workflows with nodes and connections
984
- - **`n8n_get_workflow`** - Get complete workflow by ID
985
- - **`n8n_get_workflow_details`** - Get workflow with execution statistics
986
- - **`n8n_get_workflow_structure`** - Get simplified workflow structure
987
- - **`n8n_get_workflow_minimal`** - Get minimal workflow info (ID, name, active status)
976
+ - **`n8n_get_workflow`** - Unified workflow retrieval (v2.26.0):
977
+ - `mode: 'full'` (default) - Complete workflow JSON
978
+ - `mode: 'details'` - Include execution statistics
979
+ - `mode: 'structure'` - Nodes and connections topology only
980
+ - `mode: 'minimal'` - Just ID, name, active status
988
981
  - **`n8n_update_full_workflow`** - Update entire workflow (complete replacement)
989
- - **`n8n_update_partial_workflow`** - Update workflow using diff operations (NEW in v2.7.0!)
982
+ - **`n8n_update_partial_workflow`** - Update workflow using diff operations
990
983
  - **`n8n_delete_workflow`** - Delete workflows permanently
991
984
  - **`n8n_list_workflows`** - List workflows with filtering and pagination
992
- - **`n8n_validate_workflow`** - Validate workflows already in n8n by ID (NEW in v2.6.3)
993
- - **`n8n_autofix_workflow`** - Automatically fix common workflow errors (NEW in v2.13.0!)
994
- - **`n8n_workflow_versions`** - Manage workflow version history and rollback (NEW in v2.22.0!)
985
+ - **`n8n_validate_workflow`** - Validate workflows in n8n by ID
986
+ - **`n8n_autofix_workflow`** - Automatically fix common workflow errors
987
+ - **`n8n_workflow_versions`** - Manage version history and rollback
995
988
 
996
989
  #### Execution Management
997
990
  - **`n8n_trigger_webhook_workflow`** - Trigger workflows via webhook URL
998
- - **`n8n_get_execution`** - Get execution details by ID
999
- - **`n8n_list_executions`** - List executions with status filtering
1000
- - **`n8n_delete_execution`** - Delete execution records
991
+ - **`n8n_executions`** - Unified execution management (v2.26.0):
992
+ - `action: 'list'` - List executions with status filtering
993
+ - `action: 'get'` - Get execution details by ID
994
+ - `action: 'delete'` - Delete execution records
1001
995
 
1002
996
  #### System Tools
1003
997
  - **`n8n_health_check`** - Check n8n API connectivity and features
1004
- - **`n8n_diagnostic`** - Troubleshoot management tools visibility and configuration issues
1005
- - **`n8n_list_available_tools`** - List all available management tools
1006
998
 
1007
999
  ### Example Usage
1008
1000
 
@@ -1014,17 +1006,17 @@ get_node({
1014
1006
  includeExamples: true // Include real-world examples from templates
1015
1007
  })
1016
1008
 
1017
- // Minimal info for quick reference
1009
+ // Get documentation
1018
1010
  get_node({
1019
1011
  nodeType: "nodes-base.slack",
1020
- detail: "minimal" // ~200 tokens: just basic metadata
1012
+ mode: "docs" // Human-readable markdown documentation
1021
1013
  })
1022
1014
 
1023
- // Full documentation
1015
+ // Search for specific properties
1024
1016
  get_node({
1025
- nodeType: "nodes-base.webhook",
1026
- detail: "full", // Complete information
1027
- includeTypeInfo: true // Include type structure metadata
1017
+ nodeType: "nodes-base.httpRequest",
1018
+ mode: "search_properties",
1019
+ propertyQuery: "authentication"
1028
1020
  })
1029
1021
 
1030
1022
  // Version history and breaking changes
@@ -1033,31 +1025,31 @@ get_node({
1033
1025
  mode: "versions" // View all versions with summary
1034
1026
  })
1035
1027
 
1036
- // Compare versions
1037
- get_node({
1038
- nodeType: "nodes-base.slack",
1039
- mode: "compare",
1040
- fromVersion: "2.1",
1041
- toVersion: "2.2"
1042
- })
1043
-
1044
1028
  // Search nodes with configuration examples
1045
1029
  search_nodes({
1046
1030
  query: "send email gmail",
1047
1031
  includeExamples: true // Returns top 2 configs per node
1048
1032
  })
1049
1033
 
1050
- // Validate before deployment
1051
- validate_node_operation({
1034
+ // Validate node configuration
1035
+ validate_node({
1052
1036
  nodeType: "nodes-base.httpRequest",
1053
1037
  config: { method: "POST", url: "..." },
1038
+ mode: "full",
1054
1039
  profile: "runtime" // or "minimal", "ai-friendly", "strict"
1055
1040
  })
1056
1041
 
1057
1042
  // Quick required field check
1058
- validate_node_minimal({
1043
+ validate_node({
1059
1044
  nodeType: "nodes-base.slack",
1060
- config: { resource: "message", operation: "send" }
1045
+ config: { resource: "message", operation: "send" },
1046
+ mode: "minimal"
1047
+ })
1048
+
1049
+ // Search templates by task
1050
+ search_templates({
1051
+ searchMode: "by_task",
1052
+ task: "webhook_processing"
1061
1053
  })
1062
1054
  ```
1063
1055
 
@@ -1150,43 +1142,7 @@ Current database coverage (n8n v1.117.2):
1150
1142
 
1151
1143
  ## ๐Ÿ”„ Recent Updates
1152
1144
 
1153
- ### v2.22.19 - Critical Bug Fix
1154
- **Fixed:** Stack overflow in session removal (Issue #427)
1155
- - Eliminated infinite recursion in HTTP server session cleanup
1156
- - Transport resources now deleted before closing to prevent circular event handler chain
1157
- - Production logs no longer show "RangeError: Maximum call stack size exceeded"
1158
- - All session cleanup operations now complete successfully without crashes
1159
-
1160
- See [CHANGELOG.md](./docs/CHANGELOG.md) for full version history and recent changes.
1161
-
1162
- ## โš ๏ธ Known Issues
1163
-
1164
- ### Claude Desktop Container Management
1165
-
1166
- #### Container Accumulation (Fixed in v2.7.20+)
1167
- Previous versions had an issue where containers would not properly clean up when Claude Desktop sessions ended. This has been fixed in v2.7.20+ with proper signal handling.
1168
-
1169
- **For best container lifecycle management:**
1170
- 1. **Use the --init flag** (recommended) - Docker's init system ensures proper signal handling:
1171
- ```json
1172
- {
1173
- "mcpServers": {
1174
- "n8n-mcp": {
1175
- "command": "docker",
1176
- "args": [
1177
- "run", "-i", "--rm", "--init",
1178
- "ghcr.io/czlonkowski/n8n-mcp:latest"
1179
- ]
1180
- }
1181
- }
1182
- }
1183
- ```
1184
-
1185
- 2. **Ensure you're using v2.7.20 or later** - Check your version:
1186
- ```bash
1187
- docker run --rm ghcr.io/czlonkowski/n8n-mcp:latest --version
1188
- ```
1189
-
1145
+ See [CHANGELOG.md](./CHANGELOG.md) for complete version history and recent changes.
1190
1146
 
1191
1147
  ## ๐Ÿงช Testing
1192
1148
 
package/data/nodes.db CHANGED
Binary file
@@ -21,7 +21,6 @@ export declare function handleGetExecution(args: unknown, context?: InstanceCont
21
21
  export declare function handleListExecutions(args: unknown, context?: InstanceContext): Promise<McpToolResponse>;
22
22
  export declare function handleDeleteExecution(args: unknown, context?: InstanceContext): Promise<McpToolResponse>;
23
23
  export declare function handleHealthCheck(context?: InstanceContext): Promise<McpToolResponse>;
24
- export declare function handleListAvailableTools(context?: InstanceContext): Promise<McpToolResponse>;
25
24
  export declare function handleDiagnostic(request: any, context?: InstanceContext): Promise<McpToolResponse>;
26
25
  export declare function handleWorkflowVersions(args: unknown, repository: NodeRepository, context?: InstanceContext): Promise<McpToolResponse>;
27
26
  //# sourceMappingURL=handlers-n8n-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers-n8n-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/handlers-n8n-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers-n8n-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/handlers-n8n-manager.ts"],"names":[],"mappings":"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"}
@@ -52,7 +52,6 @@ exports.handleGetExecution = handleGetExecution;
52
52
  exports.handleListExecutions = handleListExecutions;
53
53
  exports.handleDeleteExecution = handleDeleteExecution;
54
54
  exports.handleHealthCheck = handleHealthCheck;
55
- exports.handleListAvailableTools = handleListAvailableTools;
56
55
  exports.handleDiagnostic = handleDiagnostic;
57
56
  exports.handleWorkflowVersions = handleWorkflowVersions;
58
57
  const n8n_api_client_1 = require("../services/n8n-api-client");
@@ -1137,7 +1136,7 @@ async function handleHealthCheck(context) {
1137
1136
  '1. Verify n8n instance is running',
1138
1137
  '2. Check N8N_API_URL is correct',
1139
1138
  '3. Verify N8N_API_KEY has proper permissions',
1140
- '4. Run n8n_diagnostic for detailed analysis'
1139
+ '4. Run n8n_health_check with mode="diagnostic" for detailed analysis'
1141
1140
  ]
1142
1141
  }
1143
1142
  };
@@ -1148,60 +1147,6 @@ async function handleHealthCheck(context) {
1148
1147
  };
1149
1148
  }
1150
1149
  }
1151
- async function handleListAvailableTools(context) {
1152
- const tools = [
1153
- {
1154
- category: 'Workflow Management',
1155
- tools: [
1156
- { name: 'n8n_create_workflow', description: 'Create new workflows' },
1157
- { name: 'n8n_get_workflow', description: 'Get workflow by ID' },
1158
- { name: 'n8n_get_workflow_details', description: 'Get detailed workflow info with stats' },
1159
- { name: 'n8n_get_workflow_structure', description: 'Get simplified workflow structure' },
1160
- { name: 'n8n_get_workflow_minimal', description: 'Get minimal workflow info' },
1161
- { name: 'n8n_update_workflow', description: 'Update existing workflows' },
1162
- { name: 'n8n_delete_workflow', description: 'Delete workflows' },
1163
- { name: 'n8n_list_workflows', description: 'List workflows with filters' },
1164
- { name: 'n8n_validate_workflow', description: 'Validate workflow from n8n instance' },
1165
- { name: 'n8n_autofix_workflow', description: 'Automatically fix common workflow errors' }
1166
- ]
1167
- },
1168
- {
1169
- category: 'Execution Management',
1170
- tools: [
1171
- { name: 'n8n_trigger_webhook_workflow', description: 'Trigger workflows via webhook' },
1172
- { name: 'n8n_get_execution', description: 'Get execution details' },
1173
- { name: 'n8n_list_executions', description: 'List executions with filters' },
1174
- { name: 'n8n_delete_execution', description: 'Delete execution records' }
1175
- ]
1176
- },
1177
- {
1178
- category: 'System',
1179
- tools: [
1180
- { name: 'n8n_health_check', description: 'Check API connectivity' },
1181
- { name: 'n8n_list_available_tools', description: 'List all available tools' }
1182
- ]
1183
- }
1184
- ];
1185
- const config = (0, n8n_api_1.getN8nApiConfig)();
1186
- const apiConfigured = config !== null;
1187
- return {
1188
- success: true,
1189
- data: {
1190
- tools,
1191
- apiConfigured,
1192
- configuration: config ? {
1193
- apiUrl: config.baseUrl,
1194
- timeout: config.timeout,
1195
- maxRetries: config.maxRetries
1196
- } : null,
1197
- limitations: [
1198
- 'Cannot execute workflows directly (must use webhooks)',
1199
- 'Cannot stop running executions',
1200
- 'Tags and credentials have limited API support'
1201
- ]
1202
- }
1203
- };
1204
- }
1205
1150
  function detectCloudPlatform() {
1206
1151
  if (process.env.RAILWAY_ENVIRONMENT)
1207
1152
  return 'railway';
@@ -1399,8 +1344,8 @@ async function handleDiagnostic(request, context) {
1399
1344
  apiStatus.error = error instanceof Error ? error.message : 'Unknown error';
1400
1345
  }
1401
1346
  }
1402
- const documentationTools = 22;
1403
- const managementTools = apiConfigured ? 16 : 0;
1347
+ const documentationTools = 7;
1348
+ const managementTools = apiConfigured ? 12 : 0;
1404
1349
  const totalTools = documentationTools + managementTools;
1405
1350
  const versionCheck = await (0, npm_version_checker_1.checkNpmVersion)();
1406
1351
  const cacheMetricsData = getInstanceCacheMetrics();
@@ -1527,7 +1472,7 @@ async function handleDiagnostic(request, context) {
1527
1472
  example: 'validate_workflow({workflow: {...}})'
1528
1473
  }
1529
1474
  ],
1530
- note: '22 documentation tools available without API configuration'
1475
+ note: '14 documentation tools available without API configuration'
1531
1476
  },
1532
1477
  whatYouCannotDo: [
1533
1478
  'โœ— Create/update workflows in n8n instance',
@@ -1542,8 +1487,8 @@ async function handleDiagnostic(request, context) {
1542
1487
  ' N8N_API_URL=https://your-n8n-instance.com',
1543
1488
  ' N8N_API_KEY=your_api_key_here',
1544
1489
  '3. Restart the MCP server',
1545
- '4. Run n8n_diagnostic again to verify',
1546
- '5. All 38 tools will be available!'
1490
+ '4. Run n8n_health_check with mode="diagnostic" to verify',
1491
+ '5. All 19 tools will be available!'
1547
1492
  ],
1548
1493
  documentation: 'https://github.com/czlonkowski/n8n-mcp?tab=readme-ov-file#n8n-management-tools-optional---requires-api-configuration'
1549
1494
  }