/** * HTTP Server Transport for MCP * * Implements HTTP transport with Server-Sent Events (SSE) for bidirectional communication. * Required for OAuth 2.1 authentication as per MCP specification. * * This transport: * - Exposes MCP over HTTP endpoints * - Provides OAuth 2.1 metadata endpoints (RFC 9728) * - Uses SSE for server-to-client messages * - Uses POST for client-to-server messages */ import { Express, Request, Response } from 'express'; import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js'; import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js'; export interface HttpServerTransportOptions { /** * Port to listen on (default: 3000) */ port?: number; /** * Host to bind to (default: '0.0.0.0') */ host?: string; /** * Base path for MCP endpoints (default: '/mcp') */ basePath?: string; /** * OAuth configuration (if enabled) */ oauth?: { resourceUri: string; authorizationServers: string[]; scopesSupported?: string[]; }; /** * Custom Express app (optional - for integration with existing apps) */ app?: Express; } /** * HTTP Server Transport * * Implements MCP protocol over HTTP with SSE for real-time communication. * Compatible with OAuth 2.1 authentication. */ export declare class HttpServerTransport implements Transport { private app; private server; private sseClients; private messageHandler?; private closeHandler?; private errorHandler?; private options; constructor(options?: HttpServerTransportOptions); /** * Setup HTTP routes for MCP protocol */ private setupRoutes; /** * Handle SSE connection for server-to-client messages */ private handleSSE; /** * Handle incoming message from client */ private handleMessage; /** * Handle OAuth Protected Resource Metadata request (RFC 9728) */ private handleProtectedResourceMetadata; /** * Start the HTTP server */ start(): Promise; /** * Send message to client(s) */ send(message: JSONRPCMessage): Promise; /** * Close the transport */ close(): Promise; /** * Set message handler */ set onmessage(handler: (message: JSONRPCMessage) => Promise); /** * Set close handler */ set onclose(handler: () => void); /** * Set error handler */ set onerror(handler: (error: Error) => void); /** * Get the Express app (for adding custom routes) */ getApp(): Express; /** * Register a custom route handler (compatible with DiscoveryHttpServer interface) * @param path - The route path * @param handler - The request handler (Node.js http.RequestListener format) */ on(path: string, handler: (req: Request, res: Response) => void): void; } //# sourceMappingURL=http-server.d.ts.map