Files
n8n-mcp/test-mcp-tools.js

81 lines
2.1 KiB
JavaScript
Executable File

#!/usr/bin/env node
const { spawn } = require('child_process');
// Start the MCP server
const server = spawn('node', ['dist/mcp/index.js'], {
env: {
...process.env,
MCP_MODE: 'stdio',
LOG_LEVEL: 'error',
DISABLE_CONSOLE_OUTPUT: 'true'
},
stdio: ['pipe', 'pipe', 'inherit']
});
// Send list_tools request
const request = {
jsonrpc: "2.0",
method: "tools/list",
id: 1
};
server.stdin.write(JSON.stringify(request) + '\n');
// Collect response
let responseData = '';
server.stdout.on('data', (data) => {
responseData += data.toString();
// Try to parse each line
const lines = responseData.split('\n');
for (const line of lines) {
if (line.trim()) {
try {
const response = JSON.parse(line);
if (response.result && response.result.tools) {
console.log('MCP Server Tools Report');
console.log('======================');
console.log(`Total tools: ${response.result.tools.length}`);
console.log('\nTools list:');
response.result.tools.forEach(tool => {
console.log(`- ${tool.name}`);
});
// Check for specific tools
const expectedTools = [
'get_node_for_task',
'validate_node_config',
'get_property_dependencies',
'list_tasks',
'search_node_properties',
'get_node_essentials'
];
console.log('\nNew tools check:');
expectedTools.forEach(toolName => {
const found = response.result.tools.find(t => t.name === toolName);
console.log(`- ${toolName}: ${found ? '✅ Found' : '❌ Missing'}`);
});
server.kill();
process.exit(0);
}
} catch (e) {
// Not a complete JSON response yet
}
}
}
});
// Timeout after 5 seconds
setTimeout(() => {
console.error('Timeout: No response from MCP server');
server.kill();
process.exit(1);
}, 5000);
server.on('error', (err) => {
console.error('Failed to start MCP server:', err);
process.exit(1);
});