| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /**
- * QMD MCP Server - Model Context Protocol server for QMD
- *
- * Exposes QMD search and document retrieval as MCP tools and resources.
- * Documents are accessible via qmd:// URIs.
- *
- * Follows MCP spec 2025-06-18 for proper response types.
- */
- /**
- * Periodically check this MCP process's RSS and exit cleanly when it
- * crosses a configurable ceiling, so the parent (Claude Code stdio
- * client, pm2, systemd, etc.) can respawn a fresh process. Contains
- * the blast radius of memory leaks in the search/expansion path
- * without requiring a full re-architecture.
- *
- * Configuration:
- * QMD_MCP_RSS_LIMIT_BYTES — ceiling in bytes. Default 0 (disabled).
- * Set to e.g. `2147483648` (2 GiB) to opt in.
- * QMD_MCP_RSS_CHECK_INTERVAL_MS — poll interval. Default 60000 (60s).
- *
- * Default-off so we can ship the diagnostic + pragma fix safely and
- * graduate the supervisor on once we have soak data showing no
- * false positives. Operators can opt in immediately by exporting
- * `QMD_MCP_RSS_LIMIT_BYTES=2147483648` in their MCP launcher env.
- */
- export type RssSupervisorHandle = {
- stop: () => void;
- /** Snapshot the most recent RSS reading (test hook). */
- lastRss: () => number;
- };
- export interface RssSupervisorOptions {
- /** RSS ceiling in bytes. 0 disables. */
- limitBytes?: number;
- /** Polling cadence in ms. Default 60000. */
- intervalMs?: number;
- /** Override RSS reader for tests. */
- readRss?: () => number;
- /** Override exit hook for tests. */
- onExceeded?: (rss: number, limit: number) => void;
- /** Override stderr writer for tests. */
- log?: (line: string) => void;
- }
- export declare function startRssSupervisor(opts?: RssSupervisorOptions): RssSupervisorHandle | null;
- export declare function startMcpServer(): Promise<void>;
- export type HttpServerHandle = {
- httpServer: import("http").Server;
- port: number;
- stop: () => Promise<void>;
- };
- /**
- * Start MCP server over Streamable HTTP (JSON responses, no SSE).
- * Binds to localhost only. Returns a handle for shutdown and port discovery.
- */
- export declare function startMcpHttpServer(port: number, options?: {
- quiet?: boolean;
- }): Promise<HttpServerHandle>;
|