mcp-smart
Version:
MCP server providing multi-advisor AI consultations via OpenRouter API with advanced caching, rate limiting, and security features
107 lines (106 loc) • 2.92 kB
TypeScript
declare enum CircuitBreakerState {
CLOSED = "CLOSED",
OPEN = "OPEN",
HALF_OPEN = "HALF_OPEN"
}
interface CacheMetrics {
hits: number;
misses: number;
evictions: number;
totalRequests: number;
hitRate: number;
}
interface CircuitBreakerMetrics {
failures: number;
successes: number;
state: CircuitBreakerState;
lastFailureTime: number;
consecutiveFailures: number;
totalRequests: number;
}
export declare class SmartAdvisorServer {
private server;
private config;
private requestCache;
private cacheMetrics;
private logger;
private rateLimitTracker;
private startTime;
private circuitBreakers;
constructor();
private initializeCircuitBreakers;
private loadConfig;
private validateInput;
private sanitizeInput;
private checkRateLimit;
private setupToolHandlers;
listTools(): Promise<{
tools: {
name: string;
description: string;
inputSchema: {
type: string;
properties: {
model: {
type: string;
enum: string[];
description: string;
};
task: {
type: string;
description: string;
};
context: {
type: string;
description: string;
};
};
required: string[];
};
}[];
}>;
callTool(name: string, args: any): Promise<{
content: {
type: string;
text: string;
}[];
}>;
private consultAllAdvisors;
private getCachedResponse;
private setCachedResponse;
private evictLeastRecentlyUsed;
private updateCacheHitRate;
getCacheMetrics(): CacheMetrics;
private routeToOptimalProvider;
getHealthCheck(): {
status: 'healthy' | 'degraded' | 'unhealthy';
timestamp: string;
uptime: number;
cache: {
size: number;
hitRate: number;
evictions: number;
};
rateLimit: {
activeWindows: number;
};
circuitBreakers: Record<string, {
state: CircuitBreakerState;
failures: number;
successRate: number;
}>;
version: string;
};
getCircuitBreakerMetrics(): Record<string, CircuitBreakerMetrics>;
resetCircuitBreaker(provider: string): boolean;
resetAllCircuitBreakers(): void;
private callOpenRouterWithRetry;
private getProviderFromModel;
private attemptFallbackProvider;
private callOpenRouterWithRetryFallback;
private delay;
private callOpenRouter;
private formatMultiAdvisorResponse;
run(): Promise<void>;
}
export {};