n8nのMCP Server TriggerでワークフローをMCPサーバー化する方法
n8nのMCP Server Triggerノードでワークフローを外部公開し、Claude CodeやClaude Desktopからツールとして呼び出す設定手順を扱います。
n8nの「MCP Server Trigger」ノードを使うと、n8nワークフローをMCP(Model Context Protocol)サーバーとして外部公開できます。ClaudeはMCPクライアントとして、公開されたワークフローをツールの一つとして直接呼び出せます。
設定そのものはノードを置いてパラメーターを3つ埋めるだけです。時間がかかるのは接続後で、Claude側のタイムアウトや結果サイズの上限、レプリカ構成、リバースプロキシの設定が詰まりどころになります。
n8nをサーバーにするかクライアントにするか
MCP関連のノードは2種類あり、役割が逆です。どちらを置くか迷ったら、MCPの接続を受ける側か、接続しに行く側かで決めます。
n8nの2つのMCPノード
MCP Server Trigger
n8nがMCPサーバーになり、URLを公開します。Claude CodeやClaude DesktopなどのMCPクライアントが、n8n側のツールを一覧取得して呼び出します。この記事の主題です。
MCP Client Tool
n8nのAIエージェントが、外部のMCPサーバーへ接続してツールを使います。既存のMCPサーバーを選ぶ話はおすすめMCPサーバー10選が扱っており、設定場所もこの記事とは別です。
MCP Server Triggerは、通常のトリガーノードとは動きが違います。イベントを受けて次のノードへ出力を渡すのではなく、接続されたツールノードを公開して実行するだけです。ワークフロー全体を公開したいときは、Custom n8n Workflow ToolノードをMCP Server Triggerにつなぎます。
対応するトランスポートはServer-Sent Events(SSE)とstreamable HTTPです。標準入出力(stdio)には対応しません。この制約が、後でClaude Desktopに接続するときの設定に効いてきます。
公開までの3ステップ
ノードを追加したら、次の順に進めます。
MCP Server Triggerの設定
- 1
Pathを決める
MCP URLのパス部分です。既定では他のMCP Server Triggerノードと衝突しないランダムな値が入ります。APIのプロトタイプなどで固定URLが欲しいときだけ手動で指定します。ルートパラメーターも使えます。
- 2
Authenticationを選ぶ
None、Bearer auth、Header authの3つから選びます。いずれもHTTP Requestクレデンシャルの設定を使うので、先にクレデンシャルを作っておきます。 - 3
ツールをつなぐ
Custom n8n Workflow Toolノードをトリガーに接続し、外部へ出したいワークフローを登録します。
ノードパネルの上部には、Test URLとProduction URLの2つが表示され、切り替えて使います。Test URLは「Listen for Test Event」を選んだとき、またはワークフローが未公開の状態でExecute workflowを実行したときに登録されます。呼び出すと、ワークフロー画面にそのデータが表示されます。
Production URLはワークフローを公開した時点で登録されます。こちらの実行はワークフロー画面に出ません。結果を見たいときは、ワークフローのExecutionsタブから個別の実行を開きます。Claudeに登録するURLは、検証中はTest URL、運用ではProduction URLと使い分けます。
認証方式の選び方
3つの認証方式は、公開範囲で選びます。
| 認証方式 | 向いている用途 | 注意点 |
|---|---|---|
| None | 向いている用途ローカル検証・閉域ネットワーク内 | 注意点claude.aiのカスタムコネクタはNoneでもサインインを求める(後述) |
| Bearer auth | 向いている用途トークン1本で守るシンプルな外部公開 | 注意点AuthorizationヘッダーにBearer付きでトークンを載せる |
| Header auth | 向いている用途独自のヘッダー名で守りたいカスタムAPI | 注意点クライアント側のヘッダー名と値を完全に一致させる |
インターネットに出すワークフローをNoneのまま置くと、URLを知っている相手なら誰でもツールを実行できます。外部公開ではBearer authかHeader authを選ぶ構成が基本になります。
Claude Codeから呼び出す設定
Claude Codeではclaude mcp addでMCP URLを登録します。トランスポートはhttpを指定します。
claude mcp add --transport http n8n-workflow https://your-n8n.example.com/mcp/xxxx \
--header "Authorization: Bearer your-token"トークンをコマンドにそのまま書くと、シェルの履歴に残ります。プロジェクトで共有する設定ファイルへ保存するなら、トークンを環境変数にして${N8N_MCP_TOKEN}の形で参照します。Claude Code v2.1.289で、--scope projectを付けて追加した結果が次のとおりです。
claude mcp add --transport http --scope project n8n-workflow \
https://n8n.example.com/mcp/xxxx \
--header 'Authorization: Bearer ${N8N_MCP_TOKEN}'Added HTTP MCP server n8n-workflow with URL: https://n8n.example.com/mcp/xxxx to project config
Headers: {
"Authorization": "[REDACTED]"
}
File modified: /path/to/project/.mcp.json画面ではヘッダーの値が[REDACTED]と伏せられます。作成された.mcp.jsonには${N8N_MCP_TOKEN}が展開されないまま入っていました。
{
"mcpServers": {
"n8n-workflow": {
"type": "http",
"url": "https://n8n.example.com/mcp/xxxx",
"headers": {
"Authorization": "Bearer ${N8N_MCP_TOKEN}"
}
}
}
}--scopeの既定はlocalで、自分のそのプロジェクトだけに効きます。projectはこの.mcp.jsonに書いてチームで共有し、userは全プロジェクトで使います。
このファイルはGitに入れても、トークン本体は含まれません。ただし環境変数名には罠があります。リモートサーバーのurlやheadersでは、ANTHROPIC_AUTH_TOKENやNPM_TOKENのような認証情報の変数は、設定の有無にかかわらず空として読まれます。Bearer ${ANTHROPIC_AUTH_TOKEN}と書くとBearer だけが送られ、n8n側は401で拒否します。N8N_MCP_TOKENのように、専用の名前を付けておきます。
接続の仕方にも注意点があります。Claude CodeはまずHTTPで接続し、サーバーが受け付けなければSSEへ自動で切り替えます。この自動切り替えにはv2.1.265以降が必要です。それより古いバージョン、またはSSEで直接つなぎたいときは--transport sseを指定します。SSEトランスポート自体は非推奨で、HTTPが使えるならHTTPを選びます。登録後は/mcpでサーバーの接続状態を見られます。
Claude Desktop・claude.aiから呼び出す設定
claude.aiとClaude Desktopでは、コネクタ設定でカスタムコネクタとしてMCP URLを追加します。n8nの認証はOAuthではなくBearerトークンです。組織のOwnerがコネクタ追加時にリクエストヘッダーとして入力する静的認証情報(ベータ、一部の組織のみ)を使います。この欄がない環境では、次のmcp-remote構成を使います。
もう一つの方法が、設定ファイルに書く形です。MCP Server Triggerはstdioに対応しないので、n8nのドキュメントはmcp-remoteというゲートウェイでSSEのメッセージをstdioのサーバーに見せる構成を示しています。
{
"mcpServers": {
"n8n": {
"command": "npx",
"args": [
"mcp-remote",
"<n8nのMCP URL>",
"--header",
"Authorization: Bearer ${AUTH_TOKEN}"
],
"env": {
"AUTH_TOKEN": "<n8nで発行したトークン>"
}
}
}
}<n8nのMCP URL>と<n8nで発行したトークン>は、MCP Server Triggerノードのパラメーターとクレデンシャルの実際の値に置き換えます。貼り付けたあとは、JSONの構文を先に確かめておきます。
長いワークフローはどこで切れるか
ワークフローの実行が長い、または戻り値が大きいと、n8nの外側で打ち切られます。上限は接続する面によって違います。
| 項目 | claude.ai・Claude Desktop | Claude Code |
|---|---|---|
| ツール結果の最大サイズ | claude.ai・Claude Desktop約150,000文字 | Claude Code既定25,000トークン(MAX_MCP_OUTPUT_TOKENSで変更) |
| ツール呼び出しのタイムアウト | claude.ai・Claude Desktop1回240秒 | Claude CodeMCP_TOOL_TIMEOUTで設定 |
n8nがファイルの中身やAPIレスポンスをそのまま返す設計だと、この上限に当たります。ツール化するワークフローの側で、返す項目を絞るか、ページ単位に分けて返す形にしておきます。Claude Codeには、出力が10,000トークンを超えると警告を出す仕組みもあります。この閾値は固定で、変えられるのは上限の25,000トークンだけです。
Claude Codeは、時間のかかる呼び出しを3つのタイマーで管理しています。
Claude Codeの3つの時間制限
2分でバックグラウンドへ
メインの会話で2分を超えたMCPツール呼び出しは、バックグラウンドタスクに移ります。Claudeはタスクのidをすぐ受け取り、作業を続けます。結果は完了時に通知で届きます。v2.1.212以降の動作で、
CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで閾値を変えられます。無応答は5分で中断
HTTPやSSEのサーバーが、応答も進捗通知も5分間返さないと、呼び出しはエラーで中断されます。
CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUTで変更でき、0で無効になります。最初の応答は60秒以上
HTTPサーバーには、リクエストを送ってから最初の応答が返るまでのタイマーもあります。60秒、ツールのタイムアウト、
MCP_TIMEOUTのうち最大の値が使われ、60秒より短くはなりません。
数分かかるn8nワークフローをClaude Codeから呼ぶなら、2分でバックグラウンドへ回る点が実運用に効きます。claude.aiとClaude Desktopでは240秒で打ち切られるので、それより長い処理は、ワークフロー側で受付だけ返して別ツールで結果を取る構成に分けます。
トランスポートの選び方
Claude側はStreamable HTTPと、レガシーのHTTP+SSEの両方を扱います。ただしレガシーのHTTP+SSEは、Streamable HTTPへ置き換えられていく途中の非推奨の方式です。これから構築するなら、streamable HTTPでつながる構成を前提にします。
よくあるつまずき
n8nのドキュメントが挙げている制限は3つで、症状から原因をたどれます。
接続が頻繁に切れる、イベントが届かない
MCP Server TriggerはSSEかstreamable HTTPで永続接続を保つため、同じサーバーインスタンスが接続を受け続ける必要があります。queueモードでWebhookレプリカが1台なら問題ありません。
複数レプリカを動かすなら、/mcp*宛のリクエストをすべて専用の1台へ流します。MCP用にWebhookコンテナが1つだけのレプリカセットを作り、IngressやロードバランサーでMCPのトラフィックをそこへ向けます。振り分けないと、接続が頻繁に切れるか、イベントが確実に届かなくなります。
Noneにしたのにclaude.aiがサインインを求める
claude.aiのカスタムコネクタは、AuthenticationをNoneにしていてもn8nへのサインインを求めます。n8nインスタンスが他のトリガーでn8nのユーザー認証を提供していると、claude.aiはドメイン上のすべてのMCPエンドポイントが同じ認証を使うものと見なすためです。n8nのドキュメントによれば、こうした挙動が知られているクライアントはclaude.aiだけです。
リバースプロキシ配下で接続に失敗する
nginxなどの背後でn8nを動かすときは、MCPのエンドポイントでプロキシのバッファリングを無効にします。gzip圧縮の無効化(n8nが自前で処理するため)、チャンク転送エンコーディングの無効化、Connectionヘッダーを空文字にして転送ヘッダーから外す設定も候補です。MCPのエンドポイントで明示しておくと、他の場所の設定を引き継いでしまうことがありません。
location /mcp/ {
proxy_http_version 1.1;
proxy_buffering off;
gzip off;
chunked_transfer_encoding off;
proxy_set_header Connection '';
}まとめ
n8nのMCPサーバー化は、ノードを置いて3つの項目を埋めれば形になります。公開前に決めておきたいのは、認証方式、Claudeの面ごとのタイムアウトに収まる処理時間、複数レプリカやリバースプロキシの構成の3点です。Claude Code側の接続コマンドとMCPサーバーの自作はOpenAPI仕様からMCPサーバーを自動生成する3つの方法、公開したサーバーをMCP Registryへ載せる流れはMCP Registryへのリモートサーバー公開手順が参考になります。