UNPKG

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
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; }