ultimate-mcp-server
Version:
The definitive all-in-one Model Context Protocol server for AI-assisted coding across 30+ platforms
202 lines • 5.12 kB
TypeScript
/**
* Performance Monitoring System
*
* Tracks metrics, performance, and provides insights
* for Ultimate MCP server operations
*/
import { EventEmitter } from 'events';
interface PerformanceMetric {
timestamp: number;
duration: number;
success: boolean;
error?: string;
}
interface ToolMetrics {
invocations: number;
totalDuration: number;
averageDuration: number;
minDuration: number;
maxDuration: number;
successRate: number;
lastUsed: number;
errors: number;
calls: number;
}
interface ModelMetrics {
requests: number;
tokens: {
input: number;
output: number;
total: number;
};
cost: number;
averageLatency: number;
errors: number;
}
export declare class PerformanceMonitor extends EventEmitter {
private toolMetrics;
private modelMetrics;
private systemMetrics;
private metricsInterval?;
constructor();
/**
* Start tracking tool execution
*/
private activeToolExecutions;
startToolExecution(toolName: string): void;
/**
* End tracking tool execution
*/
endToolExecution(toolName: string, success: boolean, error?: string): void;
/**
* Record model usage
*/
recordModelUsage(model: string, tokens: number, latency: number, success: boolean, inputTokens?: number, outputTokens?: number, cost?: number): void;
/**
* Estimate cost based on model and tokens
*/
private estimateCost;
/**
* Track tool execution
*/
trackToolExecution(toolName: string, duration: number, success: boolean, error?: string): void;
/**
* Track model usage
*/
trackModelUsage(model: string, inputTokens: number, outputTokens: number, cost: number, latency: number, success: boolean): void;
/**
* Track request lifecycle
*/
startRequest(): string;
endRequest(requestId: string): void;
/**
* Get tool metrics
*/
getToolMetrics(toolName?: string): Record<string, ToolMetrics> | ToolMetrics | null;
/**
* Calculate metrics for a tool
*/
private calculateToolMetrics;
/**
* Get model metrics
*/
getModelMetrics(model?: string): Record<string, ModelMetrics> | ModelMetrics | null;
/**
* Get performance summary
*/
getPerformanceSummary(): {
uptime: number;
totalRequests: number;
activeRequests: number;
peakActiveRequests: number;
tools: Record<string, ToolMetrics>;
models: Record<string, ModelMetrics>;
memoryUsage: {
timestamp: number;
used: number;
total: number;
};
};
/**
* Get system metrics
*/
getSystemMetrics(): {
uptime: number;
uptimeHuman: string;
totalRequests: number;
activeRequests: number;
peakActiveRequests: number;
requestsPerMinute: string;
memory: {
current: {
heapUsed: number;
heapTotal: number;
external: number;
rss: number;
};
history: {
timestamp: number;
used: number;
total: number;
}[];
};
cpu: {
history: {
timestamp: number;
usage: number;
}[];
};
};
/**
* Get cost breakdown
*/
getCostBreakdown(): {
total: number;
breakdown: Record<string, {
cost: number;
percentage: number;
}>;
byProvider: Record<string, number>;
};
/**
* Group costs by provider
*/
private groupCostByProvider;
/**
* Get performance insights
*/
getInsights(): string[];
/**
* Export metrics for analysis
*/
exportMetrics(): {
timestamp: number;
tools: {
[k: string]: PerformanceMetric[];
};
models: {
[k: string]: ModelMetrics;
};
system: {
uptime: number;
uptimeHuman: string;
totalRequests: number;
activeRequests: number;
peakActiveRequests: number;
requestsPerMinute: string;
memory: {
current: {
heapUsed: number;
heapTotal: number;
external: number;
rss: number;
};
history: {
timestamp: number;
used: number;
total: number;
}[];
};
cpu: {
history: {
timestamp: number;
usage: number;
}[];
};
};
};
/**
* Start collecting system metrics
*/
private startSystemMetricsCollection;
/**
* Format uptime
*/
private formatUptime;
/**
* Cleanup
*/
destroy(): void;
}
export {};
//# sourceMappingURL=performance-monitor.d.ts.map