Skip to main content
Glama

n8n-MCP

by 88-888
audit-schema-coverage.tsβ€’2.95 kB
/** * Database Schema Coverage Audit Script * * Audits the database to determine how many nodes have complete schema information * for resourceLocator mode validation. This helps assess the coverage of our * schema-driven validation approach. */ import Database from 'better-sqlite3'; import path from 'path'; const dbPath = path.join(__dirname, '../data/nodes.db'); const db = new Database(dbPath, { readonly: true }); console.log('=== Schema Coverage Audit ===\n'); // Query 1: How many nodes have resourceLocator properties? const totalResourceLocator = db.prepare(` SELECT COUNT(*) as count FROM nodes WHERE properties_schema LIKE '%resourceLocator%' `).get() as { count: number }; console.log(`Nodes with resourceLocator properties: ${totalResourceLocator.count}`); // Query 2: Of those, how many have modes defined? const withModes = db.prepare(` SELECT COUNT(*) as count FROM nodes WHERE properties_schema LIKE '%resourceLocator%' AND properties_schema LIKE '%modes%' `).get() as { count: number }; console.log(`Nodes with modes defined: ${withModes.count}`); // Query 3: Which nodes have resourceLocator but NO modes? const withoutModes = db.prepare(` SELECT node_type, display_name FROM nodes WHERE properties_schema LIKE '%resourceLocator%' AND properties_schema NOT LIKE '%modes%' LIMIT 10 `).all() as Array<{ node_type: string; display_name: string }>; console.log(`\nSample nodes WITHOUT modes (showing 10):`); withoutModes.forEach(node => { console.log(` - ${node.display_name} (${node.node_type})`); }); // Calculate coverage percentage const coverage = totalResourceLocator.count > 0 ? (withModes.count / totalResourceLocator.count) * 100 : 0; console.log(`\nSchema coverage: ${coverage.toFixed(1)}% of resourceLocator nodes have modes defined`); // Query 4: Get some examples of nodes WITH modes for verification console.log('\nSample nodes WITH modes (showing 5):'); const withModesExamples = db.prepare(` SELECT node_type, display_name FROM nodes WHERE properties_schema LIKE '%resourceLocator%' AND properties_schema LIKE '%modes%' LIMIT 5 `).all() as Array<{ node_type: string; display_name: string }>; withModesExamples.forEach(node => { console.log(` - ${node.display_name} (${node.node_type})`); }); // Summary console.log('\n=== Summary ==='); console.log(`Total nodes in database: ${db.prepare('SELECT COUNT(*) as count FROM nodes').get() as any as { count: number }.count}`); console.log(`Nodes with resourceLocator: ${totalResourceLocator.count}`); console.log(`Nodes with complete mode schemas: ${withModes.count}`); console.log(`Nodes without mode schemas: ${totalResourceLocator.count - withModes.count}`); console.log(`\nImplication: Schema-driven validation will apply to ${withModes.count} nodes.`); console.log(`For the remaining ${totalResourceLocator.count - withModes.count} nodes, validation will be skipped (graceful degradation).`); db.close();

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/88-888/n8n-mcp'

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