mcp-proxy
by: punkpeye
A TypeScript SSE proxy for MCP servers that use stdio transport.
📌Overview
Purpose: To facilitate communication between MCP servers using stdio
transport via a TypeScript SSE proxy.
Overview: MCP Proxy is designed to create a seamless connection for MCP servers utilizing standard input/output transport. It establishes an SSE server that forwards real-time messages, enhancing communication and data flow between clients and servers in a structured manner.
Key Features:
-
SSE Server Setup: Enables users to conveniently start an SSE server with specified port and endpoints, forwarding messages to a connected
stdio
server. -
Proxy Server Utility: Provides robust utilities to establish a proxy flow between server and client, ensuring bidirectional communication with minimal configuration.
MCP Proxy
A TypeScript SSE proxy for MCP servers that use stdio
transport.
CORS is enabled by default.
For a Python implementation, see mcp-proxy.
MCP Proxy is what FastMCP uses to enable SSE.
Installation
npm install mcp-proxy
Quickstart
Command-line
npx mcp-proxy --port 8080 --endpoint /sse tsx server.js
This starts an SSE server and stdio
server (tsx server.js
). The SSE server listens on port 8080 and endpoint /sse
, and forwards messages to the stdio
server.
Node.js SDK
The Node.js SDK provides utilities to create a proxy.
proxyServer
Sets up a proxy between a server and a client.
const transport = new StdioClientTransport();
const client = new Client();
const server = new Server(serverVersion, {
capabilities: {},
});
proxyServer({
server,
client,
capabilities: {},
});
In this example, the server will proxy all requests to the client and vice versa.
startSSEServer
Starts a proxy that listens on a port
and endpoint
, and sends messages to the attached server via SSEServerTransport
.
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { startSSEServer } from "mcp-proxy";
const { close } = await startSSEServer({
port: 8080,
endpoint: "/sse",
createServer: async () => {
return new Server();
},
});
close();
tapTransport
Taps into a transport and logs events.
import { tapTransport } from "mcp-proxy";
const transport = tapTransport(new StdioClientTransport(), (event) => {
console.log(event);
});