- Updated n8n from 1.106.3 to 1.107.4
- Updated n8n-core from 1.105.3 to 1.106.2
- Updated n8n-workflow from 1.103.3 to 1.104.1
- Updated @n8n/n8n-nodes-langchain from 1.105.3 to 1.106.2
- Rebuilt node database with 535 nodes
- Bumped version to 2.10.5
- All tests passing
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated n8n from 1.105.2 to 1.106.3
- Updated n8n-core from 1.104.1 to 1.105.3
- Updated n8n-workflow from 1.102.1 to 1.103.3
- Updated @n8n/n8n-nodes-langchain from 1.104.1 to 1.105.3
- Rebuilt node database with 535 nodes
- All 1,728 tests passing
- Bumped version to 2.10.4
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix type safety vulnerability in enhanced-config-validator.ts
- Added proper type checking before string operations
- Return early when nodeType is invalid instead of using empty string
- Improve error handling robustness in MCP server
- Wrapped validation in try-catch to handle unexpected errors
- Properly re-throw ValidationError instances
- Add user-friendly error messages for internal errors
- Write comprehensive CHANGELOG entry for v2.10.3
- Document fixes for issues #58, #68, #70, #73
- Detail new validation system features
- List all enhancements and test coverage
Addressed HIGH priority issues from code review:
- Type safety holes in config validator
- Missing error handling for validation system failures
- Consistent error types across validation tools
- Update N8N_DEPLOYMENT.md to recommend test-n8n-integration.sh
- Remove outdated test-n8n-mode.sh and related files
- The integration test script properly tests full n8n integration with correct protocol version (2024-11-05)
- Removed scripts: test-n8n-mode.sh, test-n8n-mode.ts, debug-n8n-mode.js
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated n8n from 1.104.1 to 1.105.2
- Updated n8n-core from 1.103.1 to 1.104.1
- Updated n8n-workflow from 1.101.0 to 1.102.1
- Updated @n8n/n8n-nodes-langchain from 1.103.1 to 1.104.1
- Rebuilt node database with 534 nodes
- All 1,620 tests passing
- Updated CHANGELOG.md
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add release.yml GitHub workflow for automated npm releases
- Add prepare-release.js script for version bumping and changelog
- Add extract-changelog.js for release notes extraction
- Add test-release-automation.js for testing the workflow
- Add documentation for automated releases
This enables automatic npm publishing when tags are pushed,
fixing the issue where releases were created but npm packages
were not published.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated version in package.json and package.runtime.json
- Updated README version badge
- Moved changelog entry from Unreleased to v2.10.1
- Added version comparison link for v2.10.1
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added cleanupTimer property to track setInterval timer
- Implemented destroy() method to clear timer and prevent memory leak
- Updated MCP server shutdown to call cache.destroy()
- Enhanced HTTP server error handling with transport.onerror
- Fixed event listener cleanup to prevent accumulation
- Added comprehensive test coverage for memory leak prevention
This fixes the issue where MCP server would lose connection after
several hours due to timer accumulation causing memory exhaustion.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added automated release system with GitHub Actions
- Implemented CI/CD pipeline for zero-touch releases
- Added security fixes for deprecated actions and vulnerabilities
- Created developer tools for release preparation
- Full documentation in docs/AUTOMATED_RELEASES.md
- Improved GitHub Actions test to verify N8N_MODE environment variable
- Added explanatory comment in docker-compose.n8n.yml
- Added Docker Build Changes section to deployment documentation
- Explains the consolidation benefits and rationale for users
- Research proved n8n packages are NOT required at runtime for N8N_MODE
- The 'n8n' CMD argument was vestigial and completely ignored by code
- N8N_MODE only affects protocol negotiation, not runtime functionality
- Standard Dockerfile works perfectly with N8N_MODE=true
Benefits:
- Eliminates 500MB+ of unnecessary n8n packages from Docker images
- Reduces build time from 8+ minutes to 1-2 minutes
- Simplifies maintenance with single Dockerfile
- Improves CI/CD reliability
Updated:
- Removed Dockerfile.n8n
- Updated GitHub Actions to use standard Dockerfile
- Fixed docker-compose.n8n.yml to use standard Dockerfile
- Added missing MCP_MODE=http and AUTH_TOKEN env vars
- Updated all documentation references
- Create missing v2.9.1 git tag to trigger Docker builds
- Fix GitHub Actions workflow with proper environment variables
- Add comprehensive deployment documentation updates:
* Add missing MCP_MODE=http environment variable requirement
* Clarify Server URL must include /mcp endpoint
* Add complete environment variables reference table
* Update all Docker examples with proper variable configuration
* Add version compatibility warnings for pre-built images
* Document build-from-source as recommended approach
* Add comprehensive troubleshooting section with common issues
* Include systematic debugging steps and diagnostic commands
- Optimize package.runtime.json dependencies for Docker builds
- Ensure both MCP_AUTH_TOKEN and AUTH_TOKEN use same value
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Bumped version from 2.9.0 to 2.9.1
- Updated version badge in README.md
- Added comprehensive changelog entry documenting fixedCollection validation fixes
- Increased test coverage from 79.95% to 80.16% to meet CI requirements
- Added 50 new tests for fixed-collection-validator and console-manager
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This major update adds comprehensive n8n integration, enabling n8n-mcp to run
as an MCP server within n8n workflows using the MCP Client Tool node.
## Key Features
### n8n Integration (NEW)
- Full MCP Client Tool compatibility with protocol version negotiation
- Dedicated n8n mode with optimized Docker deployment
- Workflow examples and n8n-friendly tool descriptions
- Quick deployment script for easy setup
### Protocol & Compatibility
- Intelligent protocol version selection (2024-11-05 for n8n, 2025-03-26 for others)
- Fixed schema validation issues with n8n's nested output format
- Enhanced parameter validation with clear error messages
- Comprehensive test suite for protocol negotiation
### Security Enhancements
- Dynamic UID/GID generation (10000-59999) for Docker containers
- Improved error sanitization for production environments
- Fixed information leakage in error responses
- Enhanced permission handling for mounted volumes
### Performance Optimizations
- Docker build time reduced from 13+ minutes to 1-2 minutes
- Image size reduced from ~1.5GB to ~280MB
- Fixed ARM64 build failures
- Optimized to use runtime-only dependencies
### Developer Experience
- Comprehensive parameter validation for all MCP tools
- Made README version badge dynamic from package.json
- Enhanced test coverage with session management tests
- Improved CI/CD with informational patch coverage
### Documentation
- Added comprehensive N8N_DEPLOYMENT.md guide
- Updated CHANGELOG.md for version 2.9.0
- Enhanced CLAUDE.md with n8n-specific instructions
- Added deployment scripts and examples
## Technical Details
Files Added:
- Dockerfile.n8n, docker-compose.n8n.yml for n8n deployment
- Protocol version negotiation utilities
- n8n integration test suite
- Session management tests
- Deployment and test scripts
- Version badge update scripts
Files Modified:
- Enhanced MCP server with n8n mode support
- Improved HTTP server with better error handling
- Updated Docker configurations for security
- Enhanced logging for n8n compatibility
- CHANGELOG.md with comprehensive update description
This update makes n8n-mcp a first-class citizen in the n8n ecosystem,
enabling powerful AI-assisted workflow automation.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add N8N_MODE environment variable for n8n-specific behavior
- Implement HTTP Streamable transport with multiple session support
- Add protocol version endpoint (GET /mcp) for n8n compatibility
- Support multiple initialize requests for stateless n8n clients
- Add Docker configuration for n8n deployment
- Add test script with persistent volume support
- Add comprehensive unit tests for n8n mode
- Fix session management to handle per-request transport pattern
BREAKING CHANGE: Server now creates new transport for each initialize request
when running in n8n mode to support n8n's stateless client architecture
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated version in package.json and package.runtime.json
- Updated version badge in README.md
- Added comprehensive changelog entry for v2.8.3
- Fixed TypeScript lint errors in test files by making env vars optional
- Fixed edge-cases test to include required NODE_ENV
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit adds comprehensive support for JSON configuration files in Docker containers,
addressing the issue where the Docker image fails to start in server mode and ignores
configuration files.
## Changes
### Docker Configuration Support
- Added parse-config.js to safely parse JSON configs and export as shell variables
- Implemented secure shell quoting to prevent command injection
- Added dangerous environment variable blocking for security
- Support for all JSON data types with proper edge case handling
### Docker Server Mode Fix
- Added support for "n8n-mcp serve" command in entrypoint
- Properly transforms serve command to HTTP mode
- Fixed missing n8n-mcp binary issue in Docker image
### Security Enhancements
- POSIX-compliant shell quoting without eval
- Blocked dangerous variables (PATH, LD_PRELOAD, etc.)
- Sanitized configuration keys to prevent invalid shell variables
- Protection against shell metacharacters in values
### Testing
- Added 53 comprehensive tests for Docker configuration
- Unit tests for parsing, security, and edge cases
- Integration tests for Docker entrypoint behavior
- Security-focused tests for injection prevention
### Documentation
- Updated Docker README with config file mounting examples
- Enhanced troubleshooting guide with config file issues
- Added version bump to 2.8.2
### Additional Files
- Included deployment-engineer and technical-researcher agent files
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update package.json version from 2.7.23 to 2.8.0
- Update README.md test count from 1,182 to 1,356 tests
- Add comprehensive CHANGELOG entry for v2.8.0
- Document all test improvements and fixes from PR #104🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Major improvements based on comprehensive test suite review:
Test Fixes:
- Fix all 78 failing tests across logger, MSW, and validator tests
- Fix console spy management in logger tests with proper DEBUG env handling
- Fix MSW test environment restoration in session-management.test.ts
- Fix workflow validator tests by adding proper node connections
- Fix mock setup issues in edge case tests
Test Organization:
- Split large config-validator.test.ts (1,075 lines) into 4 focused files
- Rename 63+ tests to follow "should X when Y" naming convention
- Add comprehensive edge case test files for all major validators
- Create tests/README.md with testing guidelines and best practices
New Features:
- Add ConfigValidator.validateBatch() method for bulk validation
- Add edge case coverage for null/undefined, boundaries, invalid data
- Add CI-aware performance test timeouts
- Add JSDoc comments to test utilities and factories
- Add workflow duplicate node name validation tests
Results:
- All tests passing: 1,356 passed, 19 skipped
- Test coverage: 85.34% statements, 85.3% branches
- From 78 failures to 0 failures
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Bump version from 2.7.22 to 2.7.23 in package.json
- Update version badge in README.md
- Add tests badge showing 1,182 passing tests
- Add comprehensive CHANGELOG entry for v2.7.23 documenting:
- Complete testing infrastructure implementation
- 933 unit tests and 249 integration tests
- All CI test failures fixed
- Test architecture enhancements
- Documentation updates
- Development artifact cleanup
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update testing-architecture.md with accurate test counts (1,182 tests)
- Document 933 unit tests and 249 integration tests
- Add real code examples and directory structure
- Include lessons learned and common issues/solutions
- Update README.md testing section with comprehensive test overview
- Include test distribution by component
- Add CI test results from run #41
- Update CLAUDE.md with latest development guidance
- Remove AI agent coordination files and progress tracking
- Remove temporary test results and generated artifacts
- Remove diagnostic test scripts from src/scripts/
- Remove development planning documents
- Update .gitignore to exclude test artifacts
- Clean up 53 temporary files total
- Add comprehensive test utilities for database testing
- Implement connection management tests for in-memory and file databases
- Add transaction tests including nested transactions and savepoints
- Test database lifecycle, error handling, and performance
- Include tests for WAL mode, connection pooling, and constraints
Part of Phase 4: Integration Testing
- Add test result artifacts storage with multiple formats (JUnit, JSON, HTML)
- Configure GitHub Actions to upload and preserve test outputs
- Add PR comment integration with test summaries
- Create benchmark comparison workflow for PR performance tracking
- Add detailed test report generation scripts
- Configure artifact retention policies (30 days for tests, 90 for combined)
- Set up test metadata collection for better debugging
This completes all remaining test infrastructure tasks and provides
comprehensive visibility into test results across CI/CD pipeline.
- Create benchmark test suites for critical operations:
- Node loading performance
- Database query performance
- Search operations performance
- Validation performance
- MCP tool execution performance
- Add GitHub Actions workflow for benchmark tracking:
- Runs on push to main and PRs
- Uses github-action-benchmark for historical tracking
- Comments on PRs with performance results
- Alerts on >10% performance regressions
- Stores results in GitHub Pages
- Create benchmark infrastructure:
- Custom Vitest benchmark configuration
- JSON reporter for CI results
- Result formatter for github-action-benchmark
- Performance threshold documentation
- Add supporting utilities:
- SQLiteStorageService for benchmark database setup
- MCPEngine wrapper for testing MCP tools
- Test factories for generating benchmark data
- Enhanced NodeRepository with benchmark methods
- Document benchmark system:
- Comprehensive benchmark guide in docs/BENCHMARKS.md
- Performance thresholds in .github/BENCHMARK_THRESHOLDS.md
- README for benchmarks directory
- Integration with existing test suite
The benchmark system will help monitor performance over time and catch regressions before they reach production.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create comprehensive test directory structure
- Implement better-sqlite3 mock for Vitest
- Add node factory using fishery for test data generation
- Create workflow builder with fluent API
- Add infrastructure validation tests
- Update testing checklist to reflect progress
All Phase 2 tasks completed successfully with 7 tests passing.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove Jest and all related packages
- Install Vitest with coverage support
- Create vitest.config.ts with path aliases
- Set up global test configuration
- Migrate all 6 test files to Vitest syntax
- Update TypeScript configuration for better Vitest support
- Create separate tsconfig.build.json for clean builds
- Fix all import/module issues in tests
- All 68 tests passing successfully
- Current coverage baseline: 2.45%
Phase 1 of testing suite improvement complete.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated all Dockerfiles from node:20-alpine to node:22-alpine
- Addresses known vulnerabilities in older Alpine images
- Provides better long-term support with Node.js 22 LTS (until April 2027)
- Updated documentation to reflect new base image version
- Tested and verified compatibility with all dependencies
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated n8n from 1.102.4 to 1.103.2
- Updated n8n-core from 1.101.2 to 1.102.1
- Updated n8n-workflow from 1.99.1 to 1.100.0
- Updated @n8n/n8n-nodes-langchain from 1.101.2 to 1.102.1
- Rebuilt node database with 532 nodes
- Bumped version to 2.7.21
- All validation tests passing
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added proper SIGTERM/SIGINT signal handlers to stdio-wrapper.ts
- Removed problematic trap commands from docker-entrypoint.sh
- Added STOPSIGNAL directive to Dockerfile for explicit signal handling
- Implemented graceful shutdown in MCP server with database cleanup
- Added stdin close detection for proper cleanup when Claude Desktop closes the pipe
- Containers now properly exit with the --rm flag, preventing accumulation
- Added --init flag to all Docker configuration examples
- Updated documentation with container lifecycle management best practices
- Bumped version to 2.7.20
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Added support for n8n-nodes-langchain.* → nodes-langchain.* normalization
- Implemented case-insensitive node name matching (e.g., chattrigger → chatTrigger)
- Added smart camelCase detection for common patterns (trigger, request, sheets, etc.)
- Fixed get_node_documentation tool to use same normalization logic as other tools
- Updated all 7 node lookup locations to use normalized types for alternatives
- Enhanced getNodeTypeAlternatives() to normalize all generated alternatives
All MCP tools now consistently handle various format variations:
- nodes-langchain.chatTrigger (correct format)
- n8n-nodes-langchain.chatTrigger (package format)
- n8n-nodes-langchain.chattrigger (package + wrong case)
- nodes-langchain.chattrigger (wrong case only)
- @n8n/n8n-nodes-langchain.chatTrigger (full npm format)
Bump version to 2.7.19
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Changed misleading 'total' field to 'returned' to clarify it's the count in current page
- Added 'hasMore' boolean flag for clear pagination indication
- Added '_note' guidance when more data is available
- Applied same improvements to n8n_list_executions for consistency
Performance improvements:
- Tool now returns only minimal metadata instead of full workflow structure
- Reduced response size by ~95% (from thousands to ~10 tokens per workflow)
- Eliminated token limit errors when listing workflows with many nodes
- Updated descriptions and documentation to clarify minimal response
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed health check to use correct /healthz endpoint instead of /health
- Added MCP version (mcpVersion) and supported n8n version (supportedN8nVersion) to health check response
- Added versionNote field with instructions for AI agents about manual version verification
- n8n API limitation: instance version cannot be determined automatically
- Updated axios usage for healthz endpoint access with proper error handling
- Added workflowNodeType field to all node-returning MCP tools
- AI agents now receive both internal format (nodes-base.webhook) and workflow format (n8n-nodes-base.webhook)
- Created getWorkflowNodeType() utility to construct proper n8n format from package name
- Solves issue where AI agents would search nodes and use wrong format in workflows
- No database changes required - uses existing package_name field
- Updated: search_nodes, get_node_info, get_node_essentials, get_node_as_tool_info, validate_node_operation
- Updated CHANGELOG.md with comprehensive documentation of the changes
This completes the fix for issue #71, ensuring AI agents can seamlessly create workflows
with the correct node type format without manual intervention.
- Add centralized normalizeNodeType utility to handle prefix conversion
- n8n-nodes-base.* → nodes-base.*
- @n8n/n8n-nodes-langchain.* → nodes-langchain.*
- Update all 9 affected MCP tools to use normalized node types
- AI agents can now use node types directly from n8n workflow exports
- Maintains backward compatibility with existing shortened prefixes
- Add comprehensive test coverage for all affected methods
Fixes#71🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add Railway-specific Docker image build to CI/CD workflow
- Builds n8n-mcp-railway image alongside standard image
- Railway image optimized for AMD64 architecture
- Automatically published to ghcr.io on main branch pushes
- Create comprehensive Railway deployment documentation
- Step-by-step deployment guide with security best practices
- Claude Desktop connection instructions via mcp-remote
- Troubleshooting guide for common issues
- Architecture details and single-instance design explanation
- Update README with Railway documentation link
- Removed inline Railway content to keep README focused
- Added link to dedicated Railway deployment guide
This enables zero-configuration cloud deployment of n8n-mcp
with automatic HTTPS, global access, and built-in monitoring.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>