Skip to main content
Glama
dumyCq

Jinko Hotel Booking MCP Server

by dumyCq
middleware.ts2.26 kB
/** * Unified telemetry middleware for MCP tool metrics collection */ import { UnifiedMetrics } from './unified-telemetry.js'; export interface ToolExecutionContext { toolName: string; params: any; startTime: number; } export class TelemetryMiddleware { private metrics: UnifiedMetrics; constructor(metrics: UnifiedMetrics) { this.metrics = metrics; } /** * Wrap a tool function with metrics collection */ instrumentTool<T extends (...args: any[]) => Promise<any>>( toolName: string, toolFunction: T ): T { return (async (...args: any[]) => { const startTime = Date.now(); try { const result = await toolFunction.apply(this, args); const duration_ms = Date.now() - startTime; this.metrics.recordToolCall(toolName, duration_ms, 'success'); return result; } catch (error) { const duration_ms = Date.now() - startTime; this.metrics.recordToolCall(toolName, duration_ms, 'error'); throw error; } }) as T; } /** * Create a tool execution context for manual instrumentation */ createToolContext(toolName: string, params: any): ToolExecutionContext { return { toolName, params, startTime: Date.now(), }; } /** * Complete a tool execution context */ completeToolContext(context: ToolExecutionContext, result?: any, error?: Error): void { const duration_ms = Date.now() - context.startTime; const status = error ? 'error' : 'success'; this.metrics.recordToolCall(context.toolName, duration_ms, status); } /** * Record API call metrics */ recordApiCall(endpoint: string, method: string, duration_ms: number, status: string): void { this.metrics.recordApiCall(endpoint, method, duration_ms, status); } /** * Record hotel search results count */ recordHotelSearchResults(hotelCount: number): void { this.metrics.recordHotelSearchResults(hotelCount); } /** * Record hotel search call with detailed labels */ recordHotelSearchCall(params: { location_name?: string; check_in_date: string; nights: number; total_travelers: number; status: string; }): void { this.metrics.recordHotelSearchCall(params); } }

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/dumyCq/jinko-mcp'

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