mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-03-21 09:53:08 +00:00
- Add optimized database schema with embedded source code storage - Create optimized rebuild script that extracts source at build time - Implement optimized MCP server reading from pre-built database - Add Dockerfile.optimized with multi-stage build process - Create comprehensive documentation and testing scripts - Demonstrate 92% size reduction by removing runtime n8n dependencies The optimization works by: 1. Building complete database at Docker build time 2. Extracting all node source code into the database 3. Creating minimal runtime image without n8n packages 4. Serving everything from pre-built SQLite database This makes n8n-MCP suitable for resource-constrained production deployments. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
66 lines
2.0 KiB
SQL
66 lines
2.0 KiB
SQL
-- Optimized schema with source code storage for Docker optimization
|
|
CREATE TABLE IF NOT EXISTS nodes (
|
|
node_type TEXT PRIMARY KEY,
|
|
package_name TEXT NOT NULL,
|
|
display_name TEXT NOT NULL,
|
|
description TEXT,
|
|
category TEXT,
|
|
development_style TEXT CHECK(development_style IN ('declarative', 'programmatic')),
|
|
is_ai_tool INTEGER DEFAULT 0,
|
|
is_trigger INTEGER DEFAULT 0,
|
|
is_webhook INTEGER DEFAULT 0,
|
|
is_versioned INTEGER DEFAULT 0,
|
|
version TEXT,
|
|
documentation TEXT,
|
|
properties_schema TEXT,
|
|
operations TEXT,
|
|
credentials_required TEXT,
|
|
-- New columns for source code storage
|
|
node_source_code TEXT,
|
|
credential_source_code TEXT,
|
|
source_location TEXT,
|
|
source_extracted_at DATETIME,
|
|
-- Metadata
|
|
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Indexes for performance
|
|
CREATE INDEX IF NOT EXISTS idx_package ON nodes(package_name);
|
|
CREATE INDEX IF NOT EXISTS idx_ai_tool ON nodes(is_ai_tool);
|
|
CREATE INDEX IF NOT EXISTS idx_category ON nodes(category);
|
|
|
|
-- FTS5 table for full-text search including source code
|
|
CREATE VIRTUAL TABLE IF NOT EXISTS nodes_fts USING fts5(
|
|
node_type,
|
|
display_name,
|
|
description,
|
|
documentation,
|
|
operations,
|
|
node_source_code,
|
|
content=nodes,
|
|
content_rowid=rowid
|
|
);
|
|
|
|
-- Trigger to keep FTS in sync
|
|
CREATE TRIGGER IF NOT EXISTS nodes_fts_insert AFTER INSERT ON nodes
|
|
BEGIN
|
|
INSERT INTO nodes_fts(rowid, node_type, display_name, description, documentation, operations, node_source_code)
|
|
VALUES (new.rowid, new.node_type, new.display_name, new.description, new.documentation, new.operations, new.node_source_code);
|
|
END;
|
|
|
|
CREATE TRIGGER IF NOT EXISTS nodes_fts_update AFTER UPDATE ON nodes
|
|
BEGIN
|
|
UPDATE nodes_fts
|
|
SET node_type = new.node_type,
|
|
display_name = new.display_name,
|
|
description = new.description,
|
|
documentation = new.documentation,
|
|
operations = new.operations,
|
|
node_source_code = new.node_source_code
|
|
WHERE rowid = new.rowid;
|
|
END;
|
|
|
|
CREATE TRIGGER IF NOT EXISTS nodes_fts_delete AFTER DELETE ON nodes
|
|
BEGIN
|
|
DELETE FROM nodes_fts WHERE rowid = old.rowid;
|
|
END; |