@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-запуска.
74 lines • 2.91 kB
TypeScript
/**
* Тонкая обёртка над Prisma client, который **опционально** доступен.
*
* Подход:
* - Импорт `@prisma/client` (path: ../../node_modules/.prisma/mcp) делается
* лениво и в try/catch — если пакет не сгенерирован, audit/billing
* модули переходят в no-op режим.
* - Не требуем live Postgres для тестов / dev — все `prisma.*`-операции
* в тестах подменяются через `vi.mock`.
*
* Контракт:
* - `getPrisma()` возвращает либо живой client, либо null (если MCP_DATABASE_URL
* не задан или пакет не сгенерирован).
* - Идемпотентен: повторные вызовы возвращают тот же instance.
*/
import type { Logger } from 'pino';
/**
* Минимальный интерфейс клиента, который мы используем.
* Совпадает по форме с реальным Prisma client.
*/
export interface McpPrismaClient {
$disconnect(): Promise<void>;
$transaction<T>(fn: (tx: McpPrismaClient) => Promise<T>): Promise<T>;
mcpAuditLog: {
findFirst(args: {
where?: Record<string, unknown>;
orderBy?: Record<string, 'asc' | 'desc'>;
select?: Record<string, boolean>;
}): Promise<{
rowHash: string;
} | null>;
findMany(args: {
where?: Record<string, unknown>;
orderBy?: Record<string, 'asc' | 'desc'>;
select?: Record<string, boolean>;
take?: number;
skip?: number;
}): Promise<Array<Record<string, unknown>>>;
create(args: {
data: Record<string, unknown>;
}): Promise<unknown>;
};
mcpUsageDaily: {
upsert(args: {
where: Record<string, unknown>;
update: Record<string, unknown>;
create: Record<string, unknown>;
}): Promise<unknown>;
aggregate(args: {
where: Record<string, unknown>;
_sum: {
count: true;
};
}): Promise<{
_sum: {
count: bigint | null;
};
}>;
};
}
export interface PrismaInitOptions {
databaseUrl?: string;
log?: Logger;
}
/**
* Lazy init. Если пакет недоступен — возвращает null, логирует warn.
*/
export declare function getPrisma(opts?: PrismaInitOptions): Promise<McpPrismaClient | null>;
/**
* Для тестов — позволяет инжектировать mock-client.
*/
export declare function setPrismaForTests(client: McpPrismaClient | null): void;
export declare function resetPrismaForTests(): void;
//# sourceMappingURL=prisma.d.ts.map