n8n を MCP サーバー経由で GitHub Copilot から操作できるようにした
やりたかったこと
n8n でワークフローを作る際、毎回ブラウザの GUI を開いて操作するのが面倒でした。
GitHub Copilot(VS Code)から自然言語で n8n を操作できれば、開発体験が大幅に向上すると考え、MCP (Model Context Protocol) サーバーを使って実現しました。
n8n とは
n8n はセルフホスト可能なワークフロー自動化ツールです。Zapier や Make(旧 Integromat)に似ていますが、以下の点で大きく異なります。
n8n の利点
1. UI 上でワークフロー全体を視覚的に確認できる
n8n はノードベースのビジュアルエディタを採用しています。各ノードがどう接続され、データがどう流れるかを一目で把握できます。複雑なフローでも全体像を見失いません。
以下は実際の n8n エディタ画面です。チャットワークフローの例で、Chat Trigger → AI Agent → Azure OpenAI Chat Model という流れがノードとして可視化されています。

画面下部に注目してください。Chat パネルでワークフローをその場で実行テストでき、中央の Logs パネルでは各ノードの実行順序や所要時間(6.408s / 104 Tokens など)をリアルタイムに確認できます。右側の Output パネルでは選択したノードの出力データをプレビューできます。
このように、ブラウザ上でフロー全体を俯瞰しながら、個別ノードの入出力もその場で確認できるため、デバッグが非常に効率的です。
2. ノード単位で修正できるため変更の影響範囲が最小限
従来のスクリプトベースの自動化では、1 箇所の変更が全体に波及しがちです。n8n はワークフローが独立したノードの組み合わせで構成されているため、修正したいノードだけを編集できます。
以下は RAG(Retrieval-Augmented Generation)構成のワークフロー例です:

この RAG ワークフローは以下のノードで構成されています:
| ノード | 役割 |
|---|---|
| Chat Trigger | ユーザー入力の受け付け |
| AI Agent | 会話の制御・ツール呼び出し |
| Azure OpenAI Chat Model | LLM による応答生成 |
| Window Buffer Memory | 会話履歴の保持 |
| Vector Store Tool | ベクトル検索の実行 |
| Postgres PGVector Store | ベクトルデータの保存・検索 |
| Embeddings Azure OpenAI | テキストのベクトル化 |
例えば、以下のような変更は該当ノード 1 つを修正するだけで完了します:
- LLM を Azure OpenAI から別モデルに変えたい → Chat Model ノードだけ差し替え
- ベクトル DB を Postgres から Pinecone に変えたい → Vector Store ノードだけ差し替え
- 会話履歴の保持ターン数を変えたい → Window Buffer Memory の設定を変更
他のノードには一切手を加える必要がありません。スクリプトで同じ構成を組んだ場合、モデル変更だけでも API クライアントの初期化コード、エラーハンドリング、レスポンスパース処理など複数箇所の修正が必要になります。
3. 閉塞環境(エアギャップ)でも動作可能
n8n は完全にセルフホストできるため、インターネット接続がない閉塞環境でも運用可能です。(LLMをOllamh等のローカルLLMにすることで可能)
- Docker イメージをオフラインで持ち込み可能
- 外部 SaaS に依存しない自己完結アーキテクチャ
- 社内ネットワーク内の API やデータベースとの連携に最適
セキュリティポリシーが厳しい企業や、機密データを外部に出せない環境であっても、n8n なら自動化の恩恵を受けられます。
構成
本構成では n8n-mcp-server を Docker コンテナ上で動作させています。

MCP サーバーはコンテナ化されているため、環境依存を排除し、どのマシンでも同一の動作を保証できます。n8n 本体との通信は host.docker.internal 経由で行います。
使ったもの
- VS Code + GitHub Copilot Chat 拡張
- n8n-mcp-server — n8n の REST API を MCP ツールとして公開するサーバー(Docker コンテナで動作)
- n8n — セルフホスト型のワークフロー自動化ツール
セットアップ手順
n8n はDocker での self-hosted デプロイが公式推奨です。
まず Docker ボリュームを作成し、n8n コンテナを起動します:
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="Asia/Tokyo" \
-e TZ="Asia/Tokyo" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
起動後、ブラウザで http://localhost:5678 を開くとセットアップ画面が表示されます。
各オプションの説明:
| オプション | 説明 |
|---|---|
-p 5678:5678 |
ホストのポート 5678 を公開 |
GENERIC_TIMEZONE |
スケジュールノード等のタイムゾーン設定 |
TZ |
コンテナのシステムタイムゾーン |
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS |
設定ファイルのパーミッションを強制(推奨) |
N8N_RUNNERS_ENABLED |
タスクランナー有効化(推奨) |
-v n8n_data:/home/node/.n8n |
データを永続化するボリュームをマウント |
補足: 本番運用では
-it --rmの代わりに-dを使ってバックグラウンド起動することを推奨します。
MCP で使えるツール一覧
| ツール名 | 説明 |
|---|---|
list_workflows |
ワークフロー一覧を取得 |
get_workflow |
特定ワークフローの詳細を取得 |
create_workflow |
新しいワークフローを作成 |
update_workflow |
既存ワークフローを更新 |
activate_workflow |
ワークフローを有効化 |
deactivate_workflow |
ワークフローを無効化 |
delete_workflow |
ワークフローを削除 |
Docker で動かすメリット
環境の再現性
Node.js のバージョン差や依存パッケージの競合に悩まされません。node:20-alpine ベースの軽量イメージで統一されます。
セットアップの簡略化
docker compose build
あとは VS Code の MCP 設定を追加するだけです。
n8n 本体も Docker 化されていれば完全コンテナ構成に
n8n 自体も Docker で動作させていれば、docker-compose.yml に n8n-mcp-server を追加するだけで、ワークフロー自動化基盤とその操作 API を丸ごとコンテナで管理できます。
まとめ
- n8n はノードベースの UI で直感的にワークフローを構築・修正でき、閉塞環境でも動作する強力な自動化ツール
- n8n-mcp-server を Docker コンテナ化し、GitHub Copilot から自然言語で n8n を操作可能にした
- セットアップは
docker compose build+.env+mcp.jsonの 3 ステップ -
host.docker.internalを使うことで、コンテナから localhost の n8n にシームレスに接続
Discussion