Skip to main content
Glama

n8n-MCP

by 88-888
test-search-improvements.ts4.81 kB
#!/usr/bin/env node import { N8NDocumentationMCPServer } from '../src/mcp/server'; interface SearchTestCase { query: string; expectedTop: string[]; description: string; } async function testSearchImprovements() { console.log('Testing search improvements...\n'); const server = new N8NDocumentationMCPServer(); // Wait for initialization await new Promise(resolve => setTimeout(resolve, 1000)); const testCases: SearchTestCase[] = [ { query: 'webhook', expectedTop: ['nodes-base.webhook'], description: 'Primary webhook node should appear first' }, { query: 'http', expectedTop: ['nodes-base.httpRequest'], description: 'HTTP Request node should appear first' }, { query: 'http call', expectedTop: ['nodes-base.httpRequest'], description: 'HTTP Request node should appear first for "http call"' }, { query: 'slack', expectedTop: ['nodes-base.slack'], description: 'Slack node should appear first' }, { query: 'email', expectedTop: ['nodes-base.emailSend', 'nodes-base.gmail', 'nodes-base.emailReadImap'], description: 'Email-related nodes should appear first' }, { query: 'http request', expectedTop: ['nodes-base.httpRequest'], description: 'HTTP Request node should appear first for exact name' } ]; let passedTests = 0; let failedTests = 0; for (const testCase of testCases) { try { console.log(`\nTest: ${testCase.description}`); console.log(`Query: "${testCase.query}"`); const results = await server.executeTool('search_nodes', { query: testCase.query, limit: 10 }); if (!results.results || results.results.length === 0) { console.log('❌ No results found'); failedTests++; continue; } console.log(`Found ${results.results.length} results`); console.log('Top 5 results:'); const top5 = results.results.slice(0, 5); top5.forEach((node: any, index: number) => { const isExpected = testCase.expectedTop.includes(node.nodeType); const marker = index === 0 && isExpected ? '✅' : index === 0 && !isExpected ? '❌' : ''; console.log(` ${index + 1}. ${node.nodeType} - ${node.displayName} ${marker}`); }); // Check if any expected node appears in top position const firstResult = results.results[0]; if (testCase.expectedTop.includes(firstResult.nodeType)) { console.log('✅ Test passed: Expected node found at top position'); passedTests++; } else { console.log('❌ Test failed: Expected nodes not at top position'); console.log(` Expected one of: ${testCase.expectedTop.join(', ')}`); console.log(` Got: ${firstResult.nodeType}`); failedTests++; } } catch (error) { console.log(`❌ Test failed with error: ${error}`); failedTests++; } } console.log('\n' + '='.repeat(50)); console.log(`Test Summary: ${passedTests} passed, ${failedTests} failed`); console.log('='.repeat(50)); // Test the old problematic queries to ensure improvement console.log('\n\nTesting Original Problem Scenarios:'); console.log('=====================================\n'); // Test webhook query that was problematic console.log('1. Testing "webhook" query (was returning service-specific webhooks first):'); const webhookResult = await server.executeTool('search_nodes', { query: 'webhook', limit: 10 }); const webhookFirst = webhookResult.results[0]; if (webhookFirst.nodeType === 'nodes-base.webhook') { console.log(' ✅ SUCCESS: Primary Webhook node now appears first!'); } else { console.log(` ❌ FAILED: Got ${webhookFirst.nodeType} instead of nodes-base.webhook`); console.log(` First 3 results: ${webhookResult.results.slice(0, 3).map((r: any) => r.nodeType).join(', ')}`); } // Test http call query console.log('\n2. Testing "http call" query (was not finding HTTP Request easily):'); const httpCallResult = await server.executeTool('search_nodes', { query: 'http call', limit: 10 }); const httpCallFirst = httpCallResult.results[0]; if (httpCallFirst.nodeType === 'nodes-base.httpRequest') { console.log(' ✅ SUCCESS: HTTP Request node now appears first!'); } else { console.log(` ❌ FAILED: Got ${httpCallFirst.nodeType} instead of nodes-base.httpRequest`); console.log(` First 3 results: ${httpCallResult.results.slice(0, 3).map((r: any) => r.nodeType).join(', ')}`); } process.exit(failedTests > 0 ? 1 : 0); } // Run tests testSearchImprovements().catch(error => { console.error('Test execution failed:', error); process.exit(1); });

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