Files
n8n-mcp/scripts/test-direct.js
czlonkowski 1884d5babf feat: implement AI-optimized MCP tools with 95% size reduction
- Add get_node_essentials tool for 10-20 essential properties only
- Add search_node_properties for targeted property search
- Add get_node_for_task with 14 pre-configured templates
- Add validate_node_config for comprehensive validation
- Add get_property_dependencies for visibility analysis
- Implement PropertyFilter service with curated essentials
- Implement ExampleGenerator with working examples
- Implement TaskTemplates for common workflows
- Implement ConfigValidator with security checks
- Implement PropertyDependencies for dependency analysis
- Enhance property descriptions to 100% coverage
- Add version information to essentials response
- Update documentation with new tools

Response sizes reduced from 100KB+ to <5KB for better AI agent usability.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 12:37:45 +02:00

88 lines
2.8 KiB
JavaScript

#!/usr/bin/env node
/**
* Direct test of the server functionality without MCP protocol
*/
const { N8NDocumentationMCPServer } = require('../dist/mcp/server-update');
async function testDirect() {
console.log('🧪 Direct server test\n');
try {
// Initialize server
console.log('Initializing server...');
const server = new N8NDocumentationMCPServer();
// Wait for initialization
await new Promise(resolve => setTimeout(resolve, 1000));
console.log('Server initialized successfully\n');
// Test get_node_essentials
console.log('Testing get_node_essentials...');
try {
const result = await server.executeTool('get_node_essentials', {
nodeType: 'nodes-base.httpRequest'
});
console.log('✅ Success!');
console.log('Result type:', typeof result);
console.log('Result keys:', Object.keys(result || {}));
console.log('Node type:', result?.nodeType);
console.log('Required props:', result?.requiredProperties?.length || 0);
console.log('Common props:', result?.commonProperties?.length || 0);
console.log('Has examples:', !!result?.examples);
// Check sizes
const size = JSON.stringify(result).length;
console.log(`\nResponse size: ${(size / 1024).toFixed(1)} KB`);
} catch (error) {
console.error('❌ Error executing get_node_essentials:', error);
console.error('Error stack:', error.stack);
}
// Test search_node_properties
console.log('\n\nTesting search_node_properties...');
try {
const result = await server.executeTool('search_node_properties', {
nodeType: 'nodes-base.httpRequest',
query: 'auth'
});
console.log('✅ Success!');
console.log('Matches found:', result?.totalMatches || 0);
console.log('First match:', result?.matches?.[0]?.name);
} catch (error) {
console.error('❌ Error executing search_node_properties:', error);
}
// Test get_node_info for comparison
console.log('\n\nTesting get_node_info for comparison...');
try {
const result = await server.executeTool('get_node_info', {
nodeType: 'nodes-base.httpRequest'
});
const size = JSON.stringify(result).length;
console.log('✅ Success!');
console.log(`Full node info size: ${(size / 1024).toFixed(1)} KB`);
console.log('Properties count:', result?.properties?.length || 0);
} catch (error) {
console.error('❌ Error executing get_node_info:', error);
}
} catch (error) {
console.error('\n❌ Fatal error:', error);
console.error('Stack:', error.stack);
process.exit(1);
}
console.log('\n✨ Direct test completed');
process.exit(0);
}
// Run the test
testDirect().catch(console.error);