Skip to main content
Glama

get_node

Retrieve n8n node information with configurable detail levels and modes for documentation, property search, and version analysis to support workflow automation development.

Instructions

Get node info with progressive detail levels and multiple modes. Detail: minimal (~200 tokens), standard (~1-2K, default), full (~3-8K). Modes: info (default), docs (markdown documentation), search_properties (find properties), versions/compare/breaking/migrations (version info). Use format='docs' for readable documentation, mode='search_properties' with propertyQuery for finding specific fields.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nodeTypeYesFull node type: "nodes-base.httpRequest" or "nodes-langchain.agent"
detailNoInformation detail level. standard=essential properties (recommended), full=everythingstandard
modeNoOperation mode. info=node schema, docs=readable markdown documentation, search_properties=find specific properties, versions/compare/breaking/migrations=version infoinfo
includeTypeInfoNoInclude type structure metadata (type category, JS type, validation rules). Only applies to mode=info. Adds ~80-120 tokens per property.
includeExamplesNoInclude real-world configuration examples from templates. Only applies to mode=info with detail=standard. Adds ~200-400 tokens per example.
fromVersionNoSource version for compare/breaking/migrations modes (e.g., "1.0")
toVersionNoTarget version for compare mode (e.g., "2.0"). Defaults to latest if omitted.
propertyQueryNoFor mode=search_properties: search term to find properties (e.g., "auth", "header", "body")
maxPropertyResultsNoFor mode=search_properties: max results (default 20)

Implementation Reference

  • Defines the input schema, parameters, description, and output schema reference for the 'get_node' MCP tool
    { name: 'get_node', description: `Get node info with progressive detail levels and multiple modes. Detail: minimal (~200 tokens), standard (~1-2K, default), full (~3-8K). Modes: info (default), docs (markdown documentation), search_properties (find properties), versions/compare/breaking/migrations (version info). Use format='docs' for readable documentation, mode='search_properties' with propertyQuery for finding specific fields.`, inputSchema: { type: 'object', properties: { nodeType: { type: 'string', description: 'Full node type: "nodes-base.httpRequest" or "nodes-langchain.agent"', }, detail: { type: 'string', enum: ['minimal', 'standard', 'full'], default: 'standard', description: 'Information detail level. standard=essential properties (recommended), full=everything', }, mode: { type: 'string', enum: ['info', 'docs', 'search_properties', 'versions', 'compare', 'breaking', 'migrations'], default: 'info', description: 'Operation mode. info=node schema, docs=readable markdown documentation, search_properties=find specific properties, versions/compare/breaking/migrations=version info', }, includeTypeInfo: { type: 'boolean', default: false, description: 'Include type structure metadata (type category, JS type, validation rules). Only applies to mode=info. Adds ~80-120 tokens per property.', }, includeExamples: { type: 'boolean', default: false, description: 'Include real-world configuration examples from templates. Only applies to mode=info with detail=standard. Adds ~200-400 tokens per example.', }, fromVersion: { type: 'string', description: 'Source version for compare/breaking/migrations modes (e.g., "1.0")', }, toVersion: { type: 'string', description: 'Target version for compare mode (e.g., "2.0"). Defaults to latest if omitted.', }, propertyQuery: { type: 'string', description: 'For mode=search_properties: search term to find properties (e.g., "auth", "header", "body")', }, maxPropertyResults: { type: 'number', description: 'For mode=search_properties: max results (default 20)', default: 20, }, }, required: ['nodeType'], }, },
  • Provides comprehensive ToolDocumentation object for 'get_node' including detailed parameter descriptions, examples, performance notes, best practices, pitfalls, and related tools
    export const getNodeDoc: ToolDocumentation = { name: 'get_node', category: 'configuration', essentials: { description: 'Unified node information tool with progressive detail levels and multiple modes. Get node schema, docs, search properties, or version info.', keyParameters: ['nodeType', 'detail', 'mode', 'includeTypeInfo', 'includeExamples'], example: 'get_node({nodeType: "nodes-base.httpRequest", detail: "standard"})', performance: 'Instant (<10ms) for minimal/standard, moderate for full', tips: [ 'Use detail="standard" (default) for most tasks - shows required fields', 'Use mode="docs" for readable markdown documentation', 'Use mode="search_properties" with propertyQuery to find specific fields', 'Use mode="versions" to check version history and breaking changes', 'Add includeExamples=true to get real-world configuration examples' ] }, full: { description: `**Detail Levels (mode="info", default):** - minimal (~200 tokens): Basic metadata only - nodeType, displayName, description, category - standard (~1-2K tokens): Essential properties + operations - recommended for most tasks - full (~3-8K tokens): Complete node schema - use only when standard insufficient **Operation Modes:** - info (default): Node schema with configurable detail level - docs: Readable markdown documentation with examples and patterns - search_properties: Find specific properties within a node - versions: List all available versions with breaking changes summary - compare: Compare two versions with property-level changes - breaking: Show only breaking changes between versions - migrations: Show auto-migratable changes between versions`, parameters: { nodeType: { type: 'string', required: true, description: 'Full node type with prefix: "nodes-base.httpRequest" or "nodes-langchain.agent"' }, detail: { type: 'string', required: false, description: 'Detail level for mode=info: "minimal", "standard" (default), "full"' }, mode: { type: 'string', required: false, description: 'Operation mode: "info" (default), "docs", "search_properties", "versions", "compare", "breaking", "migrations"' }, includeTypeInfo: { type: 'boolean', required: false, description: 'Include type structure metadata (validation rules, JS types). Adds ~80-120 tokens per property' }, includeExamples: { type: 'boolean', required: false, description: 'Include real-world configuration examples from templates. Adds ~200-400 tokens per example' }, propertyQuery: { type: 'string', required: false, description: 'For mode=search_properties: search term to find properties (e.g., "auth", "header", "body")' }, maxPropertyResults: { type: 'number', required: false, description: 'For mode=search_properties: max results (default 20)' }, fromVersion: { type: 'string', required: false, description: 'For compare/breaking/migrations modes: source version (e.g., "1.0")' }, toVersion: { type: 'string', required: false, description: 'For compare mode: target version (e.g., "2.0"). Defaults to latest' } }, returns: `Depends on mode: - info: Node schema with properties based on detail level - docs: Markdown documentation string - search_properties: Array of matching property paths with descriptions - versions: Version history with breaking changes flags - compare/breaking/migrations: Version comparison details`, examples: [ '// Standard detail (recommended for AI agents)\nget_node({nodeType: "nodes-base.httpRequest"})', '// Minimal for quick metadata check\nget_node({nodeType: "nodes-base.slack", detail: "minimal"})', '// Full detail with examples\nget_node({nodeType: "nodes-base.googleSheets", detail: "full", includeExamples: true})', '// Get readable documentation\nget_node({nodeType: "nodes-base.webhook", mode: "docs"})', '// Search for authentication properties\nget_node({nodeType: "nodes-base.httpRequest", mode: "search_properties", propertyQuery: "auth"})', '// Check version history\nget_node({nodeType: "nodes-base.executeWorkflow", mode: "versions"})', '// Compare specific versions\nget_node({nodeType: "nodes-base.httpRequest", mode: "compare", fromVersion: "3.0", toVersion: "4.1"})' ], useCases: [ 'Configure nodes for workflow building (use detail=standard)', 'Find specific configuration options (use mode=search_properties)', 'Get human-readable node documentation (use mode=docs)', 'Check for breaking changes before version upgrades (use mode=breaking)', 'Understand complex types with includeTypeInfo=true' ], performance: `Token costs by detail level: - minimal: ~200 tokens - standard: ~1000-2000 tokens (default) - full: ~3000-8000 tokens - includeTypeInfo: +80-120 tokens per property - includeExamples: +200-400 tokens per example - Version modes: ~400-1200 tokens`, bestPractices: [ 'Start with detail="standard" - it covers 95% of use cases', 'Only use detail="full" if standard is missing required properties', 'Use mode="docs" when explaining nodes to users', 'Combine includeTypeInfo=true for complex nodes (filter, resourceMapper)', 'Check version history before configuring versioned nodes' ], pitfalls: [ 'detail="full" returns large responses (~100KB) - use sparingly', 'Node type must include prefix (nodes-base. or nodes-langchain.)', 'includeExamples only works with mode=info and detail=standard', 'Version modes require nodes with multiple versions in database' ], relatedTools: ['search_nodes', 'validate_node', 'validate_workflow'] } };
  • src/mcp/tools.ts:9-392 (registration)
    Registers the 'get_node' tool in the main array of documentation tools exported for MCP server registration
    export const n8nDocumentationToolsFinal: ToolDefinition[] = [ { name: 'tools_documentation', description: `Get documentation for n8n MCP tools. Call without parameters for quick start guide. Use topic parameter to get documentation for specific tools. Use depth='full' for comprehensive documentation.`, inputSchema: { type: 'object', properties: { topic: { type: 'string', description: 'Tool name (e.g., "search_nodes") or "overview" for general guide. Leave empty for quick reference.', }, depth: { type: 'string', enum: ['essentials', 'full'], description: 'Level of detail. "essentials" (default) for quick reference, "full" for comprehensive docs.', default: 'essentials', }, }, }, }, { name: 'search_nodes', description: `Search n8n nodes by keyword with optional real-world examples. Pass query as string. Example: query="webhook" or query="database". Returns max 20 results. Use includeExamples=true to get top 2 template configs per node.`, inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search terms. Use quotes for exact phrase.', }, limit: { type: 'number', description: 'Max results (default 20)', default: 20, }, mode: { type: 'string', enum: ['OR', 'AND', 'FUZZY'], description: 'OR=any word, AND=all words, FUZZY=typo-tolerant', default: 'OR', }, includeExamples: { type: 'boolean', description: 'Include top 2 real-world configuration examples from popular templates (default: false)', default: false, }, }, required: ['query'], }, }, { name: 'get_node', description: `Get node info with progressive detail levels and multiple modes. Detail: minimal (~200 tokens), standard (~1-2K, default), full (~3-8K). Modes: info (default), docs (markdown documentation), search_properties (find properties), versions/compare/breaking/migrations (version info). Use format='docs' for readable documentation, mode='search_properties' with propertyQuery for finding specific fields.`, inputSchema: { type: 'object', properties: { nodeType: { type: 'string', description: 'Full node type: "nodes-base.httpRequest" or "nodes-langchain.agent"', }, detail: { type: 'string', enum: ['minimal', 'standard', 'full'], default: 'standard', description: 'Information detail level. standard=essential properties (recommended), full=everything', }, mode: { type: 'string', enum: ['info', 'docs', 'search_properties', 'versions', 'compare', 'breaking', 'migrations'], default: 'info', description: 'Operation mode. info=node schema, docs=readable markdown documentation, search_properties=find specific properties, versions/compare/breaking/migrations=version info', }, includeTypeInfo: { type: 'boolean', default: false, description: 'Include type structure metadata (type category, JS type, validation rules). Only applies to mode=info. Adds ~80-120 tokens per property.', }, includeExamples: { type: 'boolean', default: false, description: 'Include real-world configuration examples from templates. Only applies to mode=info with detail=standard. Adds ~200-400 tokens per example.', }, fromVersion: { type: 'string', description: 'Source version for compare/breaking/migrations modes (e.g., "1.0")', }, toVersion: { type: 'string', description: 'Target version for compare mode (e.g., "2.0"). Defaults to latest if omitted.', }, propertyQuery: { type: 'string', description: 'For mode=search_properties: search term to find properties (e.g., "auth", "header", "body")', }, maxPropertyResults: { type: 'number', description: 'For mode=search_properties: max results (default 20)', default: 20, }, }, required: ['nodeType'], }, }, { name: 'validate_node', description: `Validate n8n node configuration. Use mode='full' for comprehensive validation with errors/warnings/suggestions, mode='minimal' for quick required fields check. Example: nodeType="nodes-base.slack", config={resource:"channel",operation:"create"}`, inputSchema: { type: 'object', properties: { nodeType: { type: 'string', description: 'Node type as string. Example: "nodes-base.slack"', }, config: { type: 'object', description: 'Configuration as object. For simple nodes use {}. For complex nodes include fields like {resource:"channel",operation:"create"}', }, mode: { type: 'string', enum: ['full', 'minimal'], description: 'Validation mode. full=comprehensive validation with errors/warnings/suggestions, minimal=quick required fields check only. Default is "full"', default: 'full', }, profile: { type: 'string', enum: ['strict', 'runtime', 'ai-friendly', 'minimal'], description: 'Profile for mode=full: "minimal", "runtime", "ai-friendly", or "strict". Default is "ai-friendly"', default: 'ai-friendly', }, }, required: ['nodeType', 'config'], additionalProperties: false, }, outputSchema: { type: 'object', properties: { nodeType: { type: 'string' }, workflowNodeType: { type: 'string' }, displayName: { type: 'string' }, valid: { type: 'boolean' }, errors: { type: 'array', items: { type: 'object', properties: { type: { type: 'string' }, property: { type: 'string' }, message: { type: 'string' }, fix: { type: 'string' } } } }, warnings: { type: 'array', items: { type: 'object', properties: { type: { type: 'string' }, property: { type: 'string' }, message: { type: 'string' }, suggestion: { type: 'string' } } } }, suggestions: { type: 'array', items: { type: 'string' } }, missingRequiredFields: { type: 'array', items: { type: 'string' }, description: 'Only present in mode=minimal' }, summary: { type: 'object', properties: { hasErrors: { type: 'boolean' }, errorCount: { type: 'number' }, warningCount: { type: 'number' }, suggestionCount: { type: 'number' } } } }, required: ['nodeType', 'displayName', 'valid'] }, }, { name: 'get_template', description: `Get template by ID. Use mode to control response size: nodes_only (minimal), structure (nodes+connections), full (complete workflow).`, inputSchema: { type: 'object', properties: { templateId: { type: 'number', description: 'The template ID to retrieve', }, mode: { type: 'string', enum: ['nodes_only', 'structure', 'full'], description: 'Response detail level. nodes_only: just node list, structure: nodes+connections, full: complete workflow JSON.', default: 'full', }, }, required: ['templateId'], }, }, { name: 'search_templates', description: `Search templates with multiple modes. Use searchMode='keyword' for text search, 'by_nodes' to find templates using specific nodes, 'by_task' for curated task-based templates, 'by_metadata' for filtering by complexity/setup time/services.`, inputSchema: { type: 'object', properties: { searchMode: { type: 'string', enum: ['keyword', 'by_nodes', 'by_task', 'by_metadata'], description: 'Search mode. keyword=text search (default), by_nodes=find by node types, by_task=curated task templates, by_metadata=filter by complexity/services', default: 'keyword', }, // For searchMode='keyword' query: { type: 'string', description: 'For searchMode=keyword: search keyword (e.g., "chatbot")', }, fields: { type: 'array', items: { type: 'string', enum: ['id', 'name', 'description', 'author', 'nodes', 'views', 'created', 'url', 'metadata'], }, description: 'For searchMode=keyword: fields to include in response. Default: all fields.', }, // For searchMode='by_nodes' nodeTypes: { type: 'array', items: { type: 'string' }, description: 'For searchMode=by_nodes: array of node types (e.g., ["n8n-nodes-base.httpRequest", "n8n-nodes-base.slack"])', }, // For searchMode='by_task' task: { type: 'string', enum: [ 'ai_automation', 'data_sync', 'webhook_processing', 'email_automation', 'slack_integration', 'data_transformation', 'file_processing', 'scheduling', 'api_integration', 'database_operations' ], description: 'For searchMode=by_task: the type of task', }, // For searchMode='by_metadata' category: { type: 'string', description: 'For searchMode=by_metadata: filter by category (e.g., "automation", "integration")', }, complexity: { type: 'string', enum: ['simple', 'medium', 'complex'], description: 'For searchMode=by_metadata: filter by complexity level', }, maxSetupMinutes: { type: 'number', description: 'For searchMode=by_metadata: maximum setup time in minutes', minimum: 5, maximum: 480, }, minSetupMinutes: { type: 'number', description: 'For searchMode=by_metadata: minimum setup time in minutes', minimum: 5, maximum: 480, }, requiredService: { type: 'string', description: 'For searchMode=by_metadata: filter by required service (e.g., "openai", "slack")', }, targetAudience: { type: 'string', description: 'For searchMode=by_metadata: filter by target audience (e.g., "developers", "marketers")', }, // Common pagination limit: { type: 'number', description: 'Maximum number of results. Default 20.', default: 20, minimum: 1, maximum: 100, }, offset: { type: 'number', description: 'Pagination offset. Default 0.', default: 0, minimum: 0, }, }, }, }, { name: 'validate_workflow', description: `Full workflow validation: structure, connections, expressions, AI tools. Returns errors/warnings/fixes. Essential before deploy.`, inputSchema: { type: 'object', properties: { workflow: { type: 'object', description: 'The complete workflow JSON to validate. Must include nodes array and connections object.', }, options: { type: 'object', properties: { validateNodes: { type: 'boolean', description: 'Validate individual node configurations. Default true.', default: true, }, validateConnections: { type: 'boolean', description: 'Validate node connections and flow. Default true.', default: true, }, validateExpressions: { type: 'boolean', description: 'Validate n8n expressions syntax and references. Default true.', default: true, }, profile: { type: 'string', enum: ['minimal', 'runtime', 'ai-friendly', 'strict'], description: 'Validation profile for node validation. Default "runtime".', default: 'runtime', }, }, description: 'Optional validation settings', }, }, required: ['workflow'], additionalProperties: false, }, outputSchema: { type: 'object', properties: { valid: { type: 'boolean' }, summary: { type: 'object', properties: { totalNodes: { type: 'number' }, enabledNodes: { type: 'number' }, triggerNodes: { type: 'number' }, validConnections: { type: 'number' }, invalidConnections: { type: 'number' }, expressionsValidated: { type: 'number' }, errorCount: { type: 'number' }, warningCount: { type: 'number' } } }, errors: { type: 'array', items: { type: 'object', properties: { node: { type: 'string' }, message: { type: 'string' }, details: { type: 'string' } } } }, warnings: { type: 'array', items: { type: 'object', properties: { node: { type: 'string' }, message: { type: 'string' }, details: { type: 'string' } } } }, suggestions: { type: 'array', items: { type: 'string' } } }, required: ['valid', 'summary'] }, }, ];
  • Implements searchNodeProperties used by get_node in 'search_properties' mode (propertyQuery becomes query)
    async searchNodeProperties(args: any) { return this.repository.searchNodeProperties(args.nodeType, args.query, args.maxResults || 20); }
  • Implements getNodeDocumentation used by get_node in 'docs' mode
    async getNodeDocumentation(args: any) { const node = await this.repository.getNodeByType(args.nodeType); return node?.documentation || null; }
  • Core handler getNodeInfo called by get_node in 'info' mode with varying detail levels via additional filtering logic
    async getNodeInfo(args: any) { return this.repository.getNodeByType(args.nodeType); }
  • Implements getNodeEssentials used for 'standard' detail level in get_node 'info' mode (PropertyFilter filters properties)
    async getNodeEssentials(args: any) { const node = await this.repository.getNodeByType(args.nodeType); if (!node) return null; // Filter to essentials using static method const essentials = PropertyFilter.getEssentials(node.properties || [], args.nodeType); return { nodeType: node.nodeType, displayName: node.displayName, description: node.description, category: node.category, required: essentials.required, common: essentials.common }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/czlonkowski/n8n-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server