muppet
Version:
Toolkit for building MCPs on Honojs
52 lines (49 loc) • 2.04 kB
TypeScript
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 };