Skip to main content
Glama

MCP Test Server

by yvanfreitas
mcp-server.js2.75 kB
#!/usr/bin/env node import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { ListToolsRequestSchema, CallToolRequestSchema, ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js'; // Import domain services import { UserService, userToolSchemas } from './src/domains/users.js'; import { TaskService, taskToolSchemas } from './src/domains/tasks.js'; import { SearchService, searchToolSchema } from './src/domains/search.js'; import { createMcpResponse } from './src/utils/mcpResponse.js'; class MCPTestServer { constructor() { this.server = new Server( { name: 'mcp-test-server', version: '1.0.0', }, { capabilities: { tools: {}, }, } ); this.setupToolHandlers(); this.setupErrorHandling(); } setupToolHandlers() { // List available tools this.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ ...userToolSchemas, ...taskToolSchemas, searchToolSchema ] }; }); // Handle tool calls this.server.setRequestHandler(CallToolRequestSchema, async (request) => { const { name, arguments: args } = request.params; try { switch (name) { case 'get_users': return createMcpResponse(UserService.getAll(args)); case 'get_user': return createMcpResponse(UserService.getById(args.id)); case 'create_user': return createMcpResponse(UserService.create(args)); case 'get_tasks': return createMcpResponse(TaskService.getAll(args)); case 'create_task': return createMcpResponse(TaskService.create(args)); case 'search': return createMcpResponse(SearchService.search(args.query)); default: throw new McpError( ErrorCode.MethodNotFound, `Unknown tool: ${name}` ); } } catch (error) { throw new McpError( ErrorCode.InternalError, `Error executing tool ${name}: ${error.message}` ); } }); } setupErrorHandling() { this.server.onerror = (error) => { console.error('[MCP Error]', error); }; process.on('SIGINT', async () => { await this.server.close(); process.exit(0); }); } async run() { const transport = new StdioServerTransport(); await this.server.connect(transport); console.error('MCP Test Server running on stdio'); } } // Start the server const server = new MCPTestServer(); server.run().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/yvanfreitas/MCP-test'

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