UNPKG

mcp-server-kubernetes

Version:

MCP server for interacting with Kubernetes clusters via kubectl

36 lines (35 loc) 1.54 kB
import express from "express"; import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js"; export function startSSEServer(server) { const app = express(); // Currently just copying from docs & allowing for multiple transport connections: https://modelcontextprotocol.io/docs/concepts/transports#server-sent-events-sse // TODO: If exposed to web, then this will enable any client to connect to the server via http - so marked as UNSAFE until mcp has a proper auth solution. let transports = []; app.get("/sse", async (req, res) => { const transport = new SSEServerTransport("/messages", res); transports.push(transport); await server.connect(transport); }); app.post("/messages", (req, res) => { const transport = transports.find((t) => t.sessionId === req.query.sessionId); if (transport) { transport.handlePostMessage(req, res); } else { res .status(404) .send("Not found. Must pass valid sessionId as query param."); } }); let port = 3000; try { port = parseInt(process.env.PORT || "3000", 10); } catch (e) { console.error("Invalid PORT environment variable, using default port 3000."); } const host = process.env.HOST || "localhost"; app.listen(port, host, () => { console.log(`mcp-kubernetes-server is listening on port ${port}\nUse the following url to connect to the server:\n\http://${host}:${port}/sse`); }); }