Implement SQLite database with full-text search for n8n node documentation

Major features implemented:
- SQLite storage service with FTS5 for fast node search
- Database rebuild mechanism for bulk node extraction
- MCP tools: search_nodes, extract_all_nodes, get_node_statistics
- Production Docker deployment with persistent storage
- Management scripts for database operations
- Comprehensive test suite for all functionality

Database capabilities:
- Stores node source code and metadata
- Full-text search by node name or content
- No versioning (stores latest only as per requirements)
- Supports complete database rebuilds
- ~4.5MB database with 500+ nodes indexed

Production features:
- Automated deployment script
- Docker Compose production configuration
- Database initialization on first run
- Volume persistence for data
- Management utilities for operations

Documentation:
- Updated README with complete instructions
- Production deployment guide
- Clear troubleshooting section
- API reference for all new tools

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
czlonkowski
2025-06-07 21:12:17 +00:00
parent 0cff8fbe6a
commit 078b67ff35
42 changed files with 33875 additions and 196 deletions

View File

@@ -181,4 +181,55 @@ export const n8nTools: ToolDefinition[] = [
},
},
},
{
name: 'extract_all_nodes',
description: 'Extract and store all available n8n nodes in the database',
inputSchema: {
type: 'object',
properties: {
packageFilter: {
type: 'string',
description: 'Optional package name to filter extraction',
},
limit: {
type: 'number',
description: 'Maximum number of nodes to extract',
},
},
},
},
{
name: 'search_nodes',
description: 'Search for n8n nodes by name, package, or functionality',
inputSchema: {
type: 'object',
properties: {
query: {
type: 'string',
description: 'Search query',
},
packageName: {
type: 'string',
description: 'Filter by package name',
},
hasCredentials: {
type: 'boolean',
description: 'Filter nodes that have credentials',
},
limit: {
type: 'number',
description: 'Maximum results to return',
default: 20,
},
},
},
},
{
name: 'get_node_statistics',
description: 'Get statistics about stored n8n nodes',
inputSchema: {
type: 'object',
properties: {},
},
},
];