Skip to main content
Glama

Streamable HTTP Bridge

by masx200
Mulan Permissive Software License, Version 2
2
  • Linux
  • Apple
WebSocketServerTransport.d.ts3.97 kB
import type { Transport, TransportSendOptions } from "@modelcontextprotocol/sdk/shared/transport.js"; import { type JSONRPCMessage, type MessageExtraInfo } from "@modelcontextprotocol/sdk/types.js"; import { WebSocket } from "ws"; import type { ServerOptions } from "ws"; import type { IncomingMessage } from "node:http"; /** * Configuration options for WebSocketServerTransport */ export interface WebSocketServerTransportOptions extends ServerOptions { /** * Function that generates a session ID for the transport. * The session ID SHOULD be globally unique and cryptographically secure (e.g., a securely generated UUID, a JWT, or a cryptographic hash) * * Return undefined to disable session management. */ sessionIdGenerator?: (() => string) | undefined; /** * A callback for session initialization events * This is called when the server initializes a new session. * Useful in cases when you need to register multiple mcp sessions * and need to keep track of them. * @param sessionId The generated session ID */ onsessioninitialized?: (sessionId: string) => void | Promise<void>; /** * A callback for session close events * This is called when the server closes a session. * Useful in cases when you need to clean up resources associated with the session. * @param sessionId The session ID that was closed */ onsessionclosed?: (sessionId: string) => void | Promise<void>; /** * 监听端口,默认 3000 */ port?: number; /** * 监听 host,默认 'localhost' */ host?: string; /** * 连接建立后的额外回调 */ onOpen?: (socket: WebSocket) => void; onConnection?: (socket: WebSocket) => void; onClose?: (socket: WebSocket) => void; onError?: (error: Error) => void; onMessage?: (message: JSONRPCMessage, extra?: MessageExtraInfo) => void; /** * List of allowed origin header values for DNS rebinding protection. * If not specified, origin validation is disabled. */ allowedOrigins?: string[]; /** * Enable DNS rebinding protection (requires allowedOrigins to be configured). * Default is false for backwards compatibility. */ enableDnsRebindingProtection?: boolean; } /** * Server transport for WebSocket: this implements the MCP WebSocket transport specification. * It supports session management and follows the same patterns as StreamableHTTPServerTransport. * * Usage example: * * ```typescript * // Stateful mode - server sets the session ID * const statefulTransport = new WebSocketServerTransport({ * sessionIdGenerator: () => randomUUID(), * port: 8080 * }); * * // Stateless mode - explicitly set session ID to undefined * const statelessTransport = new WebSocketServerTransport({ * sessionIdGenerator: undefined, * port: 8080 * }); * ``` * * In stateful mode: * - Session ID is generated and managed * - Session validation is performed * - State is maintained in-memory (connections, message history) * * In stateless mode: * - No session ID is generated * - No session validation is performed */ export declare class WebSocketServerTransport implements Transport { ws: WebSocket; request: IncomingMessage; options: WebSocketServerTransportOptions; private started; constructor(ws: WebSocket, request: IncomingMessage, options: WebSocketServerTransportOptions); start(): Promise<void>; send(message: JSONRPCMessage, options?: TransportSendOptions | undefined): Promise<void>; close(): Promise<void>; onclose?: (() => void) | undefined; onerror?: ((error: Error) => void) | undefined; onmessage?: ((message: JSONRPCMessage, extra?: MessageExtraInfo | undefined) => void) | undefined; sessionId?: string | undefined; setProtocolVersion?: ((version: string) => void) | undefined; } //# sourceMappingURL=WebSocketServerTransport.d.ts.map

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/masx200/mcp-demo-streamable-http-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server