n8n-nodes-claude-code-cli
v1.7.0
Published
n8n community node for Claude Code CLI integration - execute AI-assisted coding tasks
Maintainers
Readme
_____ _ _ _____ _
/ ____| | | | / ____| | |
| | | | __ _ _ _ __| | ___ | | ___ __| | ___
| | | |/ _` | | | |/ _` |/ _ \ | | / _ \ / _` |/ _ \
| |____| | (_| | |_| | (_| | __/ | |___| (_) | (_| | __/
\_____|_|\__,_|\__,_|\__,_|\___| \_____\___/ \__,_|\___|
⚡ for n8n ⚡n8n-nodes-claude-code-cli
🤖 Bring the power of Claude Code AI directly into your n8n workflows
Automate code reviews • Generate documentation • Fix bugs • Build coding bots
Getting Started • Use Cases • Documentation
✨ Features
| | | |---|---| | 🐳 Docker Execution - Run Claude Code in isolated containers | 🔄 Session Management - Multi-turn conversations across executions | | 🎯 Tool Permissions - Fine-grained control over allowed tools | 📁 Context Files - Include files and directories for analysis | | 🧠 Multiple Models - Opus, Sonnet, Haiku support | 📊 Rich Output - Costs, tokens, and session IDs |
⚡ Quick Start
1. Install the n8n node
In n8n: Settings > Community Nodes > Install > n8n-nodes-claude-code-cli
2. Deploy Claude Code Runner
n8n installed on host (not in Docker)? Use the standalone setup:
mkdir -p claude-code-runner && cd claude-code-runner && \
curl -fsSL https://raw.githubusercontent.com/ThomasTartrau/n8n-nodes-claude-code-cli/main/docker/production/claude-code/docker-compose.yml -o docker-compose.yml && \
curl -fsSL https://raw.githubusercontent.com/ThomasTartrau/n8n-nodes-claude-code-cli/main/docker/production/claude-code/Dockerfile -o Dockerfile && \
docker compose up -d --buildThe node uses docker exec to communicate with claude-code-runner. This requires:
- Docker CLI installed inside the n8n container
- Docker socket mounted to access the Docker daemon
The standard n8nio/n8n image doesn't include Docker CLI, so we provide a custom setup:
mkdir -p n8n-claude-code && cd n8n-claude-code && \
curl -fsSL https://raw.githubusercontent.com/ThomasTartrau/n8n-nodes-claude-code-cli/main/docker/production/n8n-with-claude-code/docker-compose.yml -o docker-compose.yml && \
curl -fsSL https://raw.githubusercontent.com/ThomasTartrau/n8n-nodes-claude-code-cli/main/docker/production/n8n-with-claude-code/Dockerfile.n8n -o Dockerfile.n8n && \
curl -fsSL https://raw.githubusercontent.com/ThomasTartrau/n8n-nodes-claude-code-cli/main/docker/production/n8n-with-claude-code/Dockerfile.claude-code -o Dockerfile.claude-code && \
docker compose up -d --buildThis builds a custom n8n image with Docker CLI and deploys both n8n and claude-code-runner together. Access n8n at http://localhost:5678
Already have n8n running in Docker? You can modify your existing setup:
- Create a custom Dockerfile for n8n:
FROM docker:29-cli AS docker-cli
FROM n8nio/n8n
USER root
COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
RUN chmod +x /usr/local/bin/docker
USER node- Update your docker-compose.yml:
services:
n8n:
build: . # Use the custom Dockerfile above
user: root # Required for Docker socket access
volumes:
- /var/run/docker.sock:/var/run/docker.sock
# ... your other volumes- Deploy claude-code-runner separately using the standalone setup above
Important: Both containers must be managed by the same Docker daemon.
3. Authenticate
docker exec -it claude-code-runner claude loginFollow the browser prompts to complete authentication.
4. Configure n8n credentials
| Parameter | Value |
|-----------|-------|
| Connection Type | Docker |
| Container Name | claude-code-runner |
| Working Directory | /workspace |
5. Start automating 🚀
Search "Claude Code" in n8n node panel and create your first workflow.
🐳 Configuration
Workspace Setup
You have two options to work with your code:
Option 1: Clone repos inside container (recommended for isolation)
docker exec -it claude-code-runner git clone <repo-url>
# Or use git worktree for multiple branchesOption 2: Mount existing projects
volumes:
- /path/to/your/project:/workspace/project-nameMCP Servers
Mount your MCP configuration to enable additional tools:
volumes:
# MCP servers directory
- ./mcp-servers:/root/.mcp
# Or mount your local .mcp.json (avoids versioning credentials)
- ~/.mcp.json:/root/.mcp.json:roFor dedicated VM deployments (AWS EC2, GCP, etc.):
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs git
npm install -g @anthropic-ai/claude-code
claude loginn8n Credentials:
| Parameter | Value |
|-----------|-------|
| Connection Type | SSH |
| Host | Your VM IP |
| Port | 22 |
| Auth Method | privateKey |
⚙️ Node Operations
| Operation | Description | Use Case | |-----------|-------------|----------| | Execute Prompt | Send a prompt and get a response | Direct AI interaction | | Execute with Context | Include files as context | Code review, analysis | | Continue Session | Continue last conversation | Multi-turn interactions | | Resume Session | Resume specific session by ID | Continue after interruption |
Execute Prompt
- Prompt (required): Instruction for Claude Code
- Model: Claude model to use
- Options: Working directory, timeout, system prompt
Execute with Context
- Prompt (required): Instruction for Claude Code
- Context Files: File paths to include
- Additional Directories: Directory paths
Continue / Resume Session
- Prompt (required): Follow-up message
- Session ID (resume only): Previous session ID
💡 Use Cases
🔍 MR/PR Code Review Agent
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌──────────────┐
│ GitLab │────▶│ Get Diff & │────▶│ Claude Code │────▶│ Post │
│ Webhook │ │ Files │ │ Review │ │ Comments │
└─────────────┘ └──────────────┘ └─────────────┘ └──────────────┘- Trigger: GitLab/GitHub webhook on new MR/PR
- Fetch: Get changed files and diff via API
- Review: Claude Code with
executeWithContext- "Review this code. Check for bugs, security issues, suggest improvements."
- Post: Send review comments back to GitLab/GitHub
- Notify: Alert team via Slack/Discord (optional)
🎧 Support Assistant
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌──────────────┐
│ Support │────▶│ Analyze │────▶│ Claude Code │────▶│ Respond │
│ Ticket │ │ Issue │ │ Solution │ │ or Route │
└─────────────┘ └──────────────┘ └─────────────┘ └──────────────┘- Trigger: Webhook from support system (Zendesk, Intercom)
- Analyze: Claude Code understands the issue
- "User reports: [issue]. Analyze and suggest solution."
- Respond: Send AI response back via API
- Escalate: Route complex issues to humans
📚 Auto Documentation
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌──────────────┐
│ Code │────▶│ Get Changed │────▶│ Claude Code │────▶│ Commit │
│ Push │ │ Files │ │ Gen Docs │ │ Docs │
└─────────────┘ └──────────────┘ └─────────────┘ └──────────────┘- Trigger: Webhook on code push to main
- Identify: Get list of changed files
- Generate: Claude Code generates documentation
- "Generate docs for this code. Include descriptions, params, examples."
- Commit: Create commit with updated docs
- PR: Optionally create a PR for review
🐛 Auto Bug Fixing
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌──────────────┐
│ Sentry │────▶│ Parse │────▶│ Claude Code │────▶│ Create PR │
│ Alert │ │ Stack Trace │ │ Fix Bug │ │ + Notify │
└─────────────┘ └──────────────┘ └─────────────┘ └──────────────┘- Trigger: Webhook from error monitoring (Sentry, Datadog)
- Analyze: Parse error stack trace
- Fix: Claude Code analyzes and fixes
- "Error: [stack trace]. Analyze code and provide a fix."
- Test: Run tests to validate
- PR: Create pull request with fix
- Notify: Alert team about automated fix
🤖 Cloud Coding Bots
Build AI coding assistants on Telegram, Slack, Discord, or GitLab/GitHub.
📱 Telegram Bot
- Trigger: Telegram trigger on new message
- Process: Claude Code handles coding question
- Reply: Send response via Telegram node
💬 Slack Bot
- Trigger: Slack mention or slash command
- Context: Fetch relevant code from repos (optional)
- Respond: Post response to channel
🦊 GitLab/GitHub Bot
- Trigger: Issue comment with keyword (e.g.,
/claude) - Analyze: Fetch issue context and code
- Comment: Post Claude's analysis
📤 Output Structure
{
"success": true,
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"output": "Here's my analysis of the code...",
"exitCode": 0,
"duration": 15234,
"cost": 0.0523,
"numTurns": 3,
"usage": {
"inputTokens": 1250,
"outputTokens": 890
}
}| Field | Description |
|-------|-------------|
| success | ✅ Execution completed successfully |
| sessionId | 🔗 ID for continuing conversations |
| output | 📝 Response text from Claude Code |
| cost | 💰 Estimated cost in USD |
| usage | 📊 Token breakdown |
🔒 Security
🛡️ Tool Permissions
Control what Claude Code can do:
✅ Allowed: Read, Glob, Grep
❌ Blocked: Bash(rm:*), Write(.env)🐳 Isolation Best Practices
- Always set specific working directory
- Avoid
/or home directories - Create dedicated workspace per project
Disallow dangerous operations:
Bash(rm:*)- Prevent file deletionBash(sudo:*)- No sudo accessWrite(.env)- Protect secretsBash(curl:*)- Block network (if not needed)
🤝 Contributing
Development Setup
git clone https://github.com/ThomasTartrau/n8n-nodes-claude-code-cli.git
cd n8n-nodes-claude-code-cli
npm install && npm run build
# Start n8n + claude-code-runner for testing
docker compose -f docker/development/docker-compose.yml up -d --build
# Authenticate claude-code-runner
docker exec -it claude-code-runner claude login
# Access n8n at http://localhost:5678Docker Files Structure
docker/
├── development/
│ ├── Dockerfile # n8n with docker CLI (dev)
│ └── docker-compose.yml # n8n + claude-code-runner (mounts dist/)
└── production/
├── claude-code/
│ ├── Dockerfile # Standalone claude-code-runner
│ └── docker-compose.yml # For n8n on host (not Docker)
└── n8n-with-claude-code/
├── Dockerfile.n8n # n8n with Docker CLI
├── Dockerfile.claude-code # claude-code-runner
└── docker-compose.yml # Complete stack (both services)Submit Changes
git checkout -b feature/amazing-feature
git commit -m 'feat: add amazing feature'
git push origin feature/amazing-feature📄 License
MIT License - see LICENSE for details.
GitHub • npm • n8n Community
Made with ❤️ for the n8n community
