78 lines
2.0 KiB
JavaScript
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);
|