@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-запуска.
43 lines • 1.95 kB
TypeScript
import { type Express, type Request, type Response, type NextFunction } from 'express';
import type { Logger } from 'pino';
import type { Config } from '../config.js';
import { ElsClient } from '../elsClient.js';
import { HttpTransportManager } from '../transports/http.js';
import { createJwksResolver } from './jwks.js';
import type { RedisService } from '../cache/redis.js';
import type { MiddlewareDeps } from '../middleware/withMiddleware.js';
import type { LkResolver } from './lkResolver.js';
/**
* Создаёт Express-приложение для Streamable HTTP transport.
*
* Структура:
* - `/els/healthz`, `/els/readyz` — public, без auth
* - `/els/metrics` — public, Prometheus (отключаемо через MCP_METRICS_ENABLED=false)
* - `/els/.well-known/*` — public, без auth
* - `/els/mcp` — требует Bearer (ELS-key или OIDC JWT), + originGuard
*
* Возвращает app + manager (нужен для graceful shutdown).
*/
export interface CreateHttpAppOptions {
config: Config;
log: Logger;
/** Для тестов: ManaualTransportManager / mock JWKS. */
transportManager?: HttpTransportManager;
jwksResolver?: ReturnType<typeof createJwksResolver>;
/** Для тестов: внешний ElsClient (probe). */
probeElsClient?: ElsClient;
/** Redis для readyz / cache / DCR. */
redis?: RedisService | null;
/** Middleware deps (передаём в transport manager). */
middlewareDeps?: MiddlewareDeps;
/** LK resolver для OIDC sub → apps (передаётся в auth middleware). */
lkResolver?: LkResolver | null;
}
export interface HttpAppHandle {
app: Express;
manager: HttpTransportManager;
probeClient: ElsClient | undefined;
}
export declare function createHttpApp(opts: CreateHttpAppOptions): HttpAppHandle;
export type { NextFunction, Request, Response };
//# sourceMappingURL=app.d.ts.map