chore: bump version to 2.8.3 and update changelog

- 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 is contained in:
czlonkowski
2025-07-31 17:58:52 +02:00
parent 959f291395
commit a4053de998
7 changed files with 43 additions and 7 deletions

View File

@@ -178,6 +178,7 @@ The MCP server exposes tools in several categories:
### Agent Interaction Guidelines ### Agent Interaction Guidelines
- Sub-agents are not allowed to spawn further sub-agents - Sub-agents are not allowed to spawn further sub-agents
- When you use sub-agents, do not allow them to commit and push. That should be done by you
# important-instruction-reminders # important-instruction-reminders
Do what has been asked; nothing more, nothing less. Do what has been asked; nothing more, nothing less.

View File

@@ -2,7 +2,7 @@
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![GitHub stars](https://img.shields.io/github/stars/czlonkowski/n8n-mcp?style=social)](https://github.com/czlonkowski/n8n-mcp) [![GitHub stars](https://img.shields.io/github/stars/czlonkowski/n8n-mcp?style=social)](https://github.com/czlonkowski/n8n-mcp)
[![Version](https://img.shields.io/badge/version-2.8.2-blue.svg)](https://github.com/czlonkowski/n8n-mcp) [![Version](https://img.shields.io/badge/version-2.8.3-blue.svg)](https://github.com/czlonkowski/n8n-mcp)
[![npm version](https://img.shields.io/npm/v/n8n-mcp.svg)](https://www.npmjs.com/package/n8n-mcp) [![npm version](https://img.shields.io/npm/v/n8n-mcp.svg)](https://www.npmjs.com/package/n8n-mcp)
[![codecov](https://codecov.io/gh/czlonkowski/n8n-mcp/graph/badge.svg?token=YOUR_TOKEN)](https://codecov.io/gh/czlonkowski/n8n-mcp) [![codecov](https://codecov.io/gh/czlonkowski/n8n-mcp/graph/badge.svg?token=YOUR_TOKEN)](https://codecov.io/gh/czlonkowski/n8n-mcp)
[![Tests](https://img.shields.io/badge/tests-1356%20passing-brightgreen.svg)](https://github.com/czlonkowski/n8n-mcp/actions) [![Tests](https://img.shields.io/badge/tests-1356%20passing-brightgreen.svg)](https://github.com/czlonkowski/n8n-mcp/actions)

View File

@@ -5,6 +5,41 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.8.3] - 2025-07-31
### Fixed
- **Docker User Switching**: Fixed critical issue where user switching was completely broken in Alpine Linux containers
- Added `su-exec` package for proper privilege dropping in Alpine containers
- Fixed broken shell command in entrypoint that used invalid `exec $*` syntax
- Fixed non-existent `printf %q` command in Alpine's BusyBox shell
- Rewrote user switching logic to properly exec processes with nodejs user
- Fixed race condition in database initialization by ensuring lock directory exists
- **Docker Integration Tests**: Fixed failing tests due to Alpine Linux ps command behavior
- Alpine's BusyBox ps shows numeric UIDs instead of usernames for non-system users
- Tests now accept multiple possible values: "nodejs", "1001", or "1" (truncated)
- Added proper process user verification instead of relying on docker exec output
- Added demonstration test showing docker exec vs main process user context
### Security
- **Command Injection Prevention**: Added comprehensive input validation in n8n-mcp wrapper
- Whitelist-based argument validation to prevent command injection
- Only allows safe arguments: --port, --host, --verbose, --quiet, --help, --version
- Rejects any arguments containing shell metacharacters or suspicious content
- **Database Initialization**: Added proper file locking to prevent race conditions
- Uses flock for exclusive database initialization
- Prevents multiple containers from corrupting database during simultaneous startup
### Testing
- **Docker Test Reliability**: Comprehensive fixes for CI environment compatibility
- Added Docker image build step in test setup
- Fixed environment variable visibility tests to check actual process environment
- Fixed user switching tests to check real process user instead of docker exec context
- All 18 Docker integration tests now pass reliably in CI
### Changed
- **Docker Base Image**: Updated su-exec installation in Dockerfile for proper user switching
- **Error Handling**: Improved error messages and logging in Docker entrypoint script
## [2.8.2] - 2025-07-31 ## [2.8.2] - 2025-07-31
### Added ### Added

View File

@@ -1,6 +1,6 @@
{ {
"name": "n8n-mcp", "name": "n8n-mcp",
"version": "2.8.2", "version": "2.8.3",
"description": "Integration between n8n workflow automation and Model Context Protocol (MCP)", "description": "Integration between n8n workflow automation and Model Context Protocol (MCP)",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {

View File

@@ -1,6 +1,6 @@
{ {
"name": "n8n-mcp-runtime", "name": "n8n-mcp-runtime",
"version": "2.8.1", "version": "2.8.3",
"description": "n8n MCP Server Runtime Dependencies Only", "description": "n8n MCP Server Runtime Dependencies Only",
"private": true, "private": true,
"dependencies": { "dependencies": {

View File

@@ -422,7 +422,7 @@ describe('Docker Config Edge Cases', () => {
// We need to preserve PATH so node can be found // We need to preserve PATH so node can be found
const output = execSync(`node "${parseConfigPath}" "${configPath}"`, { const output = execSync(`node "${parseConfigPath}" "${configPath}"`, {
encoding: 'utf8', encoding: 'utf8',
env: { PATH: process.env.PATH } // Only include PATH env: { PATH: process.env.PATH, NODE_ENV: 'test' } // Only include PATH and NODE_ENV
}); });
// Verify all configuration is properly exported with export prefix // Verify all configuration is properly exported with export prefix

6
types/test-env.d.ts vendored
View File

@@ -11,14 +11,14 @@ declare global {
TEST_ENVIRONMENT?: string; TEST_ENVIRONMENT?: string;
// Database Configuration // Database Configuration
NODE_DB_PATH: string; NODE_DB_PATH?: string;
REBUILD_ON_START?: string; REBUILD_ON_START?: string;
TEST_SEED_DATABASE?: string; TEST_SEED_DATABASE?: string;
TEST_SEED_TEMPLATES?: string; TEST_SEED_TEMPLATES?: string;
// API Configuration // API Configuration
N8N_API_URL: string; N8N_API_URL?: string;
N8N_API_KEY: string; N8N_API_KEY?: string;
N8N_WEBHOOK_BASE_URL?: string; N8N_WEBHOOK_BASE_URL?: string;
N8N_WEBHOOK_TEST_URL?: string; N8N_WEBHOOK_TEST_URL?: string;