test-mcp-init-fixed.js•2.44 kB
// Test script with correct MCP initialization format
import axios from 'axios';
async function testMCPInitialization() {
const baseUrl = 'http://localhost:5002';
try {
console.log(`Testing MCP server initialization at ${baseUrl}/mcp`);
// 1. Send properly formatted initialization request
const initRequest = {
jsonrpc: '2.0',
method: 'initialize', // Note: No 'mcp.' prefix
params: {
protocolVersion: '1.0',
clientInfo: {
name: 'test-client',
version: '1.0.0'
},
capabilities: {}
},
id: 1
};
console.log('Sending initialization request:', JSON.stringify(initRequest, null, 2));
const response = await axios.post(
`${baseUrl}/mcp`,
initRequest,
{
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json, text/event-stream' // Required by MCP server
},
transformResponse: (res) => res,
timeout: 10000
}
);
console.log('\n=== Response ===');
console.log('Status:', response.status, response.statusText);
console.log('Headers:', JSON.stringify(response.headers, null, 2));
// Parse response data
let responseData;
try {
responseData = typeof response.data === 'string'
? JSON.parse(response.data)
: response.data;
console.log('Response data:', JSON.stringify(responseData, null, 2));
} catch (e) {
console.log('Raw response data:', response.data);
}
// Check for session ID in headers
const sessionId = response.headers['mcp-session-id'];
if (sessionId) {
console.log('\n✅ Session established. Session ID:', sessionId);
return sessionId;
} else {
console.log('\nℹ️ No session ID in response headers');
return null;
}
} catch (error) {
console.error('\n❌ Error testing MCP initialization:');
if (error.response) {
console.error('Status:', error.response.status);
console.error('Headers:', error.response.headers);
console.error('Data:', error.response.data);
} else if (error.request) {
console.error('No response received. Is the MCP server running?');
console.error('Request:', error.config);
} else {
console.error('Error:', error.message);
}
process.exit(1);
}
}
// Run the test
testMCPInitialization();