Files
n8n-mcp/.env.docker
czlonkowski 53252adc68 feat: Add DISABLED_TOOLS environment variable for tool filtering (Issue #410)
Added DISABLED_TOOLS environment variable to filter specific tools from registration at startup, enabling deployment-specific tool configuration for multi-tenant deployments, security hardening, and feature flags.

## Implementation

- Added getDisabledTools() method to parse comma-separated tool names from env var
- Modified ListToolsRequestSchema handler to filter both documentation and management tools
- Modified CallToolRequestSchema handler to reject disabled tool calls with clear error messages
- Added defense-in-depth guard in executeTool() method

## Features

- Environment variable format: DISABLED_TOOLS=tool1,tool2,tool3
- O(1) lookup performance using Set data structure
- Clear error messages with TOOL_DISABLED code
- Backward compatible (no DISABLED_TOOLS = all tools enabled)
- Comprehensive logging for observability

## Use Cases

- Multi-tenant: Hide tools that check global env vars
- Security: Disable management tools in production
- Feature flags: Gradually roll out new tools
- Deployment-specific: Different tool sets for cloud vs self-hosted

## Testing

- 45 comprehensive tests (all passing)
- 95% feature code coverage
- Unit tests + additional test scenarios
- Performance tested with 1000 tools (<100ms)

## Files Modified

- src/mcp/server.ts - Core implementation (~40 lines)
- .env.example, .env.docker - Configuration documentation
- tests/unit/mcp/disabled-tools*.test.ts - Comprehensive tests
- package.json, package.runtime.json - Version bump to 2.22.14
- CHANGELOG.md - Full documentation

Resolves #410

Conceived by Romuald Członkowski - www.aiadvisors.pl/en
2025-11-09 16:26:47 +01:00

33 lines
699 B
Docker

# .env.docker
# Docker-specific environment template
# Copy to .env and fill in values
# Required for HTTP mode
AUTH_TOKEN=
# Server configuration
PORT=3000
HTTP_PORT=80
HTTPS_PORT=443
# Application settings
NODE_ENV=production
LOG_LEVEL=info
MCP_MODE=http
# Database
NODE_DB_PATH=/app/data/nodes.db
REBUILD_ON_START=false
# Optional nginx mode
USE_NGINX=false
# Optional n8n API configuration (enables 16 additional management tools)
# N8N_API_URL=https://your-n8n-instance.com
# N8N_API_KEY=your-api-key-here
# N8N_API_TIMEOUT=30000
# N8N_API_MAX_RETRIES=3
# Optional: Disable specific tools (comma-separated list)
# Example: DISABLED_TOOLS=n8n_diagnostic,n8n_health_check
# DISABLED_TOOLS=