UNPKG

@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
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