UNPKG

@cyanheads/jinaai-mcp-server

Version:

A Model Context Protocol (MCP) server that provides intelligent web reading capabilities using the Jina AI Reader API. It extracts clean, LLM-ready content from any URL.

58 lines 2.64 kB
/** * @fileoverview Implements a stateless transport manager for the MCP SDK. * * This manager handles single, ephemeral MCP operations. For each incoming request, * it dynamically creates a temporary McpServer and transport instance, processes the * request, and then immediately schedules the resources for cleanup. This approach * is ideal for simple, one-off tool calls that do not require persistent session state. * * The key challenge addressed here is bridging the Node.js-centric MCP SDK with * modern, Web Standards-based frameworks like Hono. This is achieved by deferring * resource cleanup until the response stream has been fully consumed by the web * framework, preventing premature closure and truncated responses. * * @module src/mcp-server/transports/core/statelessTransportManager */ import type { IncomingHttpHeaders } from "http"; import { RequestContext } from "../../../utils/index.js"; import { BaseTransportManager } from "./baseTransportManager.js"; import { TransportResponse } from "./transportTypes.js"; /** * Manages ephemeral, single-request MCP operations. */ export declare class StatelessTransportManager extends BaseTransportManager { /** * Handles a single, stateless MCP request. * * This method orchestrates the creation of temporary server and transport instances, * handles the request, and ensures resources are cleaned up only after the * response stream is closed. * * @param headers - The incoming request headers. * @param body - The parsed body of the request. * @param context - The request context for logging and tracing. * @returns A promise resolving to a streaming TransportResponse. */ handleRequest(headers: IncomingHttpHeaders, body: unknown, context: RequestContext): Promise<TransportResponse>; /** * Attaches listeners to the response stream to trigger resource cleanup * only after the stream has been fully consumed or has errored. * * @param stream - The response stream bridge. * @param server - The ephemeral McpServer instance. * @param transport - The ephemeral transport instance. * @param context - The request context for logging. */ private setupDeferredCleanup; /** * Performs the actual cleanup of ephemeral resources. * This method is designed to be "fire-and-forget". */ private cleanup; /** * Shuts down the manager. For the stateless manager, this is a no-op * as there are no persistent resources to manage. */ shutdown(): Promise<void>; } //# sourceMappingURL=statelessTransportManager.d.ts.map