https://github.com/punkpeye/mcp-proxy
A TypeScript SSE proxy for MCP servers that use stdio transport.
https://github.com/punkpeye/mcp-proxy
Last synced: 12 days ago
JSON representation
A TypeScript SSE proxy for MCP servers that use stdio transport.
- Host: GitHub
- URL: https://github.com/punkpeye/mcp-proxy
- Owner: punkpeye
- License: bsd-2-clause
- Created: 2024-12-29T20:14:41.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-03-24T18:34:24.000Z (27 days ago)
- Last Synced: 2025-03-31T19:32:01.325Z (20 days ago)
- Language: TypeScript
- Size: 229 KB
- Stars: 68
- Watchers: 3
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-mcp - mcp-proxy - 用于使用 `stdio` 传输的 MCP 服务器的 TypeScript SSE 代理 (框架)
- awesome-mcp - mcp-proxy - 用于使用 `stdio` 传输的 MCP 服务器的 TypeScript SSE 代理 (框架)
- awesome-mcp-servers - MCP-Proxy SSE - A TypeScript SSE proxy for MCP servers that use stdio transport. (Table of Contents / Other Tools and Integrations)
- awesome-mcp-servers - MCP-Proxy SSE - A TypeScript SSE proxy for MCP servers that use stdio transport. (Table of Contents / Other Tools and Integrations)
README
# MCP Proxy
A TypeScript SSE proxy for [MCP](https://modelcontextprotocol.io/) servers that use `stdio` transport.
> [!NOTE]
> CORS is enabled by default.> [!NOTE]
> For a Python implementation, see [mcp-proxy](https://github.com/sparfenyuk/mcp-proxy).> [!NOTE]
> MCP Proxy is what [FastMCP](https://github.com/punkpeye/fastmcp) uses to enable SSE.## Installation
```bash
npm install mcp-proxy
```## Quickstart
### Command-line
```bash
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 several utilities that are used to create a proxy.
#### `proxyServer`
Sets up a proxy between a server and a client.
```ts
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`.
```ts
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.
```ts
import { tapTransport } from "mcp-proxy";const transport = tapTransport(new StdioClientTransport(), (event) => {
console.log(event);
});
```