Major refactor: Multi-user Chrome MCP extension with remote server architecture

This commit is contained in:
nasir@endelospay.com
2025-08-21 20:09:57 +05:00
parent d97cad1736
commit 5d869f6a7c
125 changed files with 16249 additions and 11906 deletions

View File

@@ -0,0 +1,112 @@
/**
* Test tools/list via streamable HTTP
*/
import fetch from 'node-fetch';
const SERVER_URL = 'http://localhost:3001';
const MCP_URL = `${SERVER_URL}/mcp`;
async function testToolsList() {
try {
console.log('🔍 Testing tools/list via streamable HTTP...');
// Step 1: Initialize session
const initMessage = {
jsonrpc: '2.0',
id: 1,
method: 'initialize',
params: {
protocolVersion: '2024-11-05',
capabilities: {
tools: {}
},
clientInfo: {
name: 'test-tools-list-client',
version: '1.0.0'
}
}
};
console.log('🚀 Step 1: Initializing session...');
const initResponse = await fetch(MCP_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json, text/event-stream'
},
body: JSON.stringify(initMessage)
});
if (!initResponse.ok) {
throw new Error(`Initialization failed: ${initResponse.status} ${initResponse.statusText}`);
}
const sessionId = initResponse.headers.get('mcp-session-id');
console.log(`✅ Session initialized! Session ID: ${sessionId}`);
// Step 2: Send tools/list request
const toolsListMessage = {
jsonrpc: '2.0',
id: 2,
method: 'tools/list',
params: {}
};
console.log('📋 Step 2: Requesting tools list...');
const toolsResponse = await fetch(MCP_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json, text/event-stream',
'MCP-Session-ID': sessionId
},
body: JSON.stringify(toolsListMessage)
});
if (!toolsResponse.ok) {
throw new Error(`Tools list failed: ${toolsResponse.status} ${toolsResponse.statusText}`);
}
const toolsResult = await toolsResponse.text();
console.log('📋 Tools list response (SSE):', toolsResult);
// Step 3: Test a tool call (navigate_to_url)
const toolCallMessage = {
jsonrpc: '2.0',
id: 3,
method: 'tools/call',
params: {
name: 'navigate_to_url',
arguments: {
url: 'https://example.com'
}
}
};
console.log('🔧 Step 3: Testing tool call (navigate_to_url)...');
const toolCallResponse = await fetch(MCP_URL, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json, text/event-stream',
'MCP-Session-ID': sessionId
},
body: JSON.stringify(toolCallMessage)
});
if (!toolCallResponse.ok) {
throw new Error(`Tool call failed: ${toolCallResponse.status} ${toolCallResponse.statusText}`);
}
const toolCallResult = await toolCallResponse.text();
console.log('🔧 Tool call response (SSE):', toolCallResult);
console.log('✅ All tests completed successfully!');
} catch (error) {
console.error('❌ Error:', error);
}
}
testToolsList();