evolution-api-mcp
Version:
MCP Server for Evolution API v2 - Integrate WhatsApp functionality with Claude Desktop and other MCP clients
77 lines (76 loc) • 2.83 kB
TypeScript
import { z } from 'zod';
import { McpError } from '../utils/error-handler';
export interface ApiResponse<T = any> {
success: boolean;
data?: T;
error?: McpError;
statusCode: number;
headers?: Record<string, string>;
}
export { ErrorType, McpError as ApiError } from '../utils/error-handler';
export interface RequestOptions {
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
path: string;
data?: any;
params?: Record<string, any>;
headers?: Record<string, string>;
timeout?: number;
retries?: number;
}
export interface HttpClientConfig {
baseURL: string;
apiKey: string;
timeout?: number;
retryAttempts?: number;
retryDelay?: number;
maxRetryDelay?: number;
enableLogging?: boolean;
}
export declare const HttpClientConfigSchema: z.ZodObject<{
baseURL: z.ZodString;
apiKey: z.ZodString;
timeout: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
retryAttempts: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
retryDelay: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
maxRetryDelay: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
enableLogging: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
}, "strip", z.ZodTypeAny, {
timeout: number;
retryAttempts: number;
retryDelay: number;
baseURL: string;
apiKey: string;
maxRetryDelay: number;
enableLogging: boolean;
}, {
baseURL: string;
apiKey: string;
timeout?: number | undefined;
retryAttempts?: number | undefined;
retryDelay?: number | undefined;
maxRetryDelay?: number | undefined;
enableLogging?: boolean | undefined;
}>;
export declare class EvolutionHttpClient {
private axiosInstance;
private config;
private requestCount;
private errorHandler;
constructor(config: HttpClientConfig);
private setupInterceptors;
private createApiError;
private executeWithRetry;
private delay;
request<T = any>(options: RequestOptions): Promise<ApiResponse<T>>;
get<T = any>(path: string, params?: Record<string, any>, options?: Partial<RequestOptions>): Promise<ApiResponse<T>>;
post<T = any>(path: string, data?: any, params?: Record<string, any>, options?: Partial<RequestOptions>): Promise<ApiResponse<T>>;
put<T = any>(path: string, data?: any, params?: Record<string, any>, options?: Partial<RequestOptions>): Promise<ApiResponse<T>>;
delete<T = any>(path: string, params?: Record<string, any>, options?: Partial<RequestOptions>): Promise<ApiResponse<T>>;
patch<T = any>(path: string, data?: any, params?: Record<string, any>, options?: Partial<RequestOptions>): Promise<ApiResponse<T>>;
updateConfig(updates: Partial<HttpClientConfig>): void;
getConfig(): HttpClientConfig;
healthCheck(): Promise<ApiResponse<any>>;
getStats(): {
requestCount: number;
};
}