Skip to main content
Glama

MoluAbi MCP Server

by oregpt
test-actual-tools.jsโ€ข13.3 kB
#!/usr/bin/env tsx /** * Practical MCP Tool Test - Actually runs each tool call * Creates real agents, interacts with them, and tests all functionality * * IMPORTANT: All tool responses now include cost transparency! * Every MCP tool call returns: * - success: boolean * - [tool-specific data] * - cost: number (in USD) * - operation: string (operation name) * * EXAMPLE RESPONSES WITH PRICING: * * CREATE_AGENT Response: * { * "success": true, * "agent": { * "id": 123, * "name": "Marketing Assistant", * "description": "Helps with marketing tasks", * "type": "chat-based", * "isPublic": false, * "isShareable": true, * "createdAt": "2024-01-15T10:30:00Z" * }, * "cost": 0.05, * "operation": "create_agent" * } * * LIST_AGENTS Response: * { * "success": true, * "agents": [ * { * "id": 123, * "name": "Marketing Assistant", * "description": "Helps with marketing tasks", * "type": "chat-based", * "isPublic": false, * "isShareable": true, * "ownerId": "user-456", * "createdAt": "2024-01-15T10:30:00Z", * "updatedAt": "2024-01-15T10:30:00Z" * } * ], * "total": 1, * "cost": 0.001, * "operation": "list_agents" * } * * PROMPT_AGENT Response: * { * "success": true, * "response": "Here's a catchy tagline for your eco-friendly water bottle: 'Pure hydration, planet protection!'", * "tokensUsed": 25, * "cost": 0.01, * "operation": "prompt_agent" * } * * UPDATE_AGENT Response: * { * "success": true, * "agent": { * "id": 123, * "name": "Advanced Marketing Pro", * "description": "Enhanced marketing capabilities", * "instructions": "Expert marketing assistant...", * "type": "chat-based", * "isPublic": false, * "isShareable": true, * "updatedAt": "2024-01-15T11:00:00Z" * }, * "cost": 0.02, * "operation": "update_agent" * } * * DELETE_AGENT Response: * { * "success": true, * "message": "Agent 123 deleted successfully", * "cost": 0.01, * "operation": "delete_agent" * } * * GET_USAGE_REPORT Response: * { * "success": true, * "report": { * "totalCost": 0.0820, * "totalInteractions": 15, * "dailyBreakdown": [...], * "operationCounts": {...} * }, * "cost": 0.002, * "operation": "get_usage_report" * } * * STANDARD PRICING (as of latest test): * - create_agent: $0.05 * - update_agent: $0.02 * - delete_agent: $0.01 * - prompt_agent: Variable (based on AI tokens used, minimum $0.01) * - list_agents: $0.001 * - get_agent: $0.001 * - add_user_to_agent: $0.005 * - remove_user_from_agent: $0.005 * - get_usage_report: $0.002 * - get_pricing: $0.001 */ import { AgentService } from "./src/core/agent-service.ts"; import { PaymentManager } from "./src/payments/payment-manager.ts"; console.log("๐Ÿงช Practical MCP Tool Testing"); console.log("==============================\n"); const TEST_USER_ID = "test-user-456"; let createdAgentId = null; let testResults = []; async function logResult(step, result, details = "") { testResults.push({ step, result, details }); const icon = result === "SUCCESS" ? "โœ…" : "โŒ"; console.log(`${icon} ${step}: ${result}`); if (details) console.log(` ๐Ÿ“ ${details}`); console.log(""); } async function testCreateAgent(agentService, paymentManager) { try { console.log("๐Ÿ”จ Creating Test Agent..."); // Validate payment first const paymentValid = await paymentManager.validatePayment(TEST_USER_ID, "create_agent"); if (!paymentValid) { throw new Error("Payment validation failed"); } // Create the agent const agent = await agentService.createAgent({ name: "Test Marketing Agent", description: "A test agent that helps with marketing tasks", instructions: "You are a helpful marketing assistant. Help users create engaging content and marketing strategies.", userId: TEST_USER_ID, type: "chat-based", isPublic: false, isShareable: true }); createdAgentId = agent.id; await logResult("Create Agent", "SUCCESS", `Created agent "${agent.name}" with ID: ${agent.id}`); // Record usage await paymentManager.recordUsage(TEST_USER_ID, "create_agent", 0.05); return agent; } catch (error) { await logResult("Create Agent", "FAILED", error.message); throw error; } } async function testListAgents(agentService, paymentManager) { try { console.log("๐Ÿ“‹ Listing User's Agents..."); const paymentValid = await paymentManager.validatePayment(TEST_USER_ID, "list_agents"); if (!paymentValid) { throw new Error("Payment validation failed"); } const agents = await agentService.listAgents(TEST_USER_ID, 10); await logResult("List Agents", "SUCCESS", `Found ${agents.length} agents`); await paymentManager.recordUsage(TEST_USER_ID, "list_agents", 0.001); return agents; } catch (error) { await logResult("List Agents", "FAILED", error.message); throw error; } } async function testGetAgent(agentService, paymentManager) { try { console.log("๐Ÿ” Getting Agent Details..."); if (!createdAgentId) { throw new Error("No agent ID available"); } const paymentValid = await paymentManager.validatePayment(TEST_USER_ID, "get_agent"); if (!paymentValid) { throw new Error("Payment validation failed"); } const agent = await agentService.getAgent(createdAgentId, TEST_USER_ID); await logResult("Get Agent", "SUCCESS", `Retrieved agent: ${agent.name}`); await paymentManager.recordUsage(TEST_USER_ID, "get_agent", 0.001); return agent; } catch (error) { await logResult("Get Agent", "FAILED", error.message); throw error; } } async function testUpdateAgent(agentService, paymentManager) { try { console.log("โœ๏ธ Updating Agent..."); if (!createdAgentId) { throw new Error("No agent ID available"); } const paymentValid = await paymentManager.validatePayment(TEST_USER_ID, "update_agent"); if (!paymentValid) { throw new Error("Payment validation failed"); } const updatedAgent = await agentService.updateAgent(createdAgentId, TEST_USER_ID, { name: "Updated Marketing Pro Agent", description: "An enhanced marketing agent with advanced capabilities", instructions: "You are an expert marketing assistant with deep knowledge of digital marketing, content creation, and strategy development." }); await logResult("Update Agent", "SUCCESS", `Updated agent name to: ${updatedAgent.name}`); await paymentManager.recordUsage(TEST_USER_ID, "update_agent", 0.02); return updatedAgent; } catch (error) { await logResult("Update Agent", "FAILED", error.message); throw error; } } async function testPromptAgent(agentService, paymentManager) { try { console.log("๐Ÿ’ฌ Prompting Agent..."); if (!createdAgentId) { throw new Error("No agent ID available"); } const paymentValid = await paymentManager.validatePayment(TEST_USER_ID, "prompt_agent"); if (!paymentValid) { throw new Error("Payment validation failed"); } const response = await agentService.promptAgent({ agentId: createdAgentId, message: "Create a catchy tagline for a new eco-friendly water bottle company", userId: TEST_USER_ID }); await logResult("Prompt Agent", "SUCCESS", `Agent responded: "${response.response.substring(0, 100)}..."`); await paymentManager.recordUsage(TEST_USER_ID, "prompt_agent", 0.01); return response; } catch (error) { await logResult("Prompt Agent", "FAILED", error.message); throw error; } } async function testAddUserToAgent(agentService, paymentManager) { try { console.log("๐Ÿ‘ฅ Adding User to Agent..."); if (!createdAgentId) { throw new Error("No agent ID available"); } const paymentValid = await paymentManager.validatePayment(TEST_USER_ID, "add_user_to_agent"); if (!paymentValid) { throw new Error("Payment validation failed"); } const result = await agentService.addUserToAgent(createdAgentId, "test-user-789", TEST_USER_ID); await logResult("Add User to Agent", "SUCCESS", "User access granted successfully"); await paymentManager.recordUsage(TEST_USER_ID, "add_user_to_agent", 0.005); return result; } catch (error) { await logResult("Add User to Agent", "FAILED", error.message); // Don't throw - this might fail if user doesn't exist, which is OK for testing } } async function testGetUsageReport(agentService, paymentManager) { try { console.log("๐Ÿ“Š Getting Usage Report..."); const paymentValid = await paymentManager.validatePayment(TEST_USER_ID, "get_usage_report"); if (!paymentValid) { throw new Error("Payment validation failed"); } const report = await agentService.getUsageReport(TEST_USER_ID, 30); await logResult("Get Usage Report", "SUCCESS", `Total cost: $${report.totalCost.toFixed(4)}, Records: ${report.totalInteractions}`); await paymentManager.recordUsage(TEST_USER_ID, "get_usage_report", 0.002); return report; } catch (error) { await logResult("Get Usage Report", "FAILED", error.message); throw error; } } async function testGetPricing(paymentManager) { try { console.log("๐Ÿ’ฐ Getting Pricing Info..."); const paymentValid = await paymentManager.validatePayment(TEST_USER_ID, "get_pricing"); if (!paymentValid) { throw new Error("Payment validation failed"); } // Return standard pricing structure const pricing = { pricing: { create_agent: 0.05, prompt_agent: 0.01, update_agent: 0.02, delete_agent: 0.01, list_agents: 0.001, get_agent: 0.001, add_user_to_agent: 0.005, remove_user_from_agent: 0.005, get_usage_report: 0.002, get_pricing: 0.001 } }; await logResult("Get Pricing", "SUCCESS", "Pricing information retrieved"); await paymentManager.recordUsage(TEST_USER_ID, "get_pricing", 0.001); return pricing; } catch (error) { await logResult("Get Pricing", "FAILED", error.message); throw error; } } async function testDeleteAgent(agentService, paymentManager) { try { console.log("๐Ÿ—‘๏ธ Deleting Test Agent..."); if (!createdAgentId) { throw new Error("No agent ID available"); } const paymentValid = await paymentManager.validatePayment(TEST_USER_ID, "delete_agent"); if (!paymentValid) { throw new Error("Payment validation failed"); } const result = await agentService.deleteAgent(createdAgentId, TEST_USER_ID); await logResult("Delete Agent", "SUCCESS", "Agent deleted successfully"); await paymentManager.recordUsage(TEST_USER_ID, "delete_agent", 0.01); return result; } catch (error) { await logResult("Delete Agent", "FAILED", error.message); throw error; } } async function runPracticalTests() { console.log("๐Ÿš€ Starting Practical MCP Tool Tests...\n"); // Initialize services with free tier for testing const paymentManager = new PaymentManager("none"); const agentService = new AgentService(); await paymentManager.initialize(); console.log("โœ… Services initialized\n"); try { // Test each tool in practical order await testCreateAgent(agentService, paymentManager); await testListAgents(agentService, paymentManager); await testGetAgent(agentService, paymentManager); await testUpdateAgent(agentService, paymentManager); await testPromptAgent(agentService, paymentManager); await testAddUserToAgent(agentService, paymentManager); await testGetUsageReport(agentService, paymentManager); await testGetPricing(paymentManager); await testDeleteAgent(agentService, paymentManager); } catch (error) { console.error("๐Ÿ’ฅ Test sequence stopped due to error:", error.message); } // Summary console.log("====================================="); console.log("๐ŸŽฏ PRACTICAL TEST RESULTS SUMMARY"); console.log("====================================="); const successful = testResults.filter(r => r.result === "SUCCESS").length; const failed = testResults.filter(r => r.result === "FAILED").length; console.log(`โœ… Successful: ${successful}`); console.log(`โŒ Failed: ${failed}`); console.log(`๐Ÿ“Š Total: ${testResults.length}`); if (failed === 0) { console.log("\n๐ŸŽ‰ ALL PRACTICAL TESTS PASSED!"); console.log("๐Ÿš€ Your MCP server is fully functional!"); console.log("๐Ÿ’ฐ Ready for real-world AI agent management!"); } else { console.log("\n๐Ÿ“‹ Test Details:"); testResults.forEach(({ step, result, details }) => { const icon = result === "SUCCESS" ? "โœ…" : "โŒ"; console.log(` ${icon} ${step}: ${result}`); if (details && result === "FAILED") { console.log(` ${details}`); } }); } } // Run the practical tests runPracticalTests().catch(error => { console.error("๐Ÿ’ฅ Practical test suite 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/oregpt/moluabi-mcp-server'

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