Skip to main content
Glama
Gowtham-3004

MCP Kynhood Events Server

by Gowtham-3004
index.ts3.09 kB
#!/usr/bin/env node /** * MCP Server for Kynhood Events API * * This server provides tools for Claude Desktop to interact with the Kynhood Events API: * - listEvents: List events with pagination * - getEventById: Get detailed event information */ import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { CallToolRequestSchema, ListToolsRequestSchema, Tool } from '@modelcontextprotocol/sdk/types.js'; import dotenv from 'dotenv'; import { logger } from './utils/logger.js'; import { listEventsTool, listEventsToolDefinition, ListEventsInput } from './tools/listEvents.js'; import { getEventByIdTool, getEventByIdToolDefinition, GetEventByIdInput } from './tools/getEventById.js'; // Load environment variables dotenv.config(); // Validate required environment variables const API_BASE_URL = process.env.API_BASE_URL; logger.info('Starting MCP Kynhood Events Server', { API_BASE_URL }); // Create MCP server instance const server = new Server( { name: 'mcp-kynhood-events', version: '1.0.0' }, { capabilities: { tools: {} } } ); // Define available tools const tools: Tool[] = [ listEventsToolDefinition as Tool, getEventByIdToolDefinition as Tool ]; // Handle ListTools request server.setRequestHandler(ListToolsRequestSchema, async () => { logger.debug('ListTools request received'); return { tools }; }); // Handle CallTool request server.setRequestHandler(CallToolRequestSchema, async (request) => { const { name, arguments: args } = request.params; logger.info(`Tool called: ${name}`, args); try { switch (name) { case 'listEvents': { const input = args as ListEventsInput; const result = await listEventsTool(input); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) } ] }; } case 'getEventById': { const input = args as GetEventByIdInput; const result = await getEventByIdTool(input); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2) } ] }; } default: throw new Error(`Unknown tool: ${name}`); } } catch (error) { logger.error(`Tool execution failed: ${name}`, error); const errorMessage = error instanceof Error ? error.message : String(error); return { content: [ { type: 'text', text: JSON.stringify({ error: errorMessage, tool: name }, null, 2) } ], isError: true }; } }); // Start server async function main() { try { const transport = new StdioServerTransport(); await server.connect(transport); logger.info('MCP Kynhood Events Server running on stdio'); } catch (error) { logger.error('Failed to start server', error); process.exit(1); } } main();

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/Gowtham-3004/mcp-kyn-event'

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