@inso_web/els-mcp
Version:
MCP-сервер поверх INSO Error Logs Service. Read-only tools (search, analytics, fingerprinting, correlations) для подключения Claude Desktop/Code и ChatGPT к логам ошибок. Streamable HTTP transport + stdio для npx-запуска.
51 lines • 2.37 kB
TypeScript
/**
* Унифицированный класс ошибок для всех ELS-запросов и tool handler'ов.
*
* Мапится 1-в-1 в MCP-стандартный error shape:
* { isError: true, content: [{ type: 'text', text: <msg> }],
* _meta: { code, retryAfter?, suggestedAction? } }
*
* Коды:
* - RATE_LIMITED — 429 от ELS
* - UPSTREAM_UNAVAILABLE — 5xx от ELS (после retry)
* - INVALID_ARGS — 400 от ELS, либо локальная валидация
* - NOT_FOUND — 404 (отсутствует traceId, app и т.д.)
* - INSUFFICIENT_SCOPE — 403 от ELS
* - QUOTA_EXCEEDED — generic квота (legacy)
* - TIER_QUOTA_EXCEEDED — основной дневной лимит tier'а
* - AI_QUOTA_EXCEEDED — отдельная AI-квота для AI-tools
* - INTERNAL — fallback для непредвиденных ситуаций
*/
export type ToolErrorCode = 'RATE_LIMITED' | 'UPSTREAM_UNAVAILABLE' | 'INVALID_ARGS' | 'NOT_FOUND' | 'INSUFFICIENT_SCOPE' | 'QUOTA_EXCEEDED' | 'TIER_QUOTA_EXCEEDED' | 'AI_QUOTA_EXCEEDED' | 'INTERNAL';
export declare class ToolError extends Error {
readonly code: ToolErrorCode;
readonly retryAfter?: number;
readonly suggestedAction?: string;
readonly meta?: Record<string, unknown>;
constructor(code: ToolErrorCode, message: string, options?: {
retryAfter?: number;
suggestedAction?: string;
meta?: Record<string, unknown>;
cause?: unknown;
});
/**
* Сериализация в MCP-tool error response.
*/
toToolResult(): {
isError: true;
content: Array<{
type: 'text';
text: string;
}>;
structuredContent: Record<string, unknown>;
_meta: Record<string, unknown>;
};
}
/**
* Преобразовать HTTP-статус и тело ответа ELS в ToolError.
*
* `body` приходит как уже-распарсенный JSON (или string, если parse не удался).
* `retryAfterHeader` — содержимое заголовка Retry-After (секунды).
*/
export declare function mapHttpToToolError(status: number, body: unknown, retryAfterHeader?: string | null): ToolError;
//# sourceMappingURL=errors.d.ts.map