Skip to main content
Glama
test-all-tools.jsโ€ข10.3 kB
#!/usr/bin/env node /** * Comprehensive test for all Tiling Trees MCP tools * Tests each tool to verify it's working correctly */ import { spawn } from 'child_process'; const serverPath = './dist/index.js'; console.log('๐Ÿงช Testing Tiling Trees MCP Server - All Tools\n'); const server = spawn('node', [serverPath], { stdio: ['pipe', 'pipe', 'inherit'] }); let responseBuffer = ''; let messageId = 0; const pendingRequests = new Map(); server.stdout.on('data', (data) => { responseBuffer += data.toString(); const lines = responseBuffer.split('\n'); responseBuffer = lines.pop() || ''; lines.forEach(line => { if (line.trim()) { try { const response = JSON.parse(line); if (response.id && pendingRequests.has(response.id)) { const handler = pendingRequests.get(response.id); handler(response); pendingRequests.delete(response.id); } } catch (e) { // Ignore parse errors } } }); }); function sendRequest(method, params = {}) { return new Promise((resolve, reject) => { messageId++; const request = { jsonrpc: '2.0', id: messageId, method, params }; pendingRequests.set(messageId, (response) => { if (response.error) { reject(new Error(response.error.message || JSON.stringify(response.error))); } else { resolve(response.result); } }); server.stdin.write(JSON.stringify(request) + '\n'); // Timeout after 5 seconds setTimeout(() => { if (pendingRequests.has(messageId)) { pendingRequests.delete(messageId); reject(new Error('Request timeout')); } }, 5000); }); } async function runTests() { try { console.log('1๏ธโƒฃ Initializing server...'); await sendRequest('initialize', { protocolVersion: '2024-11-05', capabilities: {}, clientInfo: { name: 'test-client', version: '1.0.0' } }); console.log('โœ… Server initialized\n'); console.log('2๏ธโƒฃ Listing tools...'); const toolsList = await sendRequest('tools/list', {}); console.log(`โœ… Found ${toolsList.tools.length} tools\n`); // Test each tool let treeId, rootTileId, childTileId; console.log('3๏ธโƒฃ Testing create_tree...'); const tree = await sendRequest('tools/call', { name: 'create_tree', arguments: { name: 'Test Tree', problemStatement: 'How to test all MCP tools?' } }); const treeData = JSON.parse(tree.content[0].text); treeId = treeData.id; rootTileId = treeData.rootTileId; console.log(`โœ… Created tree: ${treeId}\n`); console.log('4๏ธโƒฃ Testing get_trees...'); const trees = await sendRequest('tools/call', { name: 'get_trees', arguments: {} }); console.log(`โœ… Retrieved ${JSON.parse(trees.content[0].text).length} tree(s)\n`); console.log('5๏ธโƒฃ Testing get_tile...'); const rootTile = await sendRequest('tools/call', { name: 'get_tile', arguments: { tileId: rootTileId } }); console.log(`โœ… Retrieved root tile\n`); console.log('6๏ธโƒฃ Testing split_tile...'); const split = await sendRequest('tools/call', { name: 'split_tile', arguments: { tileId: rootTileId, splitAttribute: 'Tool category', splitRationale: 'Group tools by functionality', subsets: [ { title: 'Creation tools', description: 'Tools for creating trees and tiles', isLeaf: false }, { title: 'Analysis tools', description: 'Tools for analyzing and validating', isLeaf: false }, { title: 'Export tools', description: 'Tools for exporting data', isLeaf: true } ] } }); const splitData = JSON.parse(split.content[0].text); childTileId = splitData.createdTiles[0].id; console.log(`โœ… Split created ${splitData.createdTiles.length} children\n`); console.log('7๏ธโƒฃ Testing validate_split_quality...'); const validation = await sendRequest('tools/call', { name: 'validate_split_quality', arguments: { tileId: rootTileId } }); const validationData = JSON.parse(validation.content[0].text); console.log(`โœ… Validation score: ${validationData.score}/100\n`); console.log('8๏ธโƒฃ Testing mark_mece...'); const mece = await sendRequest('tools/call', { name: 'mark_mece', arguments: { tileId: rootTileId, isMECE: true, coverageNotes: 'All tool categories covered' } }); console.log(`โœ… Marked as MECE\n`); console.log('9๏ธโƒฃ Testing add_tiles_to_split...'); const addTiles = await sendRequest('tools/call', { name: 'add_tiles_to_split', arguments: { parentId: rootTileId, newTiles: [ { title: 'Utility tools', description: 'Miscellaneous utility functions', isLeaf: true } ] } }); console.log(`โœ… Added tile to split\n`); console.log('๐Ÿ”Ÿ Testing update_tile...'); const update = await sendRequest('tools/call', { name: 'update_tile', arguments: { tileId: childTileId, title: 'Creation & Management Tools' } }); console.log(`โœ… Updated tile\n`); console.log('1๏ธโƒฃ1๏ธโƒฃ Testing explore_path...'); const explore = await sendRequest('tools/call', { name: 'explore_path', arguments: { tileId: rootTileId, depth: 3 } }); console.log(`โœ… Explored path\n`); console.log('1๏ธโƒฃ2๏ธโƒฃ Testing evaluate_tile...'); const evaluate = await sendRequest('tools/call', { name: 'evaluate_tile', arguments: { tileId: childTileId, impact: 8, feasibility: 7, uniqueness: 6, timeframe: '1-2 months', notes: 'Test evaluation' } }); console.log(`โœ… Evaluated tile\n`); console.log('1๏ธโƒฃ3๏ธโƒฃ Testing get_leaf_tiles...'); const leafTiles = await sendRequest('tools/call', { name: 'get_leaf_tiles', arguments: { treeId } }); const leafData = JSON.parse(leafTiles.content[0].text); console.log(`โœ… Found ${leafData.length} leaf tile(s)\n`); console.log('1๏ธโƒฃ4๏ธโƒฃ Testing get_unexplored_tiles...'); const unexplored = await sendRequest('tools/call', { name: 'get_unexplored_tiles', arguments: { treeId } }); const unexploredData = JSON.parse(unexplored.content[0].text); console.log(`โœ… Found ${unexploredData.length} unexplored tile(s)\n`); console.log('1๏ธโƒฃ5๏ธโƒฃ Testing search_tiles...'); const search = await sendRequest('tools/call', { name: 'search_tiles', arguments: { query: 'tools', treeId } }); const searchData = JSON.parse(search.content[0].text); console.log(`โœ… Found ${searchData.length} matching tile(s)\n`); console.log('1๏ธโƒฃ6๏ธโƒฃ Testing get_top_leaves...'); const topLeaves = await sendRequest('tools/call', { name: 'get_top_leaves', arguments: { criteria: 'combined', limit: 5, treeId } }); const topData = JSON.parse(topLeaves.content[0].text); console.log(`โœ… Found ${topData.length} top-rated leaf tile(s)\n`); console.log('1๏ธโƒฃ7๏ธโƒฃ Testing get_coverage_analysis...'); const coverage = await sendRequest('tools/call', { name: 'get_coverage_analysis', arguments: { treeId } }); const coverageData = JSON.parse(coverage.content[0].text); console.log(`โœ… Coverage: ${coverageData.totalTiles} tiles, ${coverageData.leafTiles} leaves\n`); console.log('1๏ธโƒฃ8๏ธโƒฃ Testing get_tree_validation_report...'); const treeValidation = await sendRequest('tools/call', { name: 'get_tree_validation_report', arguments: { treeId } }); const treeValData = JSON.parse(treeValidation.content[0].text); console.log(`โœ… Tree validation score: ${treeValData.overallScore}/100\n`); console.log('1๏ธโƒฃ9๏ธโƒฃ Testing get_statistics...'); const stats = await sendRequest('tools/call', { name: 'get_statistics', arguments: {} }); const statsData = JSON.parse(stats.content[0].text); console.log(`โœ… Statistics: ${statsData.totalTrees} trees, ${statsData.totalTiles} tiles\n`); console.log('2๏ธโƒฃ0๏ธโƒฃ Testing export_tree (JSON)...'); const exportJson = await sendRequest('tools/call', { name: 'export_tree', arguments: { treeId, format: 'json' } }); console.log(`โœ… Exported as JSON\n`); console.log('2๏ธโƒฃ1๏ธโƒฃ Testing export_tree (Markdown)...'); const exportMd = await sendRequest('tools/call', { name: 'export_tree', arguments: { treeId, format: 'markdown' } }); console.log(`โœ… Exported as Markdown\n`); console.log('2๏ธโƒฃ2๏ธโƒฃ Testing export_tree (Mermaid)...'); const exportMermaid = await sendRequest('tools/call', { name: 'export_tree', arguments: { treeId, format: 'mermaid' } }); console.log(`โœ… Exported as Mermaid\n`); console.log('2๏ธโƒฃ3๏ธโƒฃ Testing export_tree (DOT)...'); const exportDot = await sendRequest('tools/call', { name: 'export_tree', arguments: { treeId, format: 'dot' } }); console.log(`โœ… Exported as DOT\n`); console.log('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•'); console.log('๐ŸŽ‰ ALL TESTS PASSED! All tools working!'); console.log('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•\n'); } catch (error) { console.error('โŒ Test failed:', error.message); console.error('Stack:', error.stack); } finally { server.kill(); process.exit(0); } } // Start tests after server initializes setTimeout(() => { runTests(); }, 500); server.on('error', (err) => { console.error('โŒ Server error:', err); process.exit(1); });

Latest Blog Posts

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/k-chrispens/tiling-trees-mcp'

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