mcp-proxy
Version:
A TypeScript SSE proxy for MCP servers that use stdio transport.
73 lines (64 loc) • 1.64 kB
text/typescript
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import {
ListResourceTemplatesRequestSchema,
ListResourcesRequestSchema,
ReadResourceRequestSchema,
SubscribeRequestSchema,
UnsubscribeRequestSchema,
} from "@modelcontextprotocol/sdk/types.js";
const server = new Server(
{
name: "example-server",
version: "1.0.0",
},
{
capabilities: {
resources: { subscribe: true },
},
},
);
server.setRequestHandler(ListResourcesRequestSchema, async () => {
return {
resources: [
{
uri: "file:///example.txt",
name: "Example Resource",
},
],
};
});
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
if (request.params.uri === "file:///example.txt") {
return {
contents: [
{
uri: "file:///example.txt",
mimeType: "text/plain",
text: "This is the content of the example resource.",
},
],
};
} else {
throw new Error("Resource not found");
}
});
server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => {
return {
resourceTemplates: [
{
uriTemplate: `file://{filename}`,
name: "Example resource template",
description: "Specify the filename to retrieve",
},
],
};
});
server.setRequestHandler(SubscribeRequestSchema, async () => {
return {};
});
server.setRequestHandler(UnsubscribeRequestSchema, async () => {
return {};
});
const transport = new StdioServerTransport();
await server.connect(transport);