mcp-proxy
Version:
A TypeScript SSE proxy for MCP servers that use stdio transport.
48 lines (43 loc) • 1.49 kB
TypeScript
import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
import { JSONRPCMessage, ServerCapabilities } from '@modelcontextprotocol/sdk/types.js';
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import http from 'http';
type TransportEvent = {
type: "close";
} | {
type: "onclose";
} | {
type: "onerror";
error: Error;
} | {
type: "onmessage";
message: JSONRPCMessage;
} | {
type: "send";
message: JSONRPCMessage;
} | {
type: "start";
};
declare const tapTransport: (transport: Transport, eventHandler: (event: TransportEvent) => void) => Transport;
declare const proxyServer: ({ server, client, serverCapabilities, }: {
server: Server;
client: Client;
serverCapabilities: ServerCapabilities;
}) => Promise<void>;
type SSEServer = {
close: () => Promise<void>;
};
type ServerLike = {
connect: Server["connect"];
close: Server["close"];
};
declare const startSSEServer: <T extends ServerLike>({ port, createServer, endpoint, onConnect, onClose, onUnhandledRequest, }: {
port: number;
endpoint: string;
createServer: (request: http.IncomingMessage) => Promise<T>;
onConnect?: (server: T) => void;
onClose?: (server: T) => void;
onUnhandledRequest?: (req: http.IncomingMessage, res: http.ServerResponse) => Promise<void>;
}) => Promise<SSEServer>;
export { proxyServer, startSSEServer, tapTransport };