@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-запуска.
120 lines • 6.05 kB
TypeScript
import { z } from 'zod';
export declare const TransportSchema: z.ZodEnum<["stdio", "http"]>;
export type Transport = z.infer<typeof TransportSchema>;
export declare const ConfigSchema: z.ZodObject<{
/**
* ELS API key для stdio transport / fallback. В HTTP-режиме ключ берётся
* из заголовка `Authorization: Bearer els_...` запроса.
*/
elsApiKey: z.ZodDefault<z.ZodString>;
elsBaseUrl: z.ZodString;
logLevel: z.ZodDefault<z.ZodEnum<["trace", "debug", "info", "warn", "error", "fatal"]>>;
disabledTools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
/**
* Таймаут upstream-запроса в ELS, мс. Единый таймаут на все ELS-вызовы;
* AI-tools при появлении получат отдельный (более длинный).
*/
upstreamTimeoutMs: z.ZodDefault<z.ZodNumber>;
transport: z.ZodDefault<z.ZodEnum<["stdio", "http"]>>;
httpPort: z.ZodDefault<z.ZodNumber>;
oidcIssuer: z.ZodDefault<z.ZodString>;
oidcJwksUrl: z.ZodString;
oidcAudience: z.ZodDefault<z.ZodString>;
/**
* Fallback appSlug: используется когда LK resolver
* `GET /api/internal/users/{sub}/apps` недоступен (404/500/timeout) или
* для всех OIDC-юзеров до его реализации.
*/
oidcDemoAppSlug: z.ZodOptional<z.ZodString>;
publicUrl: z.ZodDefault<z.ZodString>;
corsOrigins: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
/** Включена ли PII-редакция в ответах tools. */
redactionEnabled: z.ZodDefault<z.ZodBoolean>;
/** Whitelist полей для редакции (пусто → редактим все известные). */
redactionFields: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
/** Postgres connection для audit/usage. Если пусто — модули в no-op. */
mcpDatabaseUrl: z.ZodOptional<z.ZodString>;
/** AppId по умолчанию (для stdio-mode, когда контекст не задан). */
defaultAppId: z.ZodDefault<z.ZodString>;
/** Tier по умолчанию (для stdio-mode / прокси-режима). */
defaultTier: z.ZodDefault<z.ZodEnum<["FREE", "STANDARD", "PREMIUM", "UNLIMITED"]>>;
/**
* LK API base URL (для резолва apps по OIDC sub и tier по appSlug).
* Если пустой — используются fallbacks (oidcDemoAppSlug, defaultTier).
* TODO: ожидаемые эндпоинты на LK:
* GET {lkApiBaseUrl}/api/internal/users/{sub}/apps — список appSlugs
* GET {lkApiBaseUrl}/api/internal/apps/{slug}/billing/tier — tier name
*/
lkApiBaseUrl: z.ZodOptional<z.ZodString>;
/** Internal-API service-token для авторизации в LK (если требуется). */
lkApiToken: z.ZodOptional<z.ZodString>;
/** Redis URL для cache layer. */
redisUrl: z.ZodDefault<z.ZodString>;
/** Включить cache layer. Если false — методы CachedElsClient прозрачно прокидываются в ElsClient. */
cacheEnabled: z.ZodDefault<z.ZodBoolean>;
/**
* Per-class TTL overrides. Ключи — имена CacheClass из `cache/policies.ts`.
* Значения — секунды (целые ≥ 0; 0 эффективно отключает кэш для класса).
* Source ENV: `MCP_CACHE_TTL_OVERRIDE_<CLASS>` (напр. `MCP_CACHE_TTL_OVERRIDE_LOG_DETAILS=7200`).
*/
cacheTtlOverrides: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodNumber>>;
/** Включить Prometheus metrics endpoint (`/els/metrics`). */
metricsEnabled: z.ZodDefault<z.ZodBoolean>;
/** OTLP endpoint для OpenTelemetry traces. Если не задан — tracing disabled. */
otelExporterOtlpEndpoint: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
elsApiKey: string;
elsBaseUrl: string;
logLevel: "fatal" | "error" | "warn" | "info" | "debug" | "trace";
disabledTools: string[];
upstreamTimeoutMs: number;
transport: "stdio" | "http";
httpPort: number;
oidcIssuer: string;
oidcJwksUrl: string;
oidcAudience: string;
publicUrl: string;
corsOrigins: string[];
redactionEnabled: boolean;
redactionFields: string[];
defaultAppId: string;
defaultTier: "FREE" | "STANDARD" | "PREMIUM" | "UNLIMITED";
redisUrl: string;
cacheEnabled: boolean;
cacheTtlOverrides: Record<string, number>;
metricsEnabled: boolean;
oidcDemoAppSlug?: string | undefined;
mcpDatabaseUrl?: string | undefined;
lkApiBaseUrl?: string | undefined;
lkApiToken?: string | undefined;
otelExporterOtlpEndpoint?: string | undefined;
}, {
elsBaseUrl: string;
oidcJwksUrl: string;
elsApiKey?: string | undefined;
logLevel?: "fatal" | "error" | "warn" | "info" | "debug" | "trace" | undefined;
disabledTools?: string[] | undefined;
upstreamTimeoutMs?: number | undefined;
transport?: "stdio" | "http" | undefined;
httpPort?: number | undefined;
oidcIssuer?: string | undefined;
oidcAudience?: string | undefined;
oidcDemoAppSlug?: string | undefined;
publicUrl?: string | undefined;
corsOrigins?: string[] | undefined;
redactionEnabled?: boolean | undefined;
redactionFields?: string[] | undefined;
mcpDatabaseUrl?: string | undefined;
defaultAppId?: string | undefined;
defaultTier?: "FREE" | "STANDARD" | "PREMIUM" | "UNLIMITED" | undefined;
lkApiBaseUrl?: string | undefined;
lkApiToken?: string | undefined;
redisUrl?: string | undefined;
cacheEnabled?: boolean | undefined;
cacheTtlOverrides?: Record<string, number> | undefined;
metricsEnabled?: boolean | undefined;
otelExporterOtlpEndpoint?: string | undefined;
}>;
export type Config = z.infer<typeof ConfigSchema>;
export declare function loadConfig(env?: NodeJS.ProcessEnv): Config;
//# sourceMappingURL=config.d.ts.map