MCP Fusion/Integrations and federation/n8nコネクタ

n8nコネクタ

VinkiusについてAIに質問

タグ付き n8n ワークフローを MCP ツールとして公開します。Webhook を自動検出し、入力スキーマを推論して、ワークフローの変更時にエージェントのツール一覧を更新します。

n8n には自動化ロジックがすでに含まれています。MCP Fusion は、各ワークフローを TypeScript に書き直すことなく、これらのワークフローをエージェント向けコネクタに変換します。n8n パッケージは Webhook を検出し、入力形式を推論して、グループ化されたツールを生成します。

タグ付きワークフローの自動検出

typescript
import { createN8nConnector } from '@mcpfusion/n8n';

const n8n = await createN8nConnector({
  url: process.env.N8N_URL!,
  apiKey: process.env.N8N_API_KEY!,
  includeTags: ['ai-enabled'],
  pollInterval: 60_000,
  onChange: () => server.notification({
    method: 'notifications/tools/list_changed',
  }),
});

for (const tool of n8n.tools()) {
  registry.register(defineTool(tool.name, tool.config));
}

ソース設定は意図的に小さくなっています。urlapiKey は必須で、includeTagsexcludeTagstimeoutpollIntervalonChange はオプションです。タグによるフィルタリングは検出時に行われるため、内部ワークフローがコネクタの公開面に入ることはありません。

検出で行われること

WorkflowDiscovery は n8n ワークフローを読み取り、Webhook によって起動されるフローを識別します。inferSchema は Webhook のペイロードをパラメーター定義に変換します。synthesizeTool は 1 つのツールを作成し、synthesizeAll は完全なセットを作成します。toToolName はワークフローに決定論的な MCP 名を付けます。

ポーリングで変更されたワークフローが検出されたら、onChange を通じて notifications/tools/list_changed を呼び出します。クライアントはコネクタコードを再デプロイせずに公開面を再読み込みします。

手動でのツール定義

検出は便利ですが、安定した公開契約は手作業で記述したほうがよい場合があります。

typescript
import { defineN8nTool } from '@mcpfusion/n8n';

const sendInvoice = defineN8nTool({
  name: 'billing.send_invoice',
  workflowId: 'workflow_42',
  webhookPath: 'billing/send-invoice',
  method: 'POST',
  description: 'Send an invoice through the approved workflow',
  params: {
    invoice_id: { type: 'string', required: true },
    notify_customer: { type: 'boolean', required: false },
  },
  tags: ['billing'],
});

手動設定では workflowIdwebhookPath、オプションの HTTP メソッド、description、params、annotations、tags を指定できます。ツール名とスキーマは利用者が管理し、ワークフローの実行は n8n が担当します。

セキュリティ境界

API キーはコネクタの認証情報であり、モデルの引数ではありません。BYOC credentials とともに保存し、プロンプトや生成されたツールスキーマには決して入れないでください。生成されたツールの周囲に認証ミドルウェアを追加し、デプロイ単位でタグをフィルタリングし、ワークフローがドメインレコードを返すときは Presenters を付与します。n8n がテナントポリシーを自動推論したり、任意のレスポンスフィールドを秘匿化したりすることはありません。

次のステップ