test_tools_direct.cjs•3.93 kB
#!/usr/bin/env node
// 测试所有Tavily工具
const { spawn } = require('child_process');
console.log('🧪 Tavily MCP 负载均衡器工具测试');
console.log('======================================');
// 测试工具列表
const tests = [
{
name: 'search',
args: {
query: 'Node.js tutorial',
max_results: 2
},
description: '搜索功能测试'
},
{
name: 'tavily-search',
args: {
query: 'JavaScript frameworks',
max_results: 2
},
description: '网络搜索功能'
},
{
name: 'tavily-extract',
args: {
urls: ['https://nodejs.org']
},
description: '网页内容提取'
}
];
let currentTest = 0;
function runTest(testConfig) {
console.log(`🔧 测试工具: ${testConfig.name}`);
console.log(`描述: ${testConfig.description}`);
console.log('----------------------------------------');
const mcpProcess = spawn('node', ['dist/index.js'], {
cwd: process.cwd(),
stdio: ['pipe', 'pipe', 'pipe']
});
let responseData = '';
let hasReceivedResponse = false;
const timeout = setTimeout(() => {
if (!hasReceivedResponse) {
console.log('❌ 测试超时\n');
mcpProcess.kill();
runNextTest();
}
}, 15000);
mcpProcess.stdout.on('data', (data) => {
responseData += data.toString();
const lines = responseData.split('\n');
for (const line of lines) {
if (line.trim() && line.includes('"jsonrpc"')) {
try {
const response = JSON.parse(line.trim());
if (response.result) {
hasReceivedResponse = true;
clearTimeout(timeout);
if (response.result.isError) {
console.log('❌ 测试失败');
console.log('错误信息:', response.result.content[0].text);
} else {
console.log('✅ 测试通过');
const resultText = response.result.content[0].text;
// 显示结果预览
const preview = resultText.substring(0, 200);
console.log('结果预览:', preview + (resultText.length > 200 ? '...' : ''));
console.log('响应大小:', resultText.length, '字符');
}
console.log('');
mcpProcess.kill();
runNextTest();
return;
}
} catch (e) {
// 继续等待
}
}
}
});
mcpProcess.on('error', (error) => {
console.log('❌ 启动失败:', error.message);
runNextTest();
});
// 发送请求
const request = {
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: testConfig.name,
arguments: testConfig.args
}
};
mcpProcess.stdin.write(JSON.stringify(request) + '\n');
mcpProcess.stdin.end();
}
function runNextTest() {
if (currentTest < tests.length) {
runTest(tests[currentTest++]);
} else {
console.log('======================================');
console.log('🎉 所有测试完成!');
console.log('');
console.log('💡 提示:');
console.log('- 使用 node check_stats_direct.cjs 查看详细统计');
console.log('- 如果搜索测试失败,可能是API限制或网络问题');
process.exit(0);
}
}
// 开始测试
runNextTest();