Skip to main content
Glama

DillyDallyMCP

by DIodide
test.tsโ€ข4.94 kB
#!/usr/bin/env node /** * Simple test script for the Dedalus MCP Server * Tests the add_integers tool functionality */ import { spawn } from "child_process"; import { Readable, Writable } from "stream"; interface McpRequest { jsonrpc: "2.0"; id: number; method: string; params?: unknown; } interface McpResponse { jsonrpc: "2.0"; id: number; result?: unknown; error?: { code: number; message: string; }; } let requestId = 1; function createRequest(method: string, params?: unknown): McpRequest { return { jsonrpc: "2.0", id: requestId++, method, params, }; } async function testMcpServer(): Promise<void> { console.log("๐Ÿงช Testing Dedalus MCP Server...\n"); // Start the MCP server const serverProcess = spawn("node", ["dist/index.js"], { stdio: ["pipe", "pipe", "pipe"], }); const serverInput = serverProcess.stdin!; const serverOutput = serverProcess.stdout!; const serverError = serverProcess.stderr!; // Collect responses let outputBuffer = ""; const responses: McpResponse[] = []; serverOutput.on("data", (data: Buffer) => { outputBuffer += data.toString(); const lines = outputBuffer.split("\n"); outputBuffer = lines.pop() || ""; for (const line of lines) { if (line.trim()) { try { const response = JSON.parse(line) as McpResponse; responses.push(response); } catch (e) { // Ignore non-JSON lines (like error messages) } } } }); serverError.on("data", (data: Buffer) => { const message = data.toString(); if (message.includes("MCP server running")) { console.log("โœ… Server started successfully\n"); } }); // Wait for server to initialize await new Promise((resolve) => setTimeout(resolve, 500)); // Test 1: Initialize console.log("๐Ÿ“‹ Test 1: Initialize server"); const initRequest = createRequest("initialize", { protocolVersion: "2024-11-05", capabilities: {}, clientInfo: { name: "test-client", version: "1.0.0", }, }); serverInput.write(JSON.stringify(initRequest) + "\n"); await new Promise((resolve) => setTimeout(resolve, 200)); // Test 2: List tools console.log("๐Ÿ“‹ Test 2: List available tools"); const listToolsRequest = createRequest("tools/list"); serverInput.write(JSON.stringify(listToolsRequest) + "\n"); await new Promise((resolve) => setTimeout(resolve, 200)); // Test 3: Call add_integers tool console.log("๐Ÿ“‹ Test 3: Call add_integers tool (5 + 3)"); const addIntegersRequest = createRequest("tools/call", { name: "add_integers", arguments: { a: 5, b: 3, }, }); serverInput.write(JSON.stringify(addIntegersRequest) + "\n"); await new Promise((resolve) => setTimeout(resolve, 200)); // Test 4: Call add_integers with different numbers console.log("๐Ÿ“‹ Test 4: Call add_integers tool (10 + 20)"); const addIntegersRequest2 = createRequest("tools/call", { name: "add_integers", arguments: { a: 10, b: 20, }, }); serverInput.write(JSON.stringify(addIntegersRequest2) + "\n"); await new Promise((resolve) => setTimeout(resolve, 200)); // Wait for all responses await new Promise((resolve) => setTimeout(resolve, 500)); // Verify results console.log("\n๐Ÿ“Š Test Results:\n"); const listToolsResponse = responses.find( (r) => r.id === listToolsRequest.id ); if (listToolsResponse?.result) { const tools = (listToolsResponse.result as { tools: unknown[] }).tools; console.log(`โœ… Found ${tools.length} tool(s):`); tools.forEach((tool: unknown) => { const toolObj = tool as { name: string }; console.log(` - ${toolObj.name}`); }); } const addIntegersResponse = responses.find( (r) => r.id === addIntegersRequest.id ); if (addIntegersResponse?.result) { const content = (addIntegersResponse.result as { content: unknown[] }) .content; const text = (content[0] as { text: string }).text; console.log(`\nโœ… Test 3 Result: ${text}`); if (text === "Result: 8") { console.log(" โœ… Correct! 5 + 3 = 8"); } else { console.log(` โŒ Expected "Result: 8", got "${text}"`); } } const addIntegersResponse2 = responses.find( (r) => r.id === addIntegersRequest2.id ); if (addIntegersResponse2?.result) { const content = (addIntegersResponse2.result as { content: unknown[] }) .content; const text = (content[0] as { text: string }).text; console.log(`\nโœ… Test 4 Result: ${text}`); if (text === "Result: 30") { console.log(" โœ… Correct! 10 + 20 = 30"); } else { console.log(` โŒ Expected "Result: 30", got "${text}"`); } } // Cleanup serverProcess.kill(); console.log("\nโœจ Tests completed!\n"); } // Run tests testMcpServer().catch((error) => { console.error("โŒ Test failed:", error); process.exit(1); });

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/DIodide/DillyDallyMCP'

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