Kanadischer Feiertags-API MCP-Server

Fortgeschritten

Dies ist ein Engineering, AI RAG-Bereich Automatisierungsworkflow mit 15 Nodes. Hauptsächlich werden HttpRequestTool, McpTrigger und andere Nodes verwendet. AI-Agent mit dem Canada Holidays API verbinden, unterstützt 6 Provinzen und Feiertagsoperationen

Voraussetzungen
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "yP9uGLQmy5COX7bz",
  "meta": null,
  "name": "Canada Holidays API MCP Server",
  "tags": [],
  "nodes": [
    {
      "id": "26a8df5c-db6d-43cd-94bd-9810f78f5a92",
      "name": "Setzenup-Anleitung",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1380,
        -240
      ],
      "parameters": {
        "color": 4,
        "height": 1060,
        "content": "### ⚙️ Setup Instructions\n\n1. **Import Workflow**: \nLoad this workflow into your n8n instance\n\n2. **Authentication**: \nNo authentication required\n\n3. **Activate Workflow**:\nEnable the workflow to start the MCP server\n\n4. **Get MCP URL**: \nCopy the webhook URL from the MCP trigger\n\n5. **Connect AI Agent**:\nUse the MCP URL in your AI agent configuration\n\n\n### 💡 Usage Notes\n• Parameters are auto-populated by AI using $fromAI() expressions\n• With 6 API endpoints available as tools\n• Responses maintain original API structure\n\n\n### 🛠️ Customization\n• Add data transformation nodes if needed\n• Implement custom error handling\n• Add logging or monitoring nodes\n\n• Modify parameter defaults in any HTTP request node as needed\n\n### 💬 Need Help?\nPing me on [discord](https://discord.me/cfomodz) for integration guidance and custom automations. Check the [n8n documentation](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/) for more information."
      },
      "typeVersion": 1
    },
    {
      "id": "1ff9f466-d977-439d-9038-dcc022355864",
      "name": "Workflow-Übersicht",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1120,
        -240
      ],
      "parameters": {
        "width": 420,
        "height": 920,
        "content": "## 🛠️ Canada Holidays MCP Server ✅ 6 operations\n\n### About\nThis API lists all 31 public holidays for all 13 provinces and territories in Canada, including federal holidays.\n\n### 🔧 How it Works\n\nThis workflow converts the Canada Holidays API into an MCP-compatible interface for AI agents.\n\n• **MCP Trigger**: Serves as your server endpoint for AI agent requests\n• **HTTP Request Nodes**: Handle API calls to https://canada-holidays.ca\n• **AI Expressions**: Automatically populate parameters via `$fromAI()` placeholders\n• **Native Integration**: Returns responses directly to the AI agent\n\n\n### 📋 Available Operations (6 endpoints)\n\n**Info (2 operations)**\nGet API Root, Get API Schema\n\n**Holidays (2 operations)**\nList All Holidays, Get Holiday by ID\n\n**Provinces (2 operations)**\nList All Provinces, Get Province by ID\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "88d82a73-f595-4dfe-a3e1-345ab61d4f7f",
      "name": "Kanada Feiertage MCP-Server",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        -620,
        -240
      ],
      "webhookId": "42046709-1e8c-4dcc-8608-5f28f5a6bd25",
      "parameters": {
        "path": "canada-holidays-mcp"
      },
      "typeVersion": 1
    },
    {
      "id": "6b54fafa-84dc-4c18-b64e-9d0ad3d78fb6",
      "name": "Haftnotiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        -100
      ],
      "parameters": {
        "color": 2,
        "width": 500,
        "height": 200,
        "content": "## Info"
      },
      "typeVersion": 1
    },
    {
      "id": "01bca653-9e1a-40e0-884c-6f322987a420",
      "name": "Get API Root",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -520,
        -60
      ],
      "parameters": {
        "url": "=https://canada-holidays.ca/api/v1",
        "options": {},
        "toolDescription": "Root"
      },
      "typeVersion": 4.2
    },
    {
      "id": "b679949c-71f9-4c6c-9746-2a80b0d19651",
      "name": "Get API Schema",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -320,
        -60
      ],
      "parameters": {
        "url": "=https://canada-holidays.ca/api/v1/spec",
        "options": {},
        "toolDescription": "Get JSON schema"
      },
      "typeVersion": 4.2
    },
    {
      "id": "bd922cde-17ae-4ed7-a408-d942c744ac96",
      "name": "Beschreibung - info",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -120,
        -60
      ],
      "parameters": {
        "width": 500,
        "height": 120,
        "content": "## 📋 Info\n\nGet welcome message and links"
      },
      "typeVersion": 1
    },
    {
      "id": "eecf420a-542e-400d-8ed7-ade3d47f2c7d",
      "name": "Haftnotiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        140
      ],
      "parameters": {
        "color": 3,
        "width": 500,
        "height": 200,
        "content": "## Holidays"
      },
      "typeVersion": 1
    },
    {
      "id": "84a77685-cb5e-4828-a1a8-a762ecf29481",
      "name": "Alle Feiertage auflisten",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -520,
        180
      ],
      "parameters": {
        "url": "=https://canada-holidays.ca/api/v1/holidays",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "year",
              "value": "={{ $fromAI('year', 'A calendar year', 'number', 2023) }}"
            },
            {
              "name": "federal",
              "value": "={{ $fromAI('federal', 'A boolean parameter. If true or 1, will return only federal holidays. If false or 0, will return no federal holidays.', 'string') }}"
            },
            {
              "name": "optional",
              "value": "={{ $fromAI('optional', 'A boolean parameter. If false or 0 (default), will return only legislated holidays. If true or 1, will return optional holidays from Alberta and BC.', 'string', 'false') }}"
            }
          ]
        },
        "toolDescription": "Get all holidays\n\nParameters:\n- Query parameters:\n  • year (optional) - A calendar year\n  • federal (optional) - A boolean parameter. If true or 1, will return only federal holidays. If false or 0, will return no federal holidays.\n  • optional (optional) - A boolean parameter. If false or 0 (default), will return only legislated holidays. If true or 1, will return optional holidays from Alberta and BC."
      },
      "typeVersion": 4.2
    },
    {
      "id": "12c8c861-1b3e-4094-a5e8-9ae1cc0279b3",
      "name": "Feiertag nach ID abrufen",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -320,
        180
      ],
      "parameters": {
        "url": "=https://canada-holidays.ca/api/v1/holidays/{{ $fromAI('holidayId', 'Primary key for a holiday', 'number') }}",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "year",
              "value": "={{ $fromAI('year', 'A calendar year', 'number', 2023) }}"
            },
            {
              "name": "optional",
              "value": "={{ $fromAI('optional', 'A boolean parameter. If false or 0 (default), will return provinces for which this is a legislated holiday. If true or 1, will return provinces which optionally celebrate this holiday.', 'string', 'false') }}"
            }
          ]
        },
        "toolDescription": "Get a holiday by id\n\nParameters:\n- Path parameters:\n  • holidayId (required) - Primary key for a holiday\n- Query parameters:\n  • year (optional) - A calendar year\n  • optional (optional) - A boolean parameter. If false or 0 (default), will return provinces for which this is a legislated holiday. If true or 1, will return provinces which optionally celebrate this holiday."
      },
      "typeVersion": 4.2
    },
    {
      "id": "ce0e58c1-04f3-4c9a-9240-4d22461087b3",
      "name": "Beschreibung - holidays",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -120,
        180
      ],
      "parameters": {
        "width": 500,
        "height": 120,
        "content": "## 📋 Holidays\n\nGet holiday(s) with associated provinces"
      },
      "typeVersion": 1
    },
    {
      "id": "c049349a-1c8c-4fb5-9f67-c150db9b4762",
      "name": "Haftnotiz3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        380
      ],
      "parameters": {
        "color": 4,
        "width": 500,
        "height": 200,
        "content": "## Provinces"
      },
      "typeVersion": 1
    },
    {
      "id": "6c878999-dbb6-4c39-90da-b9884756757a",
      "name": "Alle Provinzen auflisten",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -520,
        420
      ],
      "parameters": {
        "url": "=https://canada-holidays.ca/api/v1/provinces",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "year",
              "value": "={{ $fromAI('year', 'A calendar year', 'number', 2023) }}"
            },
            {
              "name": "optional",
              "value": "={{ $fromAI('optional', 'A boolean parameter. If false or 0 (default), will return only legislated holidays. If true or 1, will return optional holidays from Alberta and BC.', 'string', 'false') }}"
            }
          ]
        },
        "toolDescription": "Get all provinces\n\nParameters:\n- Query parameters:\n  • year (optional) - A calendar year\n  • optional (optional) - A boolean parameter. If false or 0 (default), will return only legislated holidays. If true or 1, will return optional holidays from Alberta and BC."
      },
      "typeVersion": 4.2
    },
    {
      "id": "a3ecbce6-be8c-405f-9002-8608968c456c",
      "name": "Provinz nach ID abrufen",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -320,
        420
      ],
      "parameters": {
        "url": "=https://canada-holidays.ca/api/v1/provinces/{{ $fromAI('provinceId', 'A Canadian province abbreviation', 'string') }}",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "year",
              "value": "={{ $fromAI('year', 'A calendar year', 'number', 2023) }}"
            },
            {
              "name": "optional",
              "value": "={{ $fromAI('optional', 'A boolean parameter (AB and BC only). If false or 0 (default), will return only legislated holidays. If true or 1, will return optional holidays from Alberta and BC.', 'string', 'false') }}"
            }
          ]
        },
        "toolDescription": "Get a province or territory by abbreviation\n\nParameters:\n- Path parameters:\n  • provinceId (required) - A Canadian province abbreviation\n- Query parameters:\n  • year (optional) - A calendar year\n  • optional (optional) - A boolean parameter (AB and BC only). If false or 0 (default), will return only legislated holidays. If true or 1, will return optional holidays from Alberta and BC."
      },
      "typeVersion": 4.2
    },
    {
      "id": "46d3c8cc-f003-4fac-b200-377446393a7d",
      "name": "Beschreibung - provinces",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -120,
        420
      ],
      "parameters": {
        "width": 500,
        "height": 120,
        "content": "## 📋 Provinces\n\nGet province(s) with associated holidays"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "shared": [
    {
      "role": "workflow:owner",
      "project": {
        "id": "G5fce9xGuBAsWBXe",
        "icon": null,
        "name": "David Ashby <david.ashby.lds@gmail.com>",
        "type": "personal",
        "createdAt": "2025-06-04T02:55:02.013Z",
        "updatedAt": "2025-06-04T02:56:01.361Z",
        "projectRelations": [
          {
            "role": "project:personalOwner",
            "user": {
              "id": "715c1c00-cb48-4712-9a32-f1f4b6db2b30",
              "role": "global:owner",
              "email": "david.ashby.lds@gmail.com",
              "disabled": false,
              "lastName": "Ashby",
              "settings": {
                "npsSurvey": {
                  "responded": true,
                  "lastShownAt": 1749357655581
                },
                "userActivated": true,
                "userActivatedAt": 1749075994495,
                "easyAIWorkflowOnboarded": true,
                "firstSuccessfulWorkflowId": "3N3vVikZb3MckFYm"
              },
              "createdAt": "2025-06-04T02:55:01.745Z",
              "firstName": "David",
              "isPending": false,
              "updatedAt": "2025-06-08T04:40:58.399Z",
              "mfaEnabled": false,
              "personalizationAnswers": {
                "version": "v4",
                "personalization_survey_n8n_version": "1.95.3",
                "personalization_survey_submitted_at": "2025-06-04T02:56:07.075Z"
              }
            },
            "userId": "715c1c00-cb48-4712-9a32-f1f4b6db2b30",
            "createdAt": "2025-06-04T02:55:02.013Z",
            "projectId": "G5fce9xGuBAsWBXe",
            "updatedAt": "2025-06-04T02:55:02.013Z"
          }
        ]
      },
      "createdAt": "2025-07-01T23:47:09.323Z",
      "projectId": "G5fce9xGuBAsWBXe",
      "updatedAt": "2025-07-01T23:47:09.323Z",
      "workflowId": "yP9uGLQmy5COX7bz"
    }
  ],
  "pinData": {},
  "settings": {
    "timezone": "America/New_York"
  },
  "createdAt": "2025-07-01T23:47:09.319Z",
  "updatedAt": "2025-07-01T23:47:50.000Z",
  "versionId": "f0456ddc-0a71-4826-843a-962b06de880b",
  "isArchived": false,
  "staticData": null,
  "connections": {
    "01bca653-9e1a-40e0-884c-6f322987a420": {
      "ai_tool": [
        [
          {
            "node": "88d82a73-f595-4dfe-a3e1-345ab61d4f7f",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "b679949c-71f9-4c6c-9746-2a80b0d19651": {
      "ai_tool": [
        [
          {
            "node": "88d82a73-f595-4dfe-a3e1-345ab61d4f7f",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "12c8c861-1b3e-4094-a5e8-9ae1cc0279b3": {
      "ai_tool": [
        [
          {
            "node": "88d82a73-f595-4dfe-a3e1-345ab61d4f7f",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "84a77685-cb5e-4828-a1a8-a762ecf29481": {
      "ai_tool": [
        [
          {
            "node": "88d82a73-f595-4dfe-a3e1-345ab61d4f7f",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "a3ecbce6-be8c-405f-9002-8608968c456c": {
      "ai_tool": [
        [
          {
            "node": "88d82a73-f595-4dfe-a3e1-345ab61d4f7f",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "6c878999-dbb6-4c39-90da-b9884756757a": {
      "ai_tool": [
        [
          {
            "node": "88d82a73-f595-4dfe-a3e1-345ab61d4f7f",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "triggerCount": 0
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Fortgeschritten - Engineering, KI RAG

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes15
Kategorie2
Node-Typen3
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor
David Ashby

David Ashby

@cfomodz

A hacker by nature, programmer by trade ⚒️ I'm looking to collaborate on things that save human labor 📫 How to reach me Github👇 -> Discord

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34