mcpField
N
n8n-mcp-orchestrator

n8n-mcp-orchestrator

github.com/manutejエージェントワークフロー179 回インストール48 週間前に更新
リポジトリ

n8n-mcp-orchestrator について

n8n-mcp-orchestratorは、n8nのMCP連携を使ったAI自動化やエージェントワークフローの設計を解説するスキルです。n8nのワークフローをツールとして公開する方法と、外部MCPサーバーを呼び出す方法を扱います。

主な機能

  1. 01n8nワークフローをMCPツールとして公開
  2. 02ワークフローから外部MCPサーバーのツールを呼び出す
  3. 03認証とツールパラメーターの設定
  4. 04自動化ワークフローでMCP呼び出しを連結
  5. 05マルチエージェントのワークフローパターンを調整

活用シーン

  1. 01AIエージェントから業務ワークフローを起動
  2. 02スケジュール実行の自動化で外部MCPツールを利用
  3. 03複数段階または複数エージェントの処理を調整

MCP 対応

MCPの双方向利用を解説します。n8nワークフローはツールを公開するMCPサーバーにも、外部MCPサーバーのツールを呼び出すクライアントにもなり、ワークフロー内のリソースとプロンプトも扱います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/manutej/crush-mcp-server --skill n8n-mcp-orchestrator

インストール後、Claude Code で/n8n-mcp-orchestratorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

EXAMPLES.md
mcp-client-patterns.md
mcp-server-setup.md
README.md
SUMMARY.txt

詳細

n8n MCP オーケストレーター

n8n の Model Context Protocol(MCP)連携を使用して、AI エージェントとワークフローをオーケストレーションするための包括的なスキルです。このスキルにより、双方向の MCP パターン、エージェント型ワークフローの自動化、Claude Code との連携による本番環境対応の AI 搭載システムを実現できます。

このスキルを使用する場面

次のような場合にこのスキルを使用してください。

  • n8n で AI 搭載の自動化ワークフローを構築する
  • n8n ワークフローを AI エージェント(Claude Code、Claude Desktop)向けのツールとして公開する
  • n8n ワークフローから外部 MCP サーバーを利用する
  • マルチエージェントシステムやエージェント型ワークフローをオーケストレーションする
  • n8n をバックエンドとする、ツールを使用する AI エージェントを作成する
  • Claude Code をビジネスプロセスの自動化と連携する
  • MCP リソースを活用して、コンテキストを認識する自動化を構築する
  • 複数の AI エージェントにまたがる複雑なワークフローを調整する
  • 本番環境対応の AI オーケストレーションパイプラインを開発する
  • 双方向の MCP 通信パターンを実装する
  • ワークフローオーケストレーションを備えた自律型エージェントシステムを作成する
  • 400 以上のサービス連携を活用した AI ファーストの自動化を構築する

コアコンセプト

Model Context Protocol(MCP)

Model Context Protocol は、AI アシスタントを外部システムに接続するためのオープン標準です。

  • 双方向通信:クライアントとサーバーの双方からリクエストを開始できます
  • リソース管理:データとコンテキストをリソースとして公開します
  • ツールの呼び出し:AI エージェントがツール(関数/ワークフロー)を実行できます
  • プロンプトテンプレート:AI システムに構造化されたプロンプトを提供します
  • セキュリティ:認証と認可のパターンを標準で備えています
  • スケーラビリティ:本番環境での AI オーケストレーション向けに設計されています
MCP アーキテクチャの構成要素

1. MCP サーバー

  • AI クライアントに機能(ツール、リソース、プロンプト)を公開します
  • 単独のサービスにも、アプリケーションに組み込むこともできます
  • 認証、レート制限、セキュリティを処理します
  • n8n ワークフローを MCP サーバーとして動作させることができます

2. MCP クライアント

  • MCP サーバーに接続し、その機能を呼び出します
  • Claude Code や Claude Desktop などの AI アシスタントが該当します
  • n8n ワークフローを MCP クライアントとして動作させることができます

3. リソース

  • MCP サーバーが公開するデータソースとコンテキストです
  • 例:ドキュメント、データベースのレコード、API の応答
  • AI エージェントはコンテキストを得るためにリソースを読み取ることができます

4. ツール

  • AI エージェントが呼び出せる関数/ワークフローです
  • パラメーターを受け取り、結果を返します
  • n8n ワークフローを AI から呼び出せるツールにできます

5. プロンプト

  • AI とのやり取りに使用する構造化されたプロンプトテンプレートです
  • コンテキスト、指示、変数が含まれます
  • 特定の状況における AI の振る舞いを導きます
n8n の双方向 MCP 機能

MCP サーバーとしての n8n(ワークフローをツールとして公開):

  • MCP Server Trigger ノードは、AI から呼び出されるとワークフローを起動します
  • ワークフローが Claude Code から呼び出せるツールになります
  • AI エージェントが複雑なビジネスプロセスを自動化できるようにします
  • AI クライアントに構造化データを返します

MCP クライアントとしての n8n(外部 MCP サーバーを呼び出す):

  • MCP Client Tool ノードが外部 MCP サーバーを呼び出します
  • 他の MCP 対応サービスのツールを呼び出します
  • 1 つのワークフローで複数の MCP サーバーをオーケストレーションします
  • 複雑な自動化チェーンを構築します
n8n の主要な MCP ノード

1. MCP Server Trigger

  • MCP ツール呼び出しのためのワークフローのエントリーポイントです
  • AI エージェントからパラメーターを受け取ります
  • 呼び出し元の AI クライアントに結果を返します
  • 認証と検証に対応しています

2. MCP Client Tool

  • 外部 MCP サーバーのツールを呼び出します
  • リモートツールにパラメーターを渡します
  • 応答とエラーを処理します
  • 複数の MCP 呼び出しを連結します

MCP サーバーとしての n8n

ワークフローを AI エージェントのツールとして公開する

MCP Server Trigger を含むワークフローを作成すると、そのワークフローは AI エージェントが呼び出せるツールになります。

アーキテクチャパターン:

┌─────────────────────────────────────────────────────────────────┐
│                    Claude Code / Claude Desktop                 │
│                                                                 │
│  Agent decides to use tool:                                     │
│  "I need to create a support ticket for this bug"              │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓ MCP Tool Invocation
┌─────────────────────────────────────────────────────────────────┐
│                    n8n Workflow (MCP Server)                    │
│                                                                 │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │ MCP Server Trigger                                        │  │
│  │ Tool: "create_support_ticket"                             │  │
│  │ Receives: {title, description, priority}                  │  │
│  └──────────────────────────────────────────────────────────┘  │
│                          │                                      │
│                          ↓                                      │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │ HTTP Request: Call Jira API                               │  │
│  └──────────────────────────────────────────────────────────┘  │
│                          │                                      │
│                          ↓                                      │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │ Slack Notification: Notify team                           │  │
│  └──────────────────────────────────────────────────────────┘  │
│                          │                                      │
│                          ↓                                      │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │ Respond to MCP: Return ticket ID                          │  │
│  └──────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓ MCP Response
┌─────────────────────────────────────────────────────────────────┐
│                    Claude Code                                  │
│                                                                 │
│  Receives: {ticketId: "JIRA-12345", status: "created"}        │
│  Continues conversation with user                              │
└─────────────────────────────────────────────────────────────────┘
MCP サーバーのトリガー設定

基本設定:

  1. n8n で新しいワークフローを作成します

  2. エントリポイントとしてMCP Server Trigger ノードを追加します

  3. ツールの定義を設定します:

    • ツール名:一意の識別子(例:「create_support_ticket」)
    • 説明:AI がいつ使用すべきかを理解できる明確な説明
    • パラメーター:入力スキーマを定義します(JSON Schema 形式)
    • 認証:任意の認証設定
  4. ワークフローのロジックを構築します:リクエストを処理するノードを追加します

  5. レスポンスを返す:最後のノードの出力が MCP のレスポンスになります

MCP Server Trigger のパラメーター:

{
  "toolName": "create_support_ticket",
  "description": "Create a support ticket in Jira with automatic team notification",
  "parameters": {
    "type": "object",
    "properties": {
      "title": {
        "type": "string",
        "description": "Brief ticket title"
      },
      "description": {
        "type": "string",
        "description": "Detailed problem description"
      },
      "priority": {
        "type": "string",
        "enum": ["low", "medium", "high", "critical"],
        "description": "Ticket priority level"
      },
      "component": {
        "type": "string",
        "description": "System component affected"
      }
    },
    "required": ["title", "description"]
  }
}
レスポンス形式

ワークフローの最後のノードの出力が AI エージェントに返されます:

{
  "success": true,
  "ticketId": "JIRA-12345",
  "url": "https://company.atlassian.net/browse/JIRA-12345",
  "assignee": "[email protected]",
  "createdAt": "2025-10-20T10:30:00Z"
}
認証パターン

1. API キー認証

{
  "authenticationType": "apiKey",
  "apiKeyHeader": "X-API-Key",
  "requiredScopes": ["workflows:execute"]
}

2. OAuth 2.0

{
  "authenticationType": "oauth2",
  "authorizationUrl": "https://auth.company.com/oauth/authorize",
  "tokenUrl": "https://auth.company.com/oauth/token",
  "scopes": ["workflows:read", "workflows:execute"]
}

3. 認証なし(内部使用のみ)

{
  "authenticationType": "none"
}

MCP クライアントとしての n8n

外部 MCP サーバーの利用

MCP Client Tool ノードを使うと、n8n のワークフローから外部 MCP サーバーを呼び出し、そのツールを使用できます。

アーキテクチャパターン:

┌─────────────────────────────────────────────────────────────────┐
│                    n8n Workflow                                 │
│                                                                 │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │ Schedule Trigger: Every day at 9am                        │  │
│  └──────────────────────────────────────────────────────────┘  │
│                          │                                      │
│                          ↓                                      │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │ MCP Client Tool                                           │  │
│  │ Server: "analytics-mcp-server"                            │  │
│  │ Tool: "generate_daily_report"                             │  │
│  │ Params: {date: "today"}                                   │  │
│  └──────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓ MCP Request
┌─────────────────────────────────────────────────────────────────┐
│                    External MCP Server                          │
│                    (Analytics Service)                          │
│                                                                 │
│  Processes request, generates report, returns data             │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓ MCP Response
┌─────────────────────────────────────────────────────────────────┐
│                    n8n Workflow (continued)                     │
│                                                                 │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │ Email: Send report to stakeholders                        │  │
│  └──────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘
MCP Client Tool の設定

基本設定:

  1. ワークフローにMCP Client Tool ノードを追加します

  2. MCP サーバーへの接続を設定します:

    • サーバー URL:MCP サーバーのエンドポイント
    • 認証:API キー、OAuth、または認証なし
    • タイムアウト:リクエストのタイムアウト(デフォルト:30s)
  3. ツールを選択します:MCP サーバーで利用可能なツールから選びます

  4. パラメーターを指定します:ワークフローのデータをツールのパラメーターにマッピングします

  5. レスポンスを処理します:後続のノードで返されたデータを処理します

MCP Client Tool の設定:

{
  "serverUrl": "https://mcp.analytics-service.com",
  "authentication": {
    "type": "apiKey",
    "apiKey": "{{$credentials.analyticsApiKey}}"
  },
  "tool": "generate_daily_report",
  "parameters": {
    "date": "{{DateTime.now().toISODate()}}",
    "metrics": ["revenue", "users", "engagement"],
    "format": "json"
  },
  "timeout": 60000
}
利用可能なツールの検出

MCP サーバーはプロトコルを通じて、利用可能なツールを公開します:

{
  "tools": [
    {
      "name": "generate_daily_report",
      "description": "Generate daily analytics report",
      "parameters": {
        "type": "object",
        "properties": {
          "date": {"type": "string"},
          "metrics": {"type": "array"},
          "format": {"type": "string"}
        }
      }
    },
    {
      "name": "query_metrics",
      "description": "Query specific metrics",
      "parameters": {
        "type": "object",
        "properties": {
          "metric": {"type": "string"},
          "startDate": {"type": "string"},
          "endDate": {"type": "string"}
        }
      }
    }
  ]
}

Claude Code との統合

Claude Code を n8n のワークフローに接続する

前提条件:

  1. n8n インスタンスが稼働していること(セルフホストまたはクラウド)
  2. MCP Server Trigger が設定された n8n ワークフロー
  3. MCP クライアント機能を備えた Claude Code

設定手順:

1. n8n MCP サーバーのワークフローを作成

Workflow: "create_task"
┌──────────────────────────────────────┐
│ MCP Server Trigger                   │
│ Tool: create_task                    │
│ Params: title, description, due_date │
└──────────────────────────────────────┘
          ↓
┌──────────────────────────────────────┐
│ HTTP Request: POST to Todoist API    │
└──────────────────────────────────────┘
          ↓
┌──────────────────────────────────────┐
│ Return: Task created confirmation    │
└──────────────────────────────────────┘

2. n8n MCP サーバーの URL を取得

n8n は次の URL で MCP サーバーを公開します:

https://your-n8n-instance.com/mcp

3. Claude Code の MCP クライアントを設定

mcp_config.json に追加します:

{
  "mcpServers": {
    "n8n-workflows": {
      "url": "https://your-n8n-instance.com/mcp",
      "apiKey": "your-n8n-api-key",
      "description": "n8n workflow automation tools",
      "tools": [
        "create_task",
        "send_email",
        "create_support_ticket",
        "generate_report"
      ]
    }
  }
}

4. Claude Code で使用

Claude Code は n8n のツールを自動的に検出して使用します:

User: "Create a task to review the PR tomorrow at 2pm"

Claude Code:
- Recognizes create_task tool from n8n
- Invokes: create_task(
    title="Review PR",
    description="Code review for authentication feature",
    due_date="2025-10-21T14:00:00Z"
  )
- n8n workflow executes
- Returns task confirmation
- Claude responds: "Task created in Todoist: Review PR (tomorrow at 2pm)"
Claude Code ↔ n8n の双方向統合

パターン 1:Claude が n8n のワークフローをトリガー

Claude Code → MCP Tool Call → n8n MCP Server → Workflow executes

パターン 2:n8n が MCP 経由で Claude を呼び出す

n8n Workflow → MCP Client Tool → Claude API → AI processing → Response

複合パターン:エージェント型ワークフロー

1. User asks Claude to analyze sales data
2. Claude calls n8n tool: get_sales_data()
3. n8n retrieves data from database
4. Claude analyzes data
5. Claude calls n8n tool: generate_report(analysis)
6. n8n creates PDF report and emails stakeholders
7. Claude confirms completion to user

エージェント型ワークフローのパターン

パターン 1:複数ステップのエージェントワークフロー

シナリオ: カスタマーサポートチケットの処理

┌─────────────────────────────────────────────────────────────────┐
│ User: "Customer reports login issue"                            │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code (Agent)                                             │
│ 1. Calls: create_support_ticket(issue_type="login")            │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓
┌─────────────────────────────────────────────────────────────────┐
│ n8n Workflow 1: Create Ticket                                   │
│ - Create Jira ticket                                            │
│ - Notify support team in Slack                                  │
│ - Return ticket ID                                              │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code (Agent)                                             │
│ 2. Calls: search_knowledge_base(query="login issues")          │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓
┌─────────────────────────────────────────────────────────────────┐
│ n8n Workflow 2: Knowledge Search                                │
│ - Query internal docs                                           │
│ - Search past tickets                                           │
│ - Return relevant solutions                                     │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code (Agent)                                             │
│ 3. Analyzes solutions                                           │
│ 4. Calls: update_ticket(id, suggested_solution)                │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓
┌─────────────────────────────────────────────────────────────────┐
│ n8n Workflow 3: Update Ticket                                   │
│ - Update Jira with solution                                     │
│ - Auto-assign to engineer if complex                            │
│ - Send email to customer with workaround                        │
└─────────────────────────────────────────────────────────────────┘
パターン 2:マルチエージェントのオーケストレーション

シナリオ: 複数の専門エージェントを使ったコンテンツ作成パイプライン

┌─────────────────────────────────────────────────────────────────┐
│ Orchestrator Agent (Claude Code)                                │
│ "Create a blog post about our new feature"                      │
└─────────────────────────────────────────────────────────────────┘
                          │
        ┌─────────────────┼─────────────────┐
        ↓                 ↓                 ↓
┌──────────────┐  ┌──────────────┐  ┌──────────────┐
│ Research     │  │ Writing      │  │ SEO          │
│ Agent        │  │ Agent        │  │ Agent        │
└──────────────┘  └──────────────┘  └──────────────┘
        │                 │                 │
        ↓ MCP             ↓ MCP             ↓ MCP
┌──────────────┐  ┌──────────────┐  ┌──────────────┐
│ n8n: Gather  │  │ n8n: Generate│  │ n8n: Optimize│
│ data         │  │ content      │  │ for search   │
└──────────────┘  └──────────────┘  └──────────────┘
        │                 │                 │
        └─────────────────┼─────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────────────┐
│ n8n: Publishing Workflow                                        │
│ - Format content                                                │
│ - Upload images to CDN                                          │
│ - Publish to CMS                                                │
│ - Share on social media                                         │
│ - Notify marketing team                                         │
└─────────────────────────────────────────────────────────────────┘
パターン 3:自律エージェントのループ

シナリオ: 継続的な監視と修復

┌─────────────────────────────────────────────────────────────────┐
│ n8n: Monitoring Workflow (runs every 5 minutes)                 │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 1. Check system health metrics                              │ │
│ │ 2. If anomaly detected → Trigger MCP call to Claude        │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓ Anomaly detected
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code (Remediation Agent)                                 │
│ 1. Analyze metrics and logs                                     │
│ 2. Determine root cause                                         │
│ 3. Call: execute_remediation(action)                           │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓
┌─────────────────────────────────────────────────────────────────┐
│ n8n: Remediation Workflow                                       │
│ - Restart service if needed                                     │
│ - Scale resources                                               │
│ - Clear cache                                                   │
│ - Create incident ticket                                        │
│ - Alert on-call engineer                                        │
│ - Return results                                                │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code                                                     │
│ - Verify remediation successful                                 │
│ - Document incident                                             │
│ - Call: update_incident_log()                                  │
└─────────────────────────────────────────────────────────────────┘

ツールの構成と連鎖

パターン:ツールの逐次呼び出し

複数の MCP ツール呼び出しを連鎖させて、複雑な自動化を構築します:

// Claude Code orchestrates sequence
async function processCustomerOrder(orderId) {
  // Step 1: Get order details
  const order = await mcpCall('n8n', 'get_order', { orderId });

  // Step 2: Validate inventory
  const inventory = await mcpCall('n8n', 'check_inventory', {
    items: order.items
  });

  if (!inventory.available) {
    // Step 3a: Order out of stock items
    await mcpCall('n8n', 'create_purchase_order', {
      items: inventory.missing
    });

    // Step 3b: Notify customer of delay
    await mcpCall('n8n', 'send_email', {
      to: order.customerEmail,
      template: 'order_delayed',
      data: { estimatedDate: inventory.restockDate }
    });
  } else {
    // Step 3: Process payment
    const payment = await mcpCall('n8n', 'process_payment', {
      orderId,
      amount: order.total
    });

    // Step 4: Create shipment
    await mcpCall('n8n', 'create_shipment', {
      orderId,
      address: order.shippingAddress
    });

    // Step 5: Send confirmation
    await mcpCall('n8n', 'send_email', {
      to: order.customerEmail,
      template: 'order_confirmed',
      data: { trackingNumber: payment.trackingNumber }
    });
  }
}
パターン:ツールの並列実行

効率を高めるため、複数のツールを同時に実行します:

// Claude Code executes in parallel
async function enrichCustomerProfile(customerId) {
  const [
    orders,
    supportTickets,
    socialData,
    emailEngagement
  ] = await Promise.all([
    mcpCall('n8n', 'get_customer_orders', { customerId }),
    mcpCall('n8n', 'get_support_history', { customerId }),
    mcpCall('n8n', 'get_social_data', { customerId }),
    mcpCall('n8n', 'get_email_metrics', { customerId })
  ]);

  // Combine all data
  const profile = {
    totalSpent: orders.reduce((sum, o) => sum + o.total, 0),
    supportIssues: supportTickets.length,
    sentimentScore: socialData.sentiment,
    emailEngagement: emailEngagement.averageClickRate
  };

  // Update CRM
  await mcpCall('n8n', 'update_crm', {
    customerId,
    profile
  });
}

リソース管理

MCP 経由でリソースを公開する

リソースを使うと、ツールを呼び出さずに AI エージェントにコンテキストを提供できます。

リソースの種類:

  1. ドキュメント:Markdown、テキスト、PDF
  2. データ:JSON、CSV、構造化データ
  3. コンテキスト:設定、メタデータ
  4. テンプレート:プロンプトテンプレート、コードスニペット

例:API ドキュメントをリソースとして公開

{
  "resources": [
    {
      "uri": "resource://api-docs/authentication",
      "name": "Authentication API Docs",
      "description": "Complete authentication API documentation",
      "mimeType": "text/markdown",
      "content": "# Authentication API\n\n## Endpoints\n\n### POST /auth/login..."
    },
    {
      "uri": "resource://api-docs/users",
      "name": "Users API Docs",
      "description": "User management API documentation",
      "mimeType": "text/markdown",
      "content": "# Users API\n\n## Endpoints\n\n### GET /users..."
    }
  ]
}

リソースを提供する n8n ワークフロー:

┌──────────────────────────────────────┐
│ MCP Server Trigger                   │
│ Resource: api-docs/*                 │
└──────────────────────────────────────┘
          ↓
┌──────────────────────────────────────┐
│ Switch: Route by resource URI        │
└──────────────────────────────────────┘
          ↓
┌──────────────────────────────────────┐
│ HTTP Request: Fetch from docs repo   │
└──────────────────────────────────────┘
          ↓
┌──────────────────────────────────────┐
│ Format and return markdown           │
└──────────────────────────────────────┘
AI ワークフローでリソースを使用する

Claude Code はコンテキストを得るためにリソースを読み取ることができます:

User: "How do I authenticate with the API?"

Claude Code:
1. Reads resource: resource://api-docs/authentication
2. Analyzes documentation
3. Provides answer with code examples

本番環境へのデプロイ

n8n MCP サーバーのホスティング

デプロイの選択肢:

1. セルフホスト版 n8n

# docker-compose.yml
version: '3.8'
services:
  n8n:
    image: n8nio/n8n:latest
    ports:
      - "5678:5678"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=${N8N_PASSWORD}
      - N8N_MCP_ENABLED=true
      - N8N_MCP_PORT=8080
    volumes:
      - n8n_data:/home/node/.n8n
    restart: unless-stopped

volumes:
  n8n_data:

2. n8n Cloud

  • n8n のフルマネージドホスティング
  • MCP の組み込みサポート
  • 自動スケーリング
  • SSL/TLS を含む

3. Kubernetes へのデプロイ

# n8n-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: n8n-mcp-server
spec:
  replicas: 3
  selector:
    matchLabels:
      app: n8n
  template:
    metadata:
      labels:
        app: n8n
    spec:
      containers:
      - name: n8n
        image: n8nio/n8n:latest
        ports:
        - containerPort: 5678
          name: http
        - containerPort: 8080
          name: mcp
        env:
        - name: N8N_MCP_ENABLED
          value: "true"
        resources:
          requests:
            memory: "512Mi"
            cpu: "500m"
          limits:
            memory: "1Gi"
            cpu: "1000m"
セキュリティのベストプラクティス

1. 認証

{
  "mcp": {
    "authentication": {
      "type": "oauth2",
      "provider": "okta",
      "clientId": "${OAUTH_CLIENT_ID}",
      "clientSecret": "${OAUTH_CLIENT_SECRET}",
      "authorizationUrl": "https://company.okta.com/oauth2/v1/authorize",
      "tokenUrl": "https://company.okta.com/oauth2/v1/token"
    }
  }
}

2. レート制限

{
  "mcp": {
    "rateLimiting": {
      "enabled": true,
      "maxRequests": 100,
      "windowMs": 60000,
      "message": "Too many requests, please try again later"
    }
  }
}

3. IP の許可リスト

{
  "mcp": {
    "ipWhitelist": [
      "10.0.0.0/8",
      "172.16.0.0/12",
      "192.168.1.100"
    ]
  }
}

4. HTTPS のみ

# nginx.conf
server {
    listen 443 ssl http2;
    server_name mcp.company.com;

    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;

    location / {
        proxy_pass http://n8n:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
監視とデバッグ

ワークフロー実行のログ記録:

// Add to n8n workflow
{
  "nodes": [
    {
      "name": "Log MCP Request",
      "type": "n8n-nodes-base.function",
      "parameters": {
        "functionCode": `
          const mcpRequest = $input.item.json;

          console.log('MCP Tool Invoked:', {
            tool: mcpRequest.tool,
            parameters: mcpRequest.parameters,
            timestamp: new Date().toISOString(),
            clientId: mcpRequest.clientId
          });

          return { json: mcpRequest };
        `
      }
    }
  ]
}

エラー処理:

// MCP error response format
{
  "error": {
    "code": "INVALID_PARAMETERS",
    "message": "Missing required parameter: customerId",
    "details": {
      "parameter": "customerId",
      "expected": "string",
      "received": "undefined"
    }
  }
}

監視メトリクス:

# Prometheus metrics for n8n MCP
metrics:
  - mcp_tool_invocations_total
  - mcp_tool_execution_duration_seconds
  - mcp_tool_errors_total
  - mcp_active_connections
  - mcp_requests_per_second

ベストプラクティス

MCP サーバーの設計
  1. わかりやすいツール名:動詞-名詞の形式を使用します(create_ticket、get_user)
  2. 詳細な説明:各ツールをいつ使用するかを AI が理解できるようにします
  3. パラメーターの検証:入力パラメーターは必ず検証します
  4. 構造化データの返却:一貫性のある JSON レスポンス形式を使用します
  5. 適切なエラー処理:意味のあるエラーメッセージを返します
  6. ツールのバージョン管理:互換性を損なう変更に備えてバージョン管理に対応します
  7. すべてを文書化:例と使用ガイドを提供します
MCP クライアントの使用
  1. コネクションプーリング:MCP クライアント接続を再利用します
  2. タイムアウトの設定:適切なタイムアウトを設定します
  3. 再試行ロジック:指数バックオフを実装します
  4. エラー処理:MCP エラーを捕捉して処理します
  5. レスポンスのキャッシュ:適切な場合は、コストの高いツール呼び出しをキャッシュします
  6. 並列実行:独立した呼び出しには Promise.all を使用します
  7. ログ記録:デバッグのために、すべての MCP インタラクションを記録します
ワークフローの最適化
  1. ツール呼び出しを最小限に:可能な場合は操作をまとめて実行します
  2. Webhook の使用:長時間実行される操作に使用します
  3. 非同期パターン:時間のかかる操作で処理をブロックしないようにします
  4. リソース制限:メモリと CPU の制限を設定します
  5. 監視:実行時間とエラーを追跡します
  6. テスト:MCP ツールを個別にテストします
  7. ドキュメント:ツールのドキュメントを最新の状態に保ちます
セキュリティガイドライン
  1. 認証:本番環境では必ず認証を必須にします
  2. 認可:ロールベースのアクセス制御を実装します
  3. 入力検証:すべての入力をサニタイズします
  4. レート制限:不正利用を防止します
  5. 監査ログ:すべてのツール呼び出しを記録します
  6. シークレット管理:環境変数を使用します
  7. HTTPS:本番環境では必ず TLS を使用します

トラブルシューティング

よくある問題

Claude Code にツールが表示されない

考えられる原因:

  • MCP サーバーが mcp_config.json に登録されていない
  • ツールの説明がない、または不明瞭
  • 認証に失敗している
  • n8n ワークフローが有効化されていない

解決方法:

  1. MCP サーバーの URL が正しいことを確認します
  2. 認証情報を確認します
  3. n8n でワークフローが有効になっていることを確認します
  4. ツール一覧を更新するために Claude Code を再起動します

MCP ツールの呼び出しに失敗する

考えられる原因:

  • パラメーターが無効
  • タイムアウト
  • n8n ワークフローのエラー
  • 認証の有効期限切れ

解決方法:

  1. パラメーターの型がスキーマと一致していることを確認します
  2. 設定のタイムアウトを延長します
  3. n8n ワークフローの実行ログを確認します
  4. 認証トークンを更新します

ツールの実行が遅い

考えられる原因:

  • ワークフローが複雑
  • 外部 API の応答遅延
  • データベースクエリ
  • ネットワーク遅延

解決方法:

  1. ワークフローのロジックを最適化します
  2. 繰り返し実行されるクエリにキャッシュを追加します
  3. 非同期パターンを使用します
  4. n8n インスタンスをスケールします

認証エラー

考えられる原因:

  • API キーの有効期限切れ
  • 認証情報の誤り
  • IP アドレスが許可リストに登録されていない
  • OAuth トークンの有効期限切れ

解決方法:

  1. API キーを再生成します
  2. 設定の認証情報を確認します
  3. IP アドレスを許可リストに追加します
  4. OAuth トークンを更新します

高度なパターン

パターン:イベント駆動アーキテクチャ
┌─────────────────────────────────────────────────────────────────┐
│ External System (e.g., Stripe)                                  │
│ Event: payment_succeeded                                        │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓ Webhook
┌─────────────────────────────────────────────────────────────────┐
│ n8n: Webhook Trigger                                            │
│ 1. Receive payment event                                        │
│ 2. Call MCP: analyze_payment_risk()                            │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓ MCP Call
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code (Risk Analysis Agent)                               │
│ - Analyze transaction pattern                                   │
│ - Check customer history                                        │
│ - Assess fraud risk                                             │
│ - Return risk score                                             │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓
┌─────────────────────────────────────────────────────────────────┐
│ n8n: Risk-Based Routing                                         │
│ IF risk_score > 0.7:                                            │
│   - Flag for manual review                                      │
│   - Notify fraud team                                           │
│ ELSE:                                                           │
│   - Auto-approve                                                │
│   - Trigger fulfillment                                         │
└─────────────────────────────────────────────────────────────────┘
パターン:人間が介在するループ
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code: Draft email response                               │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓ Call MCP tool
┌─────────────────────────────────────────────────────────────────┐
│ n8n: request_human_approval(draft)                              │
│ 1. Send draft to manager via Slack                              │
│ 2. Wait for approval (webhook)                                  │
│ 3. Return approval status                                       │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓ Approval received
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code: Send approved email                                │
│ Call: send_email(approved_draft)                               │
└─────────────────────────────────────────────────────────────────┘
パターン:マルチモーダル処理
┌─────────────────────────────────────────────────────────────────┐
│ User uploads image to chat                                      │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓
┌─────────────────────────────────────────────────────────────────┐
│ Claude Code: Analyze image                                      │
│ - Extract text (OCR)                                            │
│ - Detect objects                                                │
│ - Identify action items                                         │
└─────────────────────────────────────────────────────────────────┘
                          │
                          ↓ For each action item
┌─────────────────────────────────────────────────────────────────┐
│ n8n MCP Tools:                                                  │
│ - create_task(item)                                             │
│ - send_notification(team)                                       │
│ - update_dashboard(metrics)                                     │
└─────────────────────────────────────────────────────────────────┘

クイックリファレンス

n8n の必須 MCP ノード

MCP Server Trigger

  • ワークフローを AI から呼び出し可能なツールとして公開します
  • ツール名、説明、パラメーターを定義します
  • ワークフローの出力を AI クライアントに返します

MCP Client Tool

  • 外部 MCP サーバーを呼び出します
  • サーバー URL とツール名を指定します
  • パラメーターを渡し、レスポンスを処理します
よく使われるツールパターン

リソースの作成

{
  "tool": "create_resource",
  "parameters": {
    "type": "string",
    "data": "object"
  },
  "returns": {
    "id": "string",
    "status": "string"
  }
}

リソースの更新

{
  "tool": "update_resource",
  "parameters": {
    "id": "string",
    "updates": "object"
  },
  "returns": {
    "success": "boolean",
    "resource": "object"
  }
}

データのクエリ

{
  "tool": "query_data",
  "parameters": {
    "filters": "object",
    "limit": "number"
  },
  "returns": {
    "data": "array",
    "total": "number"
  }
}

参考資料


スキルのバージョン:1.0.0 最終更新日:2025年10月 スキルのカテゴリー:AI オーケストレーション、ワークフロー自動化、MCP 統合 対応環境:n8n、Claude Code、Claude Desktop、MCP Protocol

コメント