🧐

[n8n] STDIOトランスポートのMCPサーバーを使う

に公開

https://zenn.dev/lecto/articles/bedd7e1779ae16
の続きです。

n8nに標準で入っているMCP ClientノードはSSEしか使えないようです。

STDIOトランスポートのMCPサーバーを使えるほうが何かと便利なので、使えるようにしてみます。

Community nodes から n8n-nodes-mcp をインストールする

https://github.com/nerding-io/n8n-nodes-mcp
これを使います。

左下の Settings を開きます。

左のメニューから Community nodes を開きます

Install ボタンをクリックするとモーダルが開きます。

npm Package Namen8n-nodes-mcp と入力し、インストールします。

しばらく時間がかかりますが、一旦これでインストールは完了です。

AI AgentノードのToolに MCP Client Tool を設定します

今回は、Slackからのメンションで質問に回答するチャットボットを想定してるので

こんな感じになります。

MCPサーバーにつなぐ例として、今回はDocBaseのMCPサーバーを使うことにします。

https://www.npmjs.com/package/@krayinc/docbase-mcp-server

ToolMCP Client Tool(List Tools) を追加する

まずはMCPサーバから利用できるツールを取得するためのMCP Clientを設定します。
AI AgentTool+ ボタンをクリックし、MCP Client Toolを探します。

Other Tools の方の MCP Client Tool を選択してください。
追加されたノードをダブルクリックして、編集します。

Credential to connect with -> Create new credential を開きます。

  • Connect using
    • Coomand Line (STDIO) を選択
  • Command
    • npx
  • Arguments
    • -y @krayinc/docbase-mcp-server@latest

のように入力します。
↓こんな感じです。

Environments はちょっとくせがあって

と書かれている通り

ダメな書き方
HOGE=1,FOO=2

のようにカンマ区切りで複数の KEY=VALUE を書けるようなんですが、この書き方すると実行時にエラーになります

いくつか試してみたところ、改行で書くとうまく行きました

うまく行った書き方
HOGE=1
FOO=2

https://github.com/nerding-io/n8n-nodes-mcp/issues/29
https://github.com/nerding-io/n8n-nodes-mcp/issues/109#issuecomment-2906627537

というわけで、改行区切りで、2つ環境変数を設定します。

DOCBASE_DOMAIN={チームのドメイン}
DOCBASE_API_TOKEN={v3アクセストークン}

※Valueは適切に設定してください。

ここで、MCP Client Toolの設定に戻り、
Tool Description Operation を設定しておきます。

ToolMCP Client Tool(Execute Tool) を追加する

追加手順は、1つ前と同じです。
以下のように設定します。

ポイントは

  • Operation
    • Execute Tool
  • Tool Name
    • {{ $fromAI("tool_name") }}
    • AIAgentから受け取るJSONで tool_name というキーの値が、AIAgentが呼び出すと判断したツールの名前になってます
  • Tool Parameters
    • Defined automatically by the model
    • これで、AIAgentがよしなにパラメーターを渡してくれます

動かしてみる!

結構時間はかかりますが、どういう動きをしているかはわかりました。

Discussion