Files
broswer-automation/app/remote-server/test-tool-call.js

78 lines
2.0 KiB
JavaScript

/**
* Test tool call to verify Chrome extension connection using MCP WebSocket
*/
import WebSocket from 'ws';
const MCP_SERVER_URL = 'ws://localhost:3001/ws/mcp';
async function testToolCall() {
console.log('🔌 Testing tool call via MCP WebSocket...');
return new Promise((resolve, reject) => {
const ws = new WebSocket(MCP_SERVER_URL);
ws.on('open', () => {
console.log('✅ Connected to MCP WebSocket');
// Send a proper MCP tool call
const message = {
jsonrpc: '2.0',
id: 1,
method: 'tools/call',
params: {
name: 'chrome_navigate',
arguments: {
url: 'https://www.google.com',
newWindow: false,
},
},
};
console.log('📤 Sending MCP message:', JSON.stringify(message, null, 2));
ws.send(JSON.stringify(message));
});
ws.on('message', (data) => {
try {
const response = JSON.parse(data.toString());
console.log('📨 MCP Response:', JSON.stringify(response, null, 2));
if (response.error) {
console.error('❌ Tool call failed:', response.error);
reject(new Error(response.error.message || response.error));
} else if (response.result) {
console.log('✅ Tool call successful!');
resolve(response.result);
} else {
console.log('📨 Received other message:', response);
}
ws.close();
} catch (error) {
console.error('❌ Error parsing response:', error);
reject(error);
ws.close();
}
});
ws.on('error', (error) => {
console.error('❌ WebSocket error:', error);
reject(error);
});
ws.on('close', () => {
console.log('🔌 WebSocket connection closed');
});
// Timeout after 10 seconds
setTimeout(() => {
if (ws.readyState === WebSocket.OPEN) {
ws.close();
reject(new Error('Test timeout'));
}
}, 10000);
});
}
testToolCall().catch(console.error);