Claude CodeとN8Nを連携させた話
VPS上でClaude CodeとワークフローツールのN8NをMCP経由で連携させた構築記録です。Dockerセットアップ・APIキー発行・n8n-mcp登録・ハマりポイントまでまとめています。

自分のVPS(CentOS Stream 9)でClaude Codeを使いながら、ワークフロー自動化ツールのn8nをDockerで動かし、さらにClaude CodeからMCP(Model Context Protocol)経由でn8nを操作できる環境を構築しました。作業のほとんどはClaude Codeと会話しながら進めました。
構成の概要
Claude Code (CLI)
│
│ MCP (stdio)
▼
n8n-mcp (npx n8n-mcp)
│
│ REST API
▼
n8n (Docker コンテナ)
└─ 127.0.0.1:5678- Claude Code — ターミナルで動くAI。コマンドを実行したりファイルを編集したりできる
- n8n — セルフホスト型のワークフロー自動化ツール(ZapierのOSS版みたいなもの)
- n8n-mcp — Claude CodeからMCP経由でn8nを操作するためのブリッジ
手順
1. n8nをDockerで起動する
最初はバインドマウント(~/n8n-data)で動かしていたが、Dockerのnamed volume(n8n_data)に移行した。こちらのほうがDockerの流儀に合っている。
docker run -d \
--name n8n \
--restart unless-stopped \
-p 127.0.0.1:5678:5678 \
-v n8n_data:/home/node/.n8n \
-e N8N_PORT=5678 \
-e N8N_PROTOCOL=http \
-e N8N_MCP_ENABLED=true \
docker.n8n.io/n8nio/n8nポイント:
-p 127.0.0.1:5678:5678— ローカルホストのみにバインド。インターネットには公開しないN8N_MCP_ENABLED=true— n8n側のMCPサポートを有効化--restart unless-stopped— 再起動時に自動起動
2. n8nのUIにアクセスする
n8nはlocalhostにしかバインドしていないので、ブラウザからアクセスするにはSSHトンネルが必要。
ssh -L 127.0.0.1:5678:127.0.0.1:5678 user@your-vps-ip~/.ssh/config に以下を書いておくと毎回自動でトンネルが張られる:
Host myvps
HostName your-vps-ip
User your-user
LocalForward 127.0.0.1:5678 127.0.0.1:56783. n8nのAPIキーを発行する
n8n UI → Settings → API → Create an API Key でAPIキーを発行する。このキーは後でMCPの設定に使う。
4. n8n-mcpをClaude CodeのMCPサーバーとして登録する
claude mcp add コマンドで登録するが、JWTトークンにドット(.)が含まれるため引数パーサーが誤動作する問題があった。そのため claude mcp add-json でJSON形式で直接指定する。
claude mcp add-json n8n-mcp '{
"type": "stdio",
"command": "npx",
"args": ["n8n-mcp"],
"env": {
"N8N_API_KEY": "your-api-key-here",
"N8N_API_URL": "http://127.0.0.1:5678",
"MCP_MODE": "stdio",
"LOG_LEVEL": "error"
}
}'設定は ~/.claude.json に保存される。次のセッション起動時から有効になる。
5. 動作確認
新しいセッションを起動すると、Claude Codeのシステムリマインダーに以下のMCPツールが表示される:
mcp__n8n-mcp__n8n_create_workflow
mcp__n8n-mcp__n8n_list_workflows
mcp__n8n-mcp__n8n_manage_credentials
mcp__n8n-mcp__n8n_generate_workflow
... などこれでClaude Codeと会話するだけでn8nのワークフローを作成・管理できる。
ハマったこと
claude mcp add でJWT APIキーが通らない問題
JWTトークンのドット(.)がCLIの引数パーサーに誤認識される。claude mcp add-json でJSON文字列として渡すことで回避できるようです。この辺りはトライアルアンドエラーが多く、カオスな状態だったので記憶が曖昧です。
MCPツールは新セッションから有効
claude mcp add-json でMCPを追加しても、現在のセッションには反映されない。/exit して claude で新しいセッションを起動する必要がありました。
テストワークフロー:メール送信
Claude Codeから直接ワークフローを作成した例:
Manual Trigger → Send Email (SMTP)n8n UIでGmailのSMTP認証情報(Gmailアドレス + Googleアプリパスワード)を設定し、ワークフローに紐づけることでメール送信が動く。Googleアカウントは2段階認証を有効にしておく必要がありました。
まとめ
項目 | 内容 |
|---|---|
n8n バージョン | 2.14.2 |
イメージ |
|
データ永続化 | Docker named volume |
ポート |
|
MCP サーバー |
|
MCP 設定ファイル |
|
Claude Codeと話しながらインフラを構築していくのは、コマンドをひとつひとつ調べて打つより格段に速かったです。特にMCPの仕組みを使うと、AIがツールを直接操作できるので「コマンドを教えてもらって自分で実行する」ではなく「AIが直接やってくれる」といった感覚でした。

Takaaki Yoneda
環境保全、グラフィックデザイン、マーケティングなどプログラミング以外にも幅広い興味を持ったソフトウェアエンジニアです。 最近の趣味は、ボードゲームと登山