mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-03-31 22:53:07 +00:00
Add new MCP tool that enables AI-powered workflow generation from natural language descriptions. Uses handler delegation pattern — hosting environments inject a GenerateWorkflowHandler via EngineOptions, self-hosted instances receive a hosted-only informational response. Handler flows through N8NMCPEngine → SingleSessionHTTPServer → N8NDocumentationMCPServer with helpers for createWorkflow, validateWorkflow, autofixWorkflow, and getWorkflow. Includes full tool documentation, tests, and corrected tools overview count. Conceived by Romuald Członkowski - https://www.aiadvisors.pl/en Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
153 lines
7.8 KiB
JavaScript
153 lines
7.8 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.searchTemplatesDoc = void 0;
|
|
exports.searchTemplatesDoc = {
|
|
name: 'search_templates',
|
|
category: 'templates',
|
|
essentials: {
|
|
description: 'Unified template search with multiple modes: keyword search, by node types, by task type, by metadata, or patterns. 2,700+ templates available.',
|
|
keyParameters: ['searchMode', 'query', 'nodeTypes', 'task', 'limit'],
|
|
example: 'search_templates({searchMode: "by_task", task: "webhook_processing"})',
|
|
performance: 'Fast (<100ms) - FTS5 full-text search',
|
|
tips: [
|
|
'searchMode="keyword" (default): Search by name/description',
|
|
'searchMode="by_nodes": Find templates using specific nodes',
|
|
'searchMode="by_task": Get curated templates for common tasks',
|
|
'searchMode="by_metadata": Filter by complexity, services, audience',
|
|
'searchMode="patterns": Workflow pattern summaries across 10 task categories',
|
|
'patterns without task: overview of all categories. patterns with task: node frequencies + connection chains'
|
|
]
|
|
},
|
|
full: {
|
|
description: `**Search Modes:**
|
|
- keyword (default): Full-text search across template names and descriptions
|
|
- by_nodes: Find templates that use specific node types
|
|
- by_task: Get curated templates for predefined task categories
|
|
- by_metadata: Filter by complexity, setup time, required services, or target audience
|
|
- patterns: Lightweight workflow pattern summaries mined from 2,700+ templates
|
|
|
|
**Available Task Types (for searchMode="by_task" and "patterns"):**
|
|
ai_automation, data_sync, webhook_processing, email_automation, slack_integration, data_transformation, file_processing, scheduling, api_integration, database_operations`,
|
|
parameters: {
|
|
searchMode: {
|
|
type: 'string',
|
|
required: false,
|
|
description: 'Search mode: "keyword" (default), "by_nodes", "by_task", "by_metadata", "patterns"'
|
|
},
|
|
query: {
|
|
type: 'string',
|
|
required: false,
|
|
description: 'For searchMode=keyword: Search keywords (e.g., "chatbot", "automation")'
|
|
},
|
|
nodeTypes: {
|
|
type: 'array',
|
|
required: false,
|
|
description: 'For searchMode=by_nodes: Array of node types (e.g., ["n8n-nodes-base.httpRequest", "n8n-nodes-base.slack"])'
|
|
},
|
|
task: {
|
|
type: 'string',
|
|
required: false,
|
|
description: 'For searchMode=by_task: Task type. For searchMode=patterns: optional category filter (omit for overview of all categories). Values: ai_automation, data_sync, webhook_processing, email_automation, slack_integration, data_transformation, file_processing, scheduling, api_integration, database_operations'
|
|
},
|
|
complexity: {
|
|
type: 'string',
|
|
required: false,
|
|
description: 'For searchMode=by_metadata: Filter by complexity ("simple", "medium", "complex")'
|
|
},
|
|
maxSetupMinutes: {
|
|
type: 'number',
|
|
required: false,
|
|
description: 'For searchMode=by_metadata: Maximum setup time in minutes (5-480)'
|
|
},
|
|
minSetupMinutes: {
|
|
type: 'number',
|
|
required: false,
|
|
description: 'For searchMode=by_metadata: Minimum setup time in minutes (5-480)'
|
|
},
|
|
requiredService: {
|
|
type: 'string',
|
|
required: false,
|
|
description: 'For searchMode=by_metadata: Filter by required service (e.g., "openai", "slack", "google")'
|
|
},
|
|
targetAudience: {
|
|
type: 'string',
|
|
required: false,
|
|
description: 'For searchMode=by_metadata: Filter by target audience (e.g., "developers", "marketers")'
|
|
},
|
|
category: {
|
|
type: 'string',
|
|
required: false,
|
|
description: 'For searchMode=by_metadata: Filter by category (e.g., "automation", "integration")'
|
|
},
|
|
fields: {
|
|
type: 'array',
|
|
required: false,
|
|
description: 'For searchMode=keyword: Fields to include (id, name, description, author, nodes, views, created, url, metadata)'
|
|
},
|
|
limit: {
|
|
type: 'number',
|
|
required: false,
|
|
description: 'Maximum results (default 20, max 100)'
|
|
},
|
|
offset: {
|
|
type: 'number',
|
|
required: false,
|
|
description: 'Pagination offset (default 0)'
|
|
}
|
|
},
|
|
returns: `For keyword/by_nodes/by_task/by_metadata modes:
|
|
- templates: Array of matching templates
|
|
- id: Template ID for get_template()
|
|
- name, description, author, nodes, views, created, url, metadata
|
|
- totalFound: Total matching templates
|
|
- searchMode: The mode used
|
|
|
|
For patterns mode (no task):
|
|
- templateCount, generatedAt
|
|
- categories: Array of {category, templateCount, pattern, topNodes}
|
|
- tip: How to drill into a specific category
|
|
|
|
For patterns mode (with task):
|
|
- category, templateCount, pattern
|
|
- nodes: Array of {type, freq, role} (top nodes by frequency, limited by 'limit')
|
|
- chains: Array of {path, count, freq} (top 5 connection chains, short node names)`,
|
|
examples: [
|
|
'// Keyword search (default)\nsearch_templates({query: "chatbot"})',
|
|
'// Find templates using specific nodes\nsearch_templates({searchMode: "by_nodes", nodeTypes: ["n8n-nodes-base.httpRequest", "n8n-nodes-base.slack"]})',
|
|
'// Get templates for a task type\nsearch_templates({searchMode: "by_task", task: "webhook_processing"})',
|
|
'// Filter by metadata\nsearch_templates({searchMode: "by_metadata", complexity: "simple", requiredService: "openai"})',
|
|
'// Combine metadata filters\nsearch_templates({searchMode: "by_metadata", maxSetupMinutes: 30, targetAudience: "developers"})',
|
|
'// Pattern overview — all categories with top nodes (~550 tokens)\nsearch_templates({searchMode: "patterns"})',
|
|
'// Detailed patterns for a category — node frequencies + connection chains\nsearch_templates({searchMode: "patterns", task: "ai_automation"})'
|
|
],
|
|
useCases: [
|
|
'Find workflows by business purpose (keyword search)',
|
|
'Find templates using specific integrations (by_nodes)',
|
|
'Get pre-built solutions for common tasks (by_task)',
|
|
'Filter by complexity for team skill level (by_metadata)',
|
|
'Understand common workflow shapes before building (patterns)',
|
|
'Architecture planning — which nodes go together (patterns)'
|
|
],
|
|
performance: `Fast performance across all modes:
|
|
- keyword: <50ms with FTS5 indexing
|
|
- by_nodes: <100ms with indexed lookups
|
|
- by_task: <50ms from curated cache
|
|
- by_metadata: <100ms with filtered queries
|
|
- patterns: <10ms (pre-mined, cached in memory)`,
|
|
bestPractices: [
|
|
'Use searchMode="by_task" for common automation patterns',
|
|
'Use searchMode="by_nodes" when you know which integrations you need',
|
|
'Use searchMode="keyword" for general discovery',
|
|
'Combine by_metadata filters for precise matching',
|
|
'Use get_template(id) to get the full workflow JSON'
|
|
],
|
|
pitfalls: [
|
|
'searchMode="keyword" searches names/descriptions, not node types',
|
|
'by_nodes requires full node type with prefix (n8n-nodes-base.xxx)',
|
|
'by_metadata filters may return fewer results',
|
|
'Not all templates have complete metadata'
|
|
],
|
|
relatedTools: ['get_template', 'search_nodes', 'validate_workflow']
|
|
}
|
|
};
|
|
//# sourceMappingURL=search-templates.js.map
|