Commit Graph

310 Commits

Author SHA1 Message Date
czlonkowski
e8f6b684f0 fix: make FTS5 optional for template search (fixes Claude Desktop compatibility)
- Added runtime FTS5 detection in database adapters
- Removed FTS5 from required schema to prevent "no such module" errors
- FTS5 tables/triggers created conditionally only if supported
- Template search automatically falls back to LIKE when FTS5 unavailable
- Works in ALL SQLite environments (Claude Desktop, restricted envs, etc.)

This ensures search_templates() works correctly regardless of SQLite build,
while still providing optimal performance when FTS5 is available.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 12:13:08 +02:00
czlonkowski
d8e84307e4 feat: optimize MCP tool descriptions for 65-70% token reduction
- Reduced average description length from 250-450 to 93-129 chars
- Documentation tools now average 129 chars per description
- Management tools average just 93 chars per description
- Moved detailed documentation to tools_documentation() system
- Only 2 tools exceed 200 chars (necessarily verbose)

Also includes search_nodes improvements:
- Fixed primary node ranking (webhook, HTTP Request now appear first)
- Fixed FUZZY mode threshold for better typo tolerance
- Removed unnecessary searchInfo messages
- Fixed HTTP node type case sensitivity issue

This significantly improves AI agent performance by reducing context usage
while preserving all essential information.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 11:42:23 +02:00
czlonkowski
99e74cf22a fix: correct misleading Code node documentation based on real-world testing
Critical fixes based on Claude Desktop feedback:

1. Fixed crypto documentation: require('crypto') IS available despite editor warnings
   - Added clear examples of crypto usage
   - Updated validation to guide correct require() usage

2. Clarified $helpers vs standalone functions
   - $getWorkflowStaticData() is standalone, NOT $helpers.getWorkflowStaticData()
   - Added validation to catch incorrect usage (prevents '$helpers is not defined' errors)
   - Enhanced examples showing proper $helpers availability checks

3. Fixed JMESPath numeric literal documentation
   - n8n requires backticks around numbers in filters: [?age >= `18`]
   - Added multiple examples and validation to detect missing backticks
   - Prevents 'JMESPath syntax error' that Claude Desktop encountered

4. Fixed webhook data access gotcha
   - Webhook payload is at items[0].json.body, NOT items[0].json
   - Added dedicated 'Webhook Data Access' section with clear examples
   - Created process_webhook_data task template
   - Added validation to detect incorrect webhook data access patterns

All fixes based on production workflows TaNqYoZNNeHC4Hne and JZ9urD7PNClDZ1bm

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 09:22:34 +02:00
czlonkowski
20f018f8dc update Claude Instructions for better tool use 2025-07-09 22:52:23 +02:00
czlonkowski
4e80c82e24 clean Claude.md 2025-07-09 20:40:43 +02:00
czlonkowski
eab3cc858e fix: comprehensive error handling and node-level properties validation (fixes #26)
Root cause: AI agents were placing error handling properties inside `parameters` instead of at node level

Major changes:
- Enhanced workflow validator to check for ALL node-level properties (expanded from 6 to 11)
- Added validation for onError property values and deprecation warnings for continueOnFail
- Updated all examples to use modern error handling (onError instead of continueOnFail)
- Added comprehensive node-level properties documentation in tools_documentation
- Enhanced MCP tool documentation for n8n_create_workflow and n8n_update_partial_workflow
- Added test script demonstrating correct node-level property usage

Node-level properties now validated:
- credentials, disabled, notes, notesInFlow, executeOnce
- onError, retryOnFail, maxTries, waitBetweenTries, alwaysOutputData
- continueOnFail (deprecated)

Validation improvements:
- Detects misplaced properties and provides clear fix examples
- Shows complete node structure when properties are incorrectly placed
- Type validation for all node-level boolean and string properties
- Smart error messages with correct placement guidance

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-09 20:39:24 +02:00
czlonkowski
66e032c2a0 added safety warning 2025-07-09 09:02:50 +02:00
czlonkowski
577cd0cd7b docs: add video quickstart guide and update changelog with recent versions 2025-07-09 08:39:00 +02:00
czlonkowski
87f0cfc4dc feat: enhanced authentication logging for better debugging (fixes #22, #16)
- Added specific error reasons for auth failures: no_auth_header, invalid_auth_format, invalid_token
- Fixed AUTH_TOKEN_FILE support in Docker production stacks (issue #16)
- Added AUTH_TOKEN_FILE support to single-session HTTP server for consistency
- Enhanced security by removing token lengths from logs
- Added token trimming and empty token validation
- Updated Docker entrypoint to properly support AUTH_TOKEN_FILE
- Bumped version to 2.7.10

This improves debugging for mcp-remote authentication issues and enables
proper Docker secrets usage in production environments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-07 23:19:35 +02:00
czlonkowski
6f11d339ca restore CLAUDE.md 2025-07-07 09:34:31 +02:00
czlonkowski
6b49b000a9 chore: bump version to 2.7.9 for npm publish 2025-07-06 23:25:05 +02:00
czlonkowski
0f9f8d41a8 2.7.9 v2.7.9 2025-07-06 23:24:47 +02:00
czlonkowski
1ce431faf7 fix: populate template database with 499 workflow templates
- Run npm run fetch:templates to populate empty template database
- Fixes template search/list tools returning empty results
- Templates are fetched from public n8n.io API (no auth required)
- Resolves issue where template functionality appeared broken

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 23:20:56 +02:00
czlonkowski
1f12c4b690 feat: add npx support for zero-installation usage (closes #15)
- Add bin configuration to package.json for npx execution
- Implement smart database path resolution for npx/global/local installs
- Create dedicated npm publish script using runtime-only dependencies
- Add .npmignore to control published package contents
- Update README with npx as primary installation method
- Add n8n version badge to README
- Sync version between package.json and package.runtime.json
- Update CHANGELOG for v2.7.8 release

This allows users to run 'npx n8n-mcp' without installing the package,
reducing friction and making it easier to get started with n8n-MCP.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 22:40:58 +02:00
czlonkowski
657d8c6088 feat: add trust proxy support for correct IP logging behind reverse proxies (v2.7.6)
- Add TRUST_PROXY environment variable to enable proxy header trust
- Configure Express trust proxy in both HTTP server implementations
- Fix issue #19: Docker internal IPs logged instead of real client IPs
- Update documentation with reverse proxy configuration guide
- Add examples for nginx proxy header forwarding
- Maintain backward compatibility (disabled by default)

When TRUST_PROXY=1 is set, the server will correctly log client IPs
from X-Forwarded-For headers instead of proxy/container IPs.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 20:20:06 +02:00
czlonkowski
2a5c4ec6eb feat: add AUTH_TOKEN_FILE support for Docker secrets (v2.7.5)
- Add AUTH_TOKEN_FILE environment variable support for reading auth tokens from files
- Support Docker secrets pattern for production deployments
- Add Known Issues section documenting Claude Desktop container duplication bug
- Update documentation with authentication options and best practices
- Fix issue #16: AUTH_TOKEN_FILE was documented but not implemented
- Add comprehensive tests for AUTH_TOKEN_FILE functionality

BREAKING CHANGE: None - AUTH_TOKEN continues to work as before

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 18:32:15 +02:00
czlonkowski
35e4cf0da4 fix: remove hardcoded credentials and add security documentation
- Remove hardcoded API key and URL from debug-n8n-auth.ts
- Require environment variables with proper validation
- Add comprehensive SECURITY.md with best practices
- Address security concerns raised in issue #18

The SecureKeyGuard alert was a false positive (mistaking "validate_workflow"
for "VAULT_TOKEN"), but the review uncovered actual hardcoded credentials
that have now been removed.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 17:46:26 +02:00
czlonkowski
ebd646737a Merge pull request #17 from raja-jamwal/patch-1
readme update to use host container n8n
2025-07-06 17:15:03 +02:00
czlonkowski
19b9b5ca2d fix: webhook and 4 other nodes incorrectly marked as non-triggers
Fixed issue where Docker images using sql.js adapter returned boolean fields
as strings, causing is_trigger=0 to evaluate as true instead of false.

Changes:
- Added convertIntegerColumns() to sql.js adapter to convert SQLite integers
- Updated server.ts and node-repository.ts to use Number() conversion as backup
- Added test script to verify fix works with sql.js adapter

This fixes webhook, cron, interval, and emailReadImap nodes showing
isTrigger: false in Docker deployments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 17:01:05 +02:00
czlonkowski
23d5880264 fix: disable Docker build cache to force database update
- Added no-cache: true to docker/build-push-action
- Previous builds were aggressively caching the old database from 13:18
- This forces a complete rebuild including the new database with trigger fixes
- Build will take longer (5-10min vs 26sec) but ensures correct database

The cache was so aggressive that even Dockerfile changes didn't invalidate it.
This nuclear option ensures the trigger detection fixes for webhook, cron,
interval, and emailReadImap nodes are finally included in the Docker image.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 16:30:41 +02:00
czlonkowski
3e3017ede8 fix: force Docker to use updated database with trigger fixes
- Added cache-busting comment to invalidate Docker's build cache
- Previous builds were using cached COPY layer with old database from 13:18
- This ensures Docker copies the new database (15:38) with is_trigger=true fixes
- Affects: webhook, cron, interval, emailReadImap nodes

The Docker build cache was serving an old database without the trigger detection fix,
causing these nodes to incorrectly show isTrigger: false in the MCP tool.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 16:07:16 +02:00
czlonkowski
daaa3ca4a8 fix: properly migrate database from Git LFS to direct storage
- Previous commit still had LFS pointer instead of actual database
- Docker was getting 130-byte pointer file instead of 12MB database
- This commit contains the actual SQLite database file
- Verified: is_trigger=1 for webhook, cron, interval, emailReadImap nodes

This should finally fix the Docker issue where trigger nodes show isTrigger: false

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 15:40:16 +02:00
czlonkowski
574d8dd681 fix: remove database from Git LFS and track directly
- Removed Git LFS tracking for nodes.db to fix Docker builds
- Docker was getting LFS pointer file instead of actual database
- Database is only 20MB, safe to track directly
- Updated .gitignore to allow nodes.db tracking
- This ensures Docker always gets the actual database file
- Includes trigger detection fix (webhook, cron, interval, emailReadImap)

Resolves issues where Docker images showed isTrigger: false for trigger nodes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 15:18:12 +02:00
czlonkowski
00951ab3c1 chore: trigger Docker build with LFS-enabled workflow
Previous builds used workflow without lfs:true, resulting in LFS pointer files
being copied instead of actual database. This empty commit ensures the build
uses the updated workflow that properly downloads Git LFS files.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 14:52:36 +02:00
czlonkowski
f97088c37c fix: rebuild database with trigger detection fix applied
- Rebuilt nodes.db after the trigger detection fix was implemented
- All trigger nodes (webhook, cron, interval, emailReadImap) now correctly have is_trigger = 1
- Previous database in Git LFS was built before the fix was applied
- This resolves the issue where Docker images showed isTrigger: false for these nodes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 14:44:32 +02:00
czlonkowski
bfedadc6ef fix: enable Git LFS checkout in GitHub Actions workflows
- Added 'lfs: true' to all checkout steps in workflows
- Ensures Docker builds get the actual database file, not LFS pointer
- Required after migrating nodes.db to Git LFS
2025-07-06 14:02:12 +02:00
czlonkowski
67e28320d5 chore: migrate database to Git LFS for push protection bypass
- Moved nodes.db to Git LFS to avoid push protection issues
- Database has been sanitized to remove all API tokens
- This allows the database to be included in repository for Docker builds
2025-07-06 13:57:40 +02:00
czlonkowski
e912b1c90d feat: integrate automatic template sanitization into rebuild process
- Update rebuild script to automatically sanitize templates after node processing
- Update documentation to reflect GitHub push protection changes
- Add notes about template sanitization in n8n update process
- Ensures databases are always clean before push

This prevents GitHub push protection from blocking database updates
due to API tokens in workflow templates.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 13:34:52 +02:00
czlonkowski
74f018049d feat: add template sanitization to remove API tokens from workflow templates
- Add TemplateSanitizer utility class for detecting and replacing API tokens
- Update template repository to automatically sanitize on save
- Add sanitize:templates command to clean existing templates
- Uses pattern matching to detect various API token formats
- Fixes GitHub push protection blocking database updates

Note: Database will be updated separately after code is deployed

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 13:11:38 +02:00
czlonkowski
78b3b99ff7 fix: remove unused nodes-v2.db and update database paths
- Removed unused empty nodes-v2.db file
- Updated NodeDocumentationService to use nodes.db as default
- Updated test file to use correct database
- Added secret scanning exclusion for database files

This prevents confusion about which database is actually used and removes
the file that GitHub's security advisor was flagging.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 12:35:31 +02:00
czlonkowski
3cd683abc7 fix: webhook and 4 other nodes incorrectly marked as non-triggers
Updated trigger detection logic in both parsers to check if a node's group array includes 'trigger'. This fixes an issue where webhook, cron, interval, and emailReadImap nodes were not being identified as triggers despite having category='trigger'.

Note: After pulling this change, run `npm run rebuild` to update your local database.

Fixes #13

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-06 11:51:22 +02:00
Raja Jamwal
02a3c5a0ce Update README.md 2025-07-06 09:50:43 +05:30
Raja Jamwal
8a3798b8bf readme update to use host container n8n 2025-07-06 09:48:46 +05:30
czlonkowski
953310c9ad update README 2025-07-03 23:23:08 +02:00
czlonkowski
b73cffc27f feat(tools): rename start_here to tools_documentation with depth control (v2.7.4)
- Renamed start_here_workflow_guide to tools_documentation for clarity
- Added depth parameter to control documentation detail (essentials/full)
- Converted output from JSON to LLM-friendly plain text format
- Added per-tool documentation capability
- Created two-tier documentation system:
  - Essentials: brief info with key parameters and tips
  - Full: comprehensive docs with examples and best practices
- Documented 8 commonly used MCP tools
- Removed 380+ lines of unused getWorkflowGuide method
- Fixed duplicate tool definitions
- Updated all documentation references
- Added test script for tools documentation

BREAKING CHANGE: start_here_workflow_guide renamed to tools_documentation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-03 23:22:26 +02:00
czlonkowski
e9ea15ef09 Merge pull request #11 from TheSethRose/main
Fix MCP schema validation: Add additionalProperties to workflow nodes array
2025-07-02 09:58:39 +02:00
TheSethRose
cd8903c019 Fix MCP schema validation for Cursor Desktop compatibility
- Add additionalProperties: true to workflow nodes schema in n8n_update_full_workflow tool
- Resolves 'additional properties not allowed' errors in Cursor Desktop
- Improves MCP tool reliability for workflow management operations
2025-07-01 18:37:18 -05:00
czlonkowski
b9b70d68dd chore: update Docker configuration files with n8n API options
- Added n8n API configuration section to docker-compose.yml
- Updated .env.docker with n8n API environment variables
- Added helpful comments explaining the 16 additional management tools
- Configuration remains optional and commented out by default

This makes it easier for users to enable n8n management tools in Docker deployments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 12:33:22 +02:00
czlonkowski
9e7b733f84 chore: bump version to 2.7.2 and update HTTP deployment documentation
- Added warning about experimental remote server deployment
- Clarified HTTP bridge architecture in documentation
- Added deployment scenarios section explaining local vs remote options
- Enhanced troubleshooting with bridge-specific issues
- Created http-bridge.js for local HTTP testing
- Fixed HTTP server to include management tools in tools/list

The documentation now clearly explains:
- Why "node" command is used instead of "docker" (stdio bridge requirement)
- Three deployment scenarios with pros/cons
- How to test locally with Docker
- Bridge architecture (Claude Desktop → bridge → HTTP server)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:50:04 +02:00
czlonkowski
f9449e9192 docs: update HTTP deployment guide with n8n management tools
- Add comprehensive documentation for n8n API integration
- Document all 16 management tools available when configured
- Add environment variables N8N_API_URL and N8N_API_KEY
- Include security best practices for API key management
- Add examples of using n8n management tools
- Note version requirement (v2.7.1+) for Docker fix
- Correct tool counts (38 total: 22 documentation + 16 management)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 11:01:33 +02:00
czlonkowski
71385cc7ef fix: resolve tool count discrepancy in Docker environments (#6)
- Implement dynamic n8n API configuration checking
- Remove static config export in favor of lazy getter function
- Fix management tools not being registered when env vars set after startup
- Optimize logger performance with cached environment variables
- Clean up debug logging and remove console.error usage
- Bump version to 2.7.1

This ensures all 38 tools (22 documentation + 16 management) are properly
registered regardless of when environment variables become available.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 10:41:09 +02:00
czlonkowski
d291709774 Merge pull request #8 from docchang/fix/mcp-protocol-version
Fix MCP protocol version compatibility
2025-07-01 09:23:32 +02:00
czlonkowski
fdaaadba4c chore: update n8n to v1.100.1
- Updated n8n from 1.99.1 to 1.100.1
- Updated n8n-core from 1.98.0 to 1.99.0
- Updated n8n-workflow from 1.96.0 to 1.97.0
- Updated @n8n/n8n-nodes-langchain from 1.98.1 to 1.99.0
- Fixed node loader path for n8n-nodes-base
- Rebuilt node database with 526 nodes
- All validation tests passing

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-01 08:54:35 +02:00
Dominic
d9d9e240d2 fix: update MCP protocol version to 2024-11-05
Updates the protocol version from '1.0' to the current MCP specification version '2024-11-05'.
This resolves compatibility issues with modern MCP clients and ensures proper protocol negotiation.
2025-06-30 21:37:33 -07:00
czlonkowski
8872ca2201 move changelog 2025-06-29 19:46:28 +02:00
czlonkowski
dabee9f772 docs: create comprehensive CHANGELOG.md and update documentation
- Created complete CHANGELOG.md from v1.0.0 to v2.7.0 based on git history
- Updated README.md to fix incorrect CHANGELOG path reference
- Added n8n-docs/ directory to .gitignore (was accidentally tracked)
- Removed n8n-docs from git tracking

The CHANGELOG now follows Keep a Changelog format and includes all major features,
fixes, and improvements for each version with proper categorization.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-29 19:45:27 +02:00
czlonkowski
226fb0aad7 fix: remove DEBUG console.log statements from MCP server
- Commented out console.log statements that were interfering with JSON-RPC communication
- Fixed Claude Desktop errors for list_nodes and list_ai_tools
- All stdout in MCP servers must be valid JSON messages

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-29 19:26:23 +02:00
czlonkowski
1907e5ce8e refactor: major cleanup of legacy and temporary files
- Removed ~965MB of temporary directories (temp/, extracted-nodes/, etc)
- Deleted outdated database files and backups (.bak files)
- Removed legacy shell scripts (mcp-server-v20.sh, rebuild-v20.sh)
- Cleaned up orphan test files and debugging scripts
- Removed duplicate schema file (src/db/schema.sql)
- Deleted old Dockerfile.old and empty database files
- Updated documentation structure in README.md
- Added n8n_diagnostic tool to documentation
- Condensed version history in CLAUDE.md
- Created release notes for v2.7.0

Total impact: Removed 34 files, saving ~965MB+ of disk space

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-29 19:06:31 +02:00
czlonkowski
91386b2d02 refactor: clean up file names and fix version management
- Renamed files to remove unnecessary suffixes:
  - tools-update.ts → tools.ts
  - server-update.ts → server.ts
  - http-server-fixed.ts → http-server.ts
- Created version utility to read from package.json as single source of truth
- Updated all imports across 21+ files
- Removed legacy files:
  - src/http-server.ts (legacy HTTP server with known issues)
  - src/utils/n8n-client.ts (unused legacy API client)
- Added n8n_diagnostic tool to help troubleshoot management tools visibility
- Added script to sync package.runtime.json version
- Fixed version mismatch issue (was hardcoded 2.4.1, now reads 2.7.0 from package.json)

This addresses GitHub issue #5 regarding version mismatch and provides better diagnostics for users.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-29 17:43:29 +02:00
czlonkowski
a1e3f9cb39 Cleaning of README 2025-06-28 21:11:30 +02:00