feat: Implement n8n-MCP Enhancement Plan v2.1 Final

- Implement simple node loader supporting n8n-nodes-base and langchain packages
- Create parser handling declarative, programmatic, and versioned nodes
- Build documentation mapper with 89% coverage (405/457 nodes)
- Setup SQLite database with minimal schema
- Create rebuild script for one-command database updates
- Implement validation script for critical nodes
- Update MCP server with documentation-focused tools
- Add npm scripts for streamlined workflow

Successfully loads 457/458 nodes with accurate documentation mapping.
Versioned node detection working (46 nodes detected).
3/4 critical nodes pass validation tests.

Known limitations:
- Slack operations extraction incomplete for some versioned nodes
- One langchain node fails due to missing dependency
- No AI tools detected (none have usableAsTool flag)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
czlonkowski
2025-06-12 14:18:19 +02:00
parent b50025081a
commit 8bf670c31e
21 changed files with 9206 additions and 790 deletions

98
src/mcp/tools-update.ts Normal file
View File

@@ -0,0 +1,98 @@
import { ToolDefinition } from '../types';
export const n8nDocumentationTools: ToolDefinition[] = [
{
name: 'list_nodes',
description: 'List all available n8n nodes with filtering options',
inputSchema: {
type: 'object',
properties: {
package: {
type: 'string',
description: 'Filter by package name (e.g., n8n-nodes-base, @n8n/n8n-nodes-langchain)',
},
category: {
type: 'string',
description: 'Filter by category',
},
developmentStyle: {
type: 'string',
enum: ['declarative', 'programmatic'],
description: 'Filter by development style',
},
isAITool: {
type: 'boolean',
description: 'Filter to show only AI tools',
},
limit: {
type: 'number',
description: 'Maximum number of results to return',
default: 50,
},
},
},
},
{
name: 'get_node_info',
description: 'Get comprehensive information about a specific n8n node',
inputSchema: {
type: 'object',
properties: {
nodeType: {
type: 'string',
description: 'The node type (e.g., httpRequest, slack, code)',
},
},
required: ['nodeType'],
},
},
{
name: 'search_nodes',
description: 'Full-text search across all node documentation',
inputSchema: {
type: 'object',
properties: {
query: {
type: 'string',
description: 'Search query',
},
limit: {
type: 'number',
description: 'Maximum number of results',
default: 20,
},
},
required: ['query'],
},
},
{
name: 'list_ai_tools',
description: 'List all nodes that can be used as AI Agent tools',
inputSchema: {
type: 'object',
properties: {},
},
},
{
name: 'get_node_documentation',
description: 'Get the full documentation for a specific node',
inputSchema: {
type: 'object',
properties: {
nodeType: {
type: 'string',
description: 'The node type',
},
},
required: ['nodeType'],
},
},
{
name: 'get_database_statistics',
description: 'Get statistics about the node database',
inputSchema: {
type: 'object',
properties: {},
},
},
];