Serveur MCP de jours fériés canadiens
Ceci est unEngineering, AI RAGworkflow d'automatisation du domainecontenant 15 nœuds.Utilise principalement des nœuds comme HttpRequestTool, McpTrigger. Connecter un agent AI à l'API des jours fériés canadiens, supportant 6 provinces et jours fériés
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
Nœuds utilisés (15)
Catégorie
{
"id": "yP9uGLQmy5COX7bz",
"meta": null,
"name": "Canada Holidays API MCP Server",
"tags": [],
"nodes": [
{
"id": "26a8df5c-db6d-43cd-94bd-9810f78f5a92",
"name": "Instructions de configuration",
"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": "Aperçu du flux de travail",
"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": "Serveur MCP Canada Holidays",
"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": "Note adhésive",
"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": "Obtenir la racine API",
"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": "Obtenir le schéma API",
"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": "Description - 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": "Note adhésive 2",
"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": "Lister tous les jours fériés",
"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": "Obtenir un jour férié par ID",
"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": "Description - 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": "Note adhésive 3",
"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": "Lister toutes les provinces",
"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": "Obtenir une province par ID",
"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": "Description - 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
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Ingénierie, RAG IA
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
David Ashby
@cfomodzA hacker by nature, programmer by trade ⚒️ I'm looking to collaborate on things that save human labor 📫 How to reach me Github👇 -> Discord
Partager ce workflow