Skip to main content
Glama
Gowtham-3004

MCP Kynhood Events Server

by Gowtham-3004
README.md6.39 kB
# MCP Kynhood Events Server A Model Context Protocol (MCP) server that enables Claude Desktop to interact with the Kynhood Events API. This server provides tools for listing events and retrieving detailed event information. ## Features - **Automatic Token Management**: Fetches and caches guest tokens automatically - **Smart Retry Logic**: Handles 401 errors by refreshing tokens - **Type-Safe**: Built with TypeScript for robust error handling - **Production-Ready**: Comprehensive logging and error handling ## Tools Available ### 1. `listEvents` List events from the Kynhood API with pagination support. **Parameters:** - `skip` (optional, default: 0): Number of events to skip - `limit` (optional, default: 10): Maximum number of events to return **Returns:** Array of events with metadata ### 2. `getEventById` Get detailed information about a specific event. **Parameters:** - `id` (required): The event ID (24-character hex string) **Returns:** Complete event details ## Installation ### Prerequisites - Node.js 18+ - npm or yarn - Claude Desktop app ### Steps 1. **Clone or create the project directory:** ```bash mkdir mcp-kynhood-events cd mcp-kynhood-events ``` 2. **Install dependencies:** ```bash npm install ``` 3. **Configure environment (optional):** ```bash cp .env.example .env ``` Edit `.env` if you need to customize settings: ```env API_BASE_URL=https://***.****.com/api DEFAULT_SKIP=0 DEFAULT_LIMIT=10 DEBUG=false ``` ## Running the Server ### Development Mode ```bash npm start ``` ### Build TypeScript ```bash npm run build ``` ### Watch Mode (Auto-restart) ```bash npm run dev ``` ## Connecting to Claude Desktop ### Configuration Add this server to your Claude Desktop configuration file: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` ```json { "mcpServers": { "kynhood-events": { "command": "node", "args": [ "G:\\projects\\mcp\\event\\dist\\index.js" ], "env": { "API_BASE_URL": "https://***.****.com/api" } } } } ``` **Alternative: Using TypeScript directly (no build required):** ```json { "mcpServers": { "kynhood-events": { "command": "npx", "args": [ "-y", "tsx", "G:\\projects\\mcp\\event\\src\\index.ts" ], "env": { "API_BASE_URL": "https://***.****.com/api" } } } } ``` **Note**: Update the path to match your actual installation directory. ### Restart Claude Desktop After updating the configuration, completely quit and restart Claude Desktop for changes to take effect. ## Usage Examples Once connected to Claude Desktop, you can use natural language to interact with the Kynhood Events API: ### Example Queries **List trending events:** ``` Show me the latest events from Kynhood ``` **Get specific event details:** ``` Get details for event 68cd87381ea5 ``` **List with pagination:** ``` Show me events 10-20 from Kynhood (skip 10, limit 10) ``` **Multiple operations:** ``` List the first 5 events, then show me details for the first one ``` ## Architecture ### Project Structure ``` mcp-kynhood-events/ ├── src/ │ ├── index.ts # MCP server entry point │ ├── api/ │ │ ├── token.ts # Token fetching logic │ │ └── events.ts # Events API calls │ ├── tools/ │ │ ├── listEvents.ts # List events tool │ │ └── getEventById.ts # Get event by ID tool │ └── utils/ │ ├── http.ts # HTTP client with retry logic │ ├── logger.ts # Logging utility │ └── tokenCache.ts # In-memory token cache ├── package.json ├── tsconfig.json └── README.md ``` ### Token Management Flow 1. **First Request**: Server checks token cache (empty) 2. **Fetch Token**: Calls `GET /api/token` to get guest token 3. **Cache Token**: Stores token with 55-minute TTL 4. **Use Token**: Attaches to all subsequent API requests 5. **Handle 401**: If token expires, automatically fetches new token and retries ### Error Handling - **Network Errors**: Logged and returned to Claude with context - **401 Unauthorized**: Automatically retries once with fresh token - **Invalid Responses**: Validates response structure and provides meaningful errors - **Missing Parameters**: Validates required parameters before API calls ## API Endpoints Used ### 1. Get Guest Token ``` GET https://***.****.com/api/token ``` Returns JWT token for guest authentication. ### 2. List Events ``` POST https://***.****.com/api/events?skip=0&limit=10 Authorization: Bearer <token> Body: {} ``` Returns paginated list of events. ### 3. Get Event by ID ``` GET https://***.****.com/api/events/:eventId Authorization: Bearer <token> ``` Returns detailed event information. ## Development ### Adding New Tools 1. Create tool file in `src/tools/` 2. Define input/output interfaces 3. Implement tool function 4. Export tool definition 5. Register in `src/index.ts` ### Debugging Enable debug logging: ```env DEBUG=true ``` Logs are output to stderr (visible in Claude Desktop logs). ## Troubleshooting ### Server Not Appearing in Claude Desktop 1. Check configuration file path is correct 2. Verify JSON syntax in `claude_desktop_config.json` 3. Ensure file paths use absolute paths 4. Restart Claude Desktop completely ### Token Errors - Server automatically handles token refresh - Check API_BASE_URL is correct - Verify network connectivity to api.kynhood.com ### Build Errors ```bash # Clean and reinstall rm -rf node_modules dist npm install npm run build ``` ## Testing the API Manually You can test the Kynhood API endpoints directly: ```bash # Get token curl https://***.****.com/api/token # List events (replace TOKEN with actual token) curl -X POST "https://***.****.com/api/events?skip=0&limit=10" \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json" \ -d "{}" # Get event by ID curl "https://***.****.com/api/events/68cd8a9496a5" \ -H "Authorization: Bearer TOKEN" ``` ## License MIT ## Support For issues or questions: - Check the logs in Claude Desktop - Verify API connectivity: `curl https://***.****.com/api/token` - Review this README for configuration steps

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