
n8nのワークフローをMCPクライアントから動かす
Gemini AIを使って自然言語からSQL自動生成、BigQueryで実行をn8nでやってみる で構築したワークフローですが、チャットメッセージの受信をトリガーにしていました。
今回はこれをMCPクライアントから実行できるようにしてみます。
Claude Desktop AppやCursor Editorから動かすことを目指します。
n8nでMCPサーバーを構築
n8nにMCP Server Trigger node というのがあり、このトリガーを使用すると、n8nがMCPサーバーとして動作し、n8nツールやワークフローをMCPクライアントが利用できるようになります。
仕組み
MCP Server Triggerノードは、MCPクライアントのn8nへのエントリーポイントとして機能します。
このように、MCPクライアントがn8nツールにアクセスするためのURLを公開します。
認証も可能で、Bearer AuthとHeader Authが利用可能でした。
イベントに応答し、その出力を次に接続されたノードに渡す従来のトリガー・ノードとは異なり、MCPサーバ・トリガー・ノードはツール・ノードへの接続と実行のみを行います。
クライアントは利用可能なツールを一覧表示し、個々のツールを呼び出して作業を実行できます。
ツールノードにn8nワークフローをアタッチすることで、クライアントにn8nワークフローを公開できます。
やってみる
MCP Server Triggerを設置したワークフロー、ツールとして公開するワークフローの2つを作成します。
このようにToolsに前の記事で作成したワークフローをつなげていきます。
Toolからの別のワークフローを接続
MCP Server TriggerノードのToolを追加します。
他のワークフローをつなげるには、Call n8n Workflow Tool
を使用します、
ノード名変更
このノード名がMCPクライアントから参照できるツール名なので変更しておきます。
実行でエラー
Claude Desktop Appで実行するとこのようなエラーが出ました。ツール名に日本語は使えないようなので英数字にしておきましょう。
ワークフロー選択
デフォルトでリストから保存されているワークフローを選択できるので、ツール化したいものを選択します。
接続したワークフローの編集
Gemini AIを使って自然言語からSQL自動生成、BigQueryで実行をn8nでやってみる
で作成したワークフローのトリガーはチャットメッセージの受信トリガーでしたが、MCP Server Triggerのツールに接続するワークフローではこのままでは動きませんでした。
このサブワークフローは、すべての入力データを受信するように設定されており、特定の入力がないとエージェントはこのツールにデータを渡すことができません。サブワークフローのトリガーで特定の入力を定義することができます。
ということなので、
Execute Sub-workflow Trigger node というノードをトリガーに設定します。
他のワークフローに応答してワークフローを開始する場合に使用するノードです。
このノードは、Execute Sub-workflow
またはCall n8n Workflow Tool
ノードからの呼び出しに応じて実行されます。
このトリガーの設定で特定の入力を定義を行います。
ユーザーの要求を受け取って実行するワークフローなので、
今回はuserinputという名前で定義しました。文字列データを受け取るようにします。
そしてトリガーからメインの処理へ接続します。
以前接続していたトリガーからの接続は削除します。
接続先のAIエージェントのノードですが、ここに設定してるPrompt (User Message)
も修正します。
ユーザーからの要求は以下
{{ $json.userinput }}
定義したuserinputを使うようにしました。
別のワークフローに渡す引数を設定する
MCP Server Triggerを設置したワークフローに戻り、接続したツールの設定画面を開きます。
Workflow Inputs の項目にあるリストを選択すると、接続先のワークフローで定義したINPUT名が表示されているので、
これを選択します。
ここにはJavascriptのコードを入力することもできます({{}}
で囲む)
パラメータ入力欄の横にある✨ボタンをクリックすると、AIがその値を自動的に設定してくれるようになります。
このAIの自動設定にします。
MCPサーバーを起動
テストモード
Execute workflow
をクリックするとTestモードで起動しました。
Listening for test event と表示されているように、このサーバーへのイベントを待っている状態になります。
本番モード
ワークフローの上部にあるトグルをクリックすると実行可能状態になります。
Cursorから接続して動かす
ではCursorから起動したMCPサーバーに接続してみます。
この時のバージョンは1.0.0です。
※ Claude Desktopからの接続に関しては公式ドキュメントに記載されているので参照してください。
Cursor Settings
を開き、MCP Tools
をクリックします。
New MCP Server
をクリックするとjson形式の設定ファイルが開くので、そのファイルに以下を追記します。
※ MCP_URL
にはn8nで起動したMCP Server Triggerが作成したURLにします。
"n8n-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"<MCP_URL>"
]
}
認証が必要な場合は以下のようにすればいいと思います。
"n8n-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"<MCP_URL>",
"--header",
"Authorization: Bearer ${AUTH_TOKEN}"
],
"env": {
"AUTH_TOKEN": "<MCP_BEARER_TOKEN>"
}
}
追記して保存し、Cursor Settings
に戻ると、
x tools enabled
と表示があればMCPサーバーへの接続に成功しています。
tool欄を開くと、登録されたツールが確認できます。
ではCusorからメッセージを送信してみます。
2025年4月には何件のデータが登録されているか?
というメッセージを送信してみました。
※ ここでは最初にMCPを利用するように指示を追加しています
toolを実行するか聞かれるので、Run Tool を押して続きをやってもらいます。
しばらく待つとMCPサーバーからの結果が返信されました。ちゃんと動作しましたね。
※ 別の質問も
n8n側の実行ログも見てみましょう。
** MCP Server Trigger
を設置したワークフロー **
クライアントから送信されたメッセージを受け取っていることがわかります。
ツールにしている別のワークフローのログも見てみましょう。
別のワークフローから起動されて最後まで実行されていますね。
ワークフローの流れやノードごとのログ、使用したトークン数も確認できます。
ちなみに、この実行で1082トークン使われたようです。
まとめ
今回は、以前構築した「自然言語からSQLを生成してBigQueryで実行するn8nワークフロー」を、MCPサーバーとして公開し、Cursor Editorから直接呼び出してみました。
MCP Server Triggerノードを活用することで、n8nのワークフローを外部のMCPクライアントが利用できる「ツール」として簡単に提供できます。
構築のポイントは以下の通りです。
- MCPサーバーの構築: MCP Server Triggerノードでn8nワークフローへのエンドポイントを作成する。
- ワークフローのツール化: Call n8n Workflow Toolで既存のワークフローをツールとして接続する。
- サブワークフローの改修: ツールとして呼び出される側のワークフローは、Execute Sub-workflow Triggerをトリガーに設定し、引数(今回は userinput)を受け取れるように変更する。
- クライアントからの接続: CursorなどのMCPクライアントから、n8nが公開したURLに接続し、ツールとして認識させる。
n8nの強力なワークフロー自動化機能と、MCPによるツール連携の仕組みを組み合わせることで、アイデア次第で様々な業務効率化が可能になりますね。