Skip to main content
Glama

Claude MCP Server Integration

by mokemoke0821
test-single-tool.js4.27 kB
#!/usr/bin/env node import { spawn } from 'child_process'; import { existsSync } from 'fs'; import { dirname, resolve } from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // Get tool name from command line const toolName = process.argv[2]; if (!toolName) { console.log('Usage: node test-single-tool.js <tool-name>'); console.log('Example: node test-single-tool.js git_status_enhanced'); process.exit(1); } // Get the build path const buildPath = resolve(__dirname, '..', 'build', 'index.js'); // Check if server is built if (!existsSync(buildPath)) { console.error('Server not built. Run "npm run build" first.'); process.exit(1); } console.log(`Testing tool: ${toolName}`); console.log('='.repeat(40)); let mcpProcess; async function startMCPServer() { mcpProcess = spawn('node', [buildPath], { stdio: ['pipe', 'pipe', 'pipe'] }); return new Promise((resolve, reject) => { mcpProcess.stdout.on('data', (data) => { const output = data.toString(); if (output.includes('Enhanced Development Commander')) { console.log('MCP server started\n'); resolve(); } }); mcpProcess.stderr.on('data', (data) => { console.error('Server error:', data.toString()); }); mcpProcess.on('error', (error) => { console.error('Failed to start MCP server:', error); reject(error); }); // Timeout after 5 seconds setTimeout(() => { reject(new Error('Server startup timeout')); }, 5000); }); } async function testTool() { const request = { jsonrpc: '2.0', id: 1, method: 'tools/call', params: { name: toolName, arguments: getDefaultArgs(toolName) } }; console.log('Request:', JSON.stringify(request, null, 2)); console.log('\nSending request...\n'); const requestStr = JSON.stringify(request) + '\n'; mcpProcess.stdin.write(requestStr); return new Promise((resolve) => { let responseData = ''; const dataHandler = (data) => { responseData += data.toString(); try { const response = JSON.parse(responseData.trim()); if (response.id === 1) { mcpProcess.stdout.removeListener('data', dataHandler); if (response.error) { console.error(`Error: ${response.error.message}`); } else { console.log('Response received successfully!'); console.log('\nResult:'); if (response.result?.content?.[0]?.text) { console.log(response.result.content[0].text); } else { console.log(JSON.stringify(response.result, null, 2)); } } resolve(); } } catch (e) { // Not complete JSON yet, continue listening } }; mcpProcess.stdout.on('data', dataHandler); // Timeout after 10 seconds setTimeout(() => { mcpProcess.stdout.removeListener('data', dataHandler); console.error('Timeout: No response received'); resolve(); }, 10000); }); } function getDefaultArgs(toolName) { const defaultArgs = { 'git_status_enhanced': {}, 'git_commit_smart': { message: 'test commit' }, 'git_branch_manager': { action: 'list' }, 'analyze_project_structure': {}, 'analyze_code_performance': { filePath: 'package.json' }, 'find_dead_code': {}, 'dependency_analyzer': {}, 'generate_code_template': { templateType: 'component', name: 'TestComponent' }, 'suggest_commit_message': { type: 'feat', description: 'test feature' }, 'env_process_monitor': {}, 'env_port_manager': { action: 'list' }, 'env_config_manager': { action: 'list' }, 'env_log_analyzer': { action: 'list' }, 'env_system_info': {} }; return defaultArgs[toolName] || {}; } // Cleanup function function cleanup() { if (mcpProcess) { mcpProcess.kill(); } process.exit(0); } // Handle cleanup on exit process.on('SIGINT', cleanup); process.on('SIGTERM', cleanup); // Run the test startMCPServer() .then(() => testTool()) .then(() => { console.log('\nTest completed!'); cleanup(); }) .catch((error) => { console.error('Test failed:', error); cleanup(); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mokemoke0821/claude-mcp-integration'

If you have feedback or need assistance with the MCP directory API, please join our Discord server