Skip to main content
Glama
test-detailed-parameter.jsโ€ข6.93 kB
const { spawn } = require('child_process'); const path = require('path'); /** * Test detailed parameter functionality in web interface */ async function testDetailedParameter() { console.log('๐Ÿงช Testing Detailed Parameter Functionality\n'); const serverPath = path.join(__dirname, '..', 'dist', 'index.js'); console.log('๐ŸŽฏ Testing CL_BUS_ABSTRACT_MAIN_SCREEN class with different detailed values...\n'); // Test 1: detailed=false (default) console.log('๐Ÿ“‹ TEST 1: detailed=false (minimal mode)'); const minimalResult = await callMcpTool(serverPath, { method: 'tools/call', params: { name: 'GetWhereUsed', arguments: { object_name: 'CL_BUS_ABSTRACT_MAIN_SCREEN', object_type: 'class', detailed: false } } }); if (!minimalResult.error) { const minimalResponse = JSON.parse(minimalResult.content[0].text); console.log(` โœ… Success: Found ${minimalResponse.total_found}, Showing ${minimalResponse.total_references}, Filtered ${minimalResponse.filtered_out}`); console.log(` ๐Ÿ” Detailed mode: ${minimalResponse.detailed}`); console.log(` ๐Ÿ“ Sample results:`); minimalResponse.references.slice(0, 3).forEach((ref, i) => { console.log(` ${i + 1}. ${ref.name} (${ref.type})`); }); } else { console.log(` โŒ Error:`, minimalResult.error); } console.log(''); // Test 2: detailed=true (full mode) console.log('๐Ÿ“‹ TEST 2: detailed=true (full mode)'); const detailedResult = await callMcpTool(serverPath, { method: 'tools/call', params: { name: 'GetWhereUsed', arguments: { object_name: 'CL_BUS_ABSTRACT_MAIN_SCREEN', object_type: 'class', detailed: true } } }); if (!detailedResult.error) { const detailedResponse = JSON.parse(detailedResult.content[0].text); console.log(` โœ… Success: Found ${detailedResponse.total_found}, Showing ${detailedResponse.total_references}, Filtered ${detailedResponse.filtered_out}`); console.log(` ๐Ÿ” Detailed mode: ${detailedResponse.detailed}`); console.log(` ๐Ÿ“ Sample results:`); detailedResponse.references.slice(0, 3).forEach((ref, i) => { console.log(` ${i + 1}. ${ref.name} (${ref.type})`); }); } else { console.log(` โŒ Error:`, detailedResult.error); } console.log(''); // Test 3: No detailed parameter (should default to false) console.log('๐Ÿ“‹ TEST 3: No detailed parameter (should default to false)'); const defaultResult = await callMcpTool(serverPath, { method: 'tools/call', params: { name: 'GetWhereUsed', arguments: { object_name: 'CL_BUS_ABSTRACT_MAIN_SCREEN', object_type: 'class' // No detailed parameter } } }); if (!defaultResult.error) { const defaultResponse = JSON.parse(defaultResult.content[0].text); console.log(` โœ… Success: Found ${defaultResponse.total_found}, Showing ${defaultResponse.total_references}, Filtered ${defaultResponse.filtered_out}`); console.log(` ๐Ÿ” Detailed mode: ${defaultResponse.detailed}`); console.log(` ๐Ÿ“ Sample results:`); defaultResponse.references.slice(0, 3).forEach((ref, i) => { console.log(` ${i + 1}. ${ref.name} (${ref.type})`); }); } else { console.log(` โŒ Error:`, defaultResult.error); } console.log('\n๐ŸŽฏ COMPARISON:'); if (!minimalResult.error && !detailedResult.error && !defaultResult.error) { const minimalResponse = JSON.parse(minimalResult.content[0].text); const detailedResponse = JSON.parse(detailedResult.content[0].text); const defaultResponse = JSON.parse(defaultResult.content[0].text); console.log(` ๐Ÿ“Š Minimal (detailed=false): ${minimalResponse.total_references} results`); console.log(` ๐Ÿ“Š Detailed (detailed=true): ${detailedResponse.total_references} results`); console.log(` ๐Ÿ“Š Default (no parameter): ${defaultResponse.total_references} results`); if (minimalResponse.total_references === defaultResponse.total_references) { console.log(` โœ… Default correctly uses minimal mode`); } else { console.log(` โŒ Default mode mismatch!`); } if (detailedResponse.total_references > minimalResponse.total_references) { console.log(` โœ… Detailed mode shows more results than minimal`); } else { console.log(` โŒ Detailed mode doesn't show more results!`); } console.log(`\n ๐ŸŽฏ Filtering efficiency: ${Math.round((minimalResponse.filtered_out / minimalResponse.total_found) * 100)}% noise reduction in minimal mode`); } } /** * Call MCP tool via stdio */ function callMcpTool(serverPath, request) { return new Promise((resolve, reject) => { const child = spawn('node', [serverPath], { stdio: ['pipe', 'pipe', 'pipe'] }); let stdout = ''; let stderr = ''; child.stdout.on('data', (data) => { stdout += data.toString(); }); child.stderr.on('data', (data) => { stderr += data.toString(); }); child.on('close', (code) => { if (code !== 0) { reject(new Error(`Process exited with code ${code}. Stderr: ${stderr}`)); return; } try { const lines = stdout.trim().split('\n'); let result = null; for (const line of lines) { try { const parsed = JSON.parse(line); if (parsed.result) { result = parsed.result; break; } } catch (e) { // Skip non-JSON lines } } if (result) { resolve(result); } else { reject(new Error('No valid result found in output')); } } catch (error) { reject(new Error(`Failed to parse output: ${error.message}`)); } }); const jsonRpcRequest = { jsonrpc: '2.0', id: 1, ...request }; child.stdin.write(JSON.stringify(jsonRpcRequest) + '\n'); child.stdin.end(); }); } // Run the test testDetailedParameter().catch(console.error);

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/fr0ster/mcp-abap-adt'

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