UNPKG

muppet

Version:

Toolkit for building MCPs on Honojs

52 lines (49 loc) 2.04 kB
import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js'; import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js'; import { Context } from 'hono'; import { SSEStreamingApi } from 'hono/streaming'; /** * Hono transport for SSE: this will send messages over an SSE connection and receive messages from HTTP POST requests. * * This can work in all the environments that support SSE with Hono. */ declare class SSEHonoTransport implements Transport { private _endpoint; private stream; private _stream?; private _sessionId; onclose?: () => void; onerror?: (error: Error) => void; onmessage?: (message: JSONRPCMessage) => void; /** * Creates a new SSE server transport, which will direct the client to POST messages to the relative or absolute URL identified by `_endpoint`. */ constructor(_endpoint: string, sessionId?: string); connectWithStream(stream: SSEStreamingApi): void; /** * Handles the initial SSE connection request. * * This should be called when a GET request is made to establish the SSE stream. */ start(): Promise<void>; /** * Handles incoming POST messages. * * This should be called when a POST request is made to send a message to the server. */ handlePostMessage(c: Context, parsedBody?: unknown): Promise<void>; /** * Handle a client message, regardless of how it arrived. This can be used to inform the server of messages that arrive via a means different than HTTP POST. */ handleMessage(message: unknown): Promise<void>; close(): Promise<void>; send(message: JSONRPCMessage): Promise<void>; /** * Returns the session ID for this transport. * * This can be used to route incoming POST requests. */ get sessionId(): string; } declare const streamSSE: (c: Context, cb: (stream: SSEStreamingApi) => Promise<void>, onError?: (e: Error, stream: SSEStreamingApi) => Promise<void>) => Response; export { SSEHonoTransport, streamSSE };