pms-analysis-reports-mcp-server
Version:
PMS analysis reports server handling maintenance reports, equipment analysis, compliance tracking, and performance metrics with ERP access for data extraction
102 lines (101 loc) • 2.58 kB
TypeScript
import { AxiosRequestConfig } from 'axios';
import { BaseService, ServiceConfig, ServiceResponse } from "./base-service.js";
export interface ExternalApiConfig extends ServiceConfig {
baseURL?: string;
apiKey?: string;
headers?: Record<string, string>;
rateLimit?: {
requests: number;
windowMs: number;
};
}
export interface ApiRequest {
url: string;
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
data?: any;
params?: Record<string, any>;
headers?: Record<string, string>;
}
export interface RateLimitState {
requests: number;
windowStart: number;
blocked: boolean;
}
export declare class ExternalApiService extends BaseService {
private apiConfig;
private client;
private rateLimit?;
private rateLimitState;
constructor(apiConfig: ExternalApiConfig);
/**
* Make a GET request
*/
get<T = any>(url: string, params?: Record<string, any>, config?: AxiosRequestConfig): Promise<ServiceResponse<T>>;
/**
* Make a POST request
*/
post<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ServiceResponse<T>>;
/**
* Make a PUT request
*/
put<T = any>(url: string, data?: any, config?: AxiosRequestConfig): Promise<ServiceResponse<T>>;
/**
* Make a DELETE request
*/
delete<T = any>(url: string, config?: AxiosRequestConfig): Promise<ServiceResponse<T>>;
/**
* Generic request method
*/
private makeRequest;
/**
* Check rate limiting
*/
private checkRateLimit;
/**
* Sanitize request to prevent injection attacks
*/
private sanitizeRequest;
/**
* Sanitize HTTP headers
*/
private sanitizeHeaders;
/**
* Handle request interceptor
*/
private handleRequest;
/**
* Handle request error
*/
private handleRequestError;
/**
* Handle response interceptor
*/
private handleResponse;
/**
* Handle response error
*/
private handleResponseError;
/**
* Health check implementation
*/
healthCheck(): Promise<boolean>;
/**
* Get rate limit status
*/
getRateLimitStatus(): {
enabled: boolean;
requests: number;
limit: number;
windowMs: number;
blocked: boolean;
resetTime?: number;
};
/**
* Reset rate limit (useful for testing)
*/
resetRateLimit(): void;
/**
* Update API configuration
*/
updateConfig(config: Partial<ExternalApiConfig>): void;
}