diff --git a/examples/budget-allocator-server/server.ts b/examples/budget-allocator-server/server.ts index 0adffd8d..03bed630 100644 --- a/examples/budget-allocator-server/server.ts +++ b/examples/budget-allocator-server/server.ts @@ -5,6 +5,7 @@ * and industry benchmarks by company stage. */ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; import type { CallToolResult, @@ -292,50 +293,60 @@ server.registerResource( ); // --------------------------------------------------------------------------- -// Express Server +// Server Startup // --------------------------------------------------------------------------- -const app = express(); -app.use(cors()); -app.use(express.json()); - -app.post("/mcp", async (req: Request, res: Response) => { - try { - const transport = new StreamableHTTPServerTransport({ - sessionIdGenerator: undefined, - enableJsonResponse: true, +async function main() { + if (process.argv.includes("--stdio")) { + const transport = new StdioServerTransport(); + await server.connect(transport); + console.error("Budget Allocator Server running in stdio mode"); + } else { + const app = express(); + app.use(cors()); + app.use(express.json()); + + app.post("/mcp", async (req: Request, res: Response) => { + try { + const transport = new StreamableHTTPServerTransport({ + sessionIdGenerator: undefined, + enableJsonResponse: true, + }); + res.on("close", () => { + transport.close(); + }); + + await server.connect(transport); + await transport.handleRequest(req, res, req.body); + } catch (error) { + console.error("Error handling MCP request:", error); + if (!res.headersSent) { + res.status(500).json({ + jsonrpc: "2.0", + error: { code: -32603, message: "Internal server error" }, + id: null, + }); + } + } }); - res.on("close", () => { - transport.close(); + + const httpServer = app.listen(PORT, () => { + console.log( + `Budget Allocator Server listening on http://localhost:${PORT}/mcp`, + ); }); - await server.connect(transport); - await transport.handleRequest(req, res, req.body); - } catch (error) { - console.error("Error handling MCP request:", error); - if (!res.headersSent) { - res.status(500).json({ - jsonrpc: "2.0", - error: { code: -32603, message: "Internal server error" }, - id: null, + function shutdown() { + console.log("\nShutting down..."); + httpServer.close(() => { + console.log("Server closed"); + process.exit(0); }); } - } -}); -const httpServer = app.listen(PORT, () => { - console.log( - `Budget Allocator Server listening on http://localhost:${PORT}/mcp`, - ); -}); - -function shutdown() { - console.log("\nShutting down..."); - httpServer.close(() => { - console.log("Server closed"); - process.exit(0); - }); + process.on("SIGINT", shutdown); + process.on("SIGTERM", shutdown); + } } -process.on("SIGINT", shutdown); -process.on("SIGTERM", shutdown); +main().catch(console.error); diff --git a/examples/cohort-heatmap-server/server.ts b/examples/cohort-heatmap-server/server.ts index f2454997..cc155f6b 100644 --- a/examples/cohort-heatmap-server/server.ts +++ b/examples/cohort-heatmap-server/server.ts @@ -1,4 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; import type { ReadResourceResult } from "@modelcontextprotocol/sdk/types.js"; import cors from "cors"; @@ -204,46 +205,58 @@ const server = new McpServer({ ); } -const app = express(); -app.use(cors()); -app.use(express.json()); - -app.post("/mcp", async (req: Request, res: Response) => { - try { - const transport = new StreamableHTTPServerTransport({ - sessionIdGenerator: undefined, - enableJsonResponse: true, - }); - res.on("close", () => { - transport.close(); +async function main() { + if (process.argv.includes("--stdio")) { + const transport = new StdioServerTransport(); + await server.connect(transport); + console.error("Cohort Heatmap Server running in stdio mode"); + } else { + const app = express(); + app.use(cors()); + app.use(express.json()); + + app.post("/mcp", async (req: Request, res: Response) => { + try { + const transport = new StreamableHTTPServerTransport({ + sessionIdGenerator: undefined, + enableJsonResponse: true, + }); + res.on("close", () => { + transport.close(); + }); + + await server.connect(transport); + + await transport.handleRequest(req, res, req.body); + } catch (error) { + console.error("Error handling MCP request:", error); + if (!res.headersSent) { + res.status(500).json({ + jsonrpc: "2.0", + error: { code: -32603, message: "Internal server error" }, + id: null, + }); + } + } }); - await server.connect(transport); + const httpServer = app.listen(PORT, () => { + console.log( + `Cohort Heatmap Server listening on http://localhost:${PORT}/mcp`, + ); + }); - await transport.handleRequest(req, res, req.body); - } catch (error) { - console.error("Error handling MCP request:", error); - if (!res.headersSent) { - res.status(500).json({ - jsonrpc: "2.0", - error: { code: -32603, message: "Internal server error" }, - id: null, + function shutdown() { + console.log("\nShutting down..."); + httpServer.close(() => { + console.log("Server closed"); + process.exit(0); }); } - } -}); -const httpServer = app.listen(PORT, () => { - console.log(`Server listening on http://localhost:${PORT}/mcp`); -}); - -function shutdown() { - console.log("\nShutting down..."); - httpServer.close(() => { - console.log("Server closed"); - process.exit(0); - }); + process.on("SIGINT", shutdown); + process.on("SIGTERM", shutdown); + } } -process.on("SIGINT", shutdown); -process.on("SIGTERM", shutdown); +main().catch(console.error); diff --git a/examples/customer-segmentation-server/server.ts b/examples/customer-segmentation-server/server.ts index 8fea3d3d..0f9a979c 100644 --- a/examples/customer-segmentation-server/server.ts +++ b/examples/customer-segmentation-server/server.ts @@ -1,4 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; import type { CallToolResult, @@ -103,48 +104,58 @@ const server = new McpServer({ ); } -const app = express(); -app.use(cors()); -app.use(express.json()); - -app.post("/mcp", async (req: Request, res: Response) => { - try { - const transport = new StreamableHTTPServerTransport({ - sessionIdGenerator: undefined, - enableJsonResponse: true, - }); - res.on("close", () => { - transport.close(); +async function main() { + if (process.argv.includes("--stdio")) { + const transport = new StdioServerTransport(); + await server.connect(transport); + console.error("Customer Segmentation Server running in stdio mode"); + } else { + const app = express(); + app.use(cors()); + app.use(express.json()); + + app.post("/mcp", async (req: Request, res: Response) => { + try { + const transport = new StreamableHTTPServerTransport({ + sessionIdGenerator: undefined, + enableJsonResponse: true, + }); + res.on("close", () => { + transport.close(); + }); + + await server.connect(transport); + + await transport.handleRequest(req, res, req.body); + } catch (error) { + console.error("Error handling MCP request:", error); + if (!res.headersSent) { + res.status(500).json({ + jsonrpc: "2.0", + error: { code: -32603, message: "Internal server error" }, + id: null, + }); + } + } }); - await server.connect(transport); + const httpServer = app.listen(PORT, () => { + console.log( + `Customer Segmentation Server listening on http://localhost:${PORT}/mcp`, + ); + }); - await transport.handleRequest(req, res, req.body); - } catch (error) { - console.error("Error handling MCP request:", error); - if (!res.headersSent) { - res.status(500).json({ - jsonrpc: "2.0", - error: { code: -32603, message: "Internal server error" }, - id: null, + function shutdown() { + console.log("\nShutting down..."); + httpServer.close(() => { + console.log("Server closed"); + process.exit(0); }); } - } -}); - -const httpServer = app.listen(PORT, () => { - console.log( - `Customer Segmentation Server listening on http://localhost:${PORT}/mcp`, - ); -}); -function shutdown() { - console.log("\nShutting down..."); - httpServer.close(() => { - console.log("Server closed"); - process.exit(0); - }); + process.on("SIGINT", shutdown); + process.on("SIGTERM", shutdown); + } } -process.on("SIGINT", shutdown); -process.on("SIGTERM", shutdown); +main().catch(console.error); diff --git a/examples/scenario-modeler-server/server.ts b/examples/scenario-modeler-server/server.ts index d1178a67..7aac927b 100644 --- a/examples/scenario-modeler-server/server.ts +++ b/examples/scenario-modeler-server/server.ts @@ -1,4 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; import type { CallToolResult, @@ -308,50 +309,60 @@ const server = new McpServer({ } // ============================================================================ -// Express Server +// Server Startup // ============================================================================ -const app = express(); -app.use(cors()); -app.use(express.json()); - -app.post("/mcp", async (req: Request, res: Response) => { - try { - const transport = new StreamableHTTPServerTransport({ - sessionIdGenerator: undefined, - enableJsonResponse: true, +async function main() { + if (process.argv.includes("--stdio")) { + const transport = new StdioServerTransport(); + await server.connect(transport); + console.error("SaaS Scenario Modeler Server running in stdio mode"); + } else { + const app = express(); + app.use(cors()); + app.use(express.json()); + + app.post("/mcp", async (req: Request, res: Response) => { + try { + const transport = new StreamableHTTPServerTransport({ + sessionIdGenerator: undefined, + enableJsonResponse: true, + }); + res.on("close", () => { + transport.close(); + }); + + await server.connect(transport); + await transport.handleRequest(req, res, req.body); + } catch (error) { + console.error("Error handling MCP request:", error); + if (!res.headersSent) { + res.status(500).json({ + jsonrpc: "2.0", + error: { code: -32603, message: "Internal server error" }, + id: null, + }); + } + } }); - res.on("close", () => { - transport.close(); + + const httpServer = app.listen(PORT, () => { + console.log( + `SaaS Scenario Modeler Server listening on http://localhost:${PORT}/mcp`, + ); }); - await server.connect(transport); - await transport.handleRequest(req, res, req.body); - } catch (error) { - console.error("Error handling MCP request:", error); - if (!res.headersSent) { - res.status(500).json({ - jsonrpc: "2.0", - error: { code: -32603, message: "Internal server error" }, - id: null, + function shutdown() { + console.log("\nShutting down..."); + httpServer.close(() => { + console.log("Server closed"); + process.exit(0); }); } - } -}); -const httpServer = app.listen(PORT, () => { - console.log( - `SaaS Scenario Modeler Server listening on http://localhost:${PORT}/mcp`, - ); -}); - -function shutdown() { - console.log("\nShutting down..."); - httpServer.close(() => { - console.log("Server closed"); - process.exit(0); - }); + process.on("SIGINT", shutdown); + process.on("SIGTERM", shutdown); + } } -process.on("SIGINT", shutdown); -process.on("SIGTERM", shutdown); +main().catch(console.error); diff --git a/examples/system-monitor-server/server.ts b/examples/system-monitor-server/server.ts index 259c0645..e7606f7d 100644 --- a/examples/system-monitor-server/server.ts +++ b/examples/system-monitor-server/server.ts @@ -1,4 +1,5 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; +import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; import type { CallToolResult, @@ -175,48 +176,58 @@ const server = new McpServer({ ); } -const app = express(); -app.use(cors()); -app.use(express.json()); - -app.post("/mcp", async (req: Request, res: Response) => { - try { - const transport = new StreamableHTTPServerTransport({ - sessionIdGenerator: undefined, - enableJsonResponse: true, - }); - res.on("close", () => { - transport.close(); +async function main() { + if (process.argv.includes("--stdio")) { + const transport = new StdioServerTransport(); + await server.connect(transport); + console.error("System Monitor Server running in stdio mode"); + } else { + const app = express(); + app.use(cors()); + app.use(express.json()); + + app.post("/mcp", async (req: Request, res: Response) => { + try { + const transport = new StreamableHTTPServerTransport({ + sessionIdGenerator: undefined, + enableJsonResponse: true, + }); + res.on("close", () => { + transport.close(); + }); + + await server.connect(transport); + + await transport.handleRequest(req, res, req.body); + } catch (error) { + console.error("Error handling MCP request:", error); + if (!res.headersSent) { + res.status(500).json({ + jsonrpc: "2.0", + error: { code: -32603, message: "Internal server error" }, + id: null, + }); + } + } }); - await server.connect(transport); + const httpServer = app.listen(PORT, () => { + console.log( + `System Monitor Server listening on http://localhost:${PORT}/mcp`, + ); + }); - await transport.handleRequest(req, res, req.body); - } catch (error) { - console.error("Error handling MCP request:", error); - if (!res.headersSent) { - res.status(500).json({ - jsonrpc: "2.0", - error: { code: -32603, message: "Internal server error" }, - id: null, + function shutdown() { + console.log("\nShutting down..."); + httpServer.close(() => { + console.log("Server closed"); + process.exit(0); }); } - } -}); - -const httpServer = app.listen(PORT, () => { - console.log( - `System Monitor Server listening on http://localhost:${PORT}/mcp`, - ); -}); -function shutdown() { - console.log("\nShutting down..."); - httpServer.close(() => { - console.log("Server closed"); - process.exit(0); - }); + process.on("SIGINT", shutdown); + process.on("SIGTERM", shutdown); + } } -process.on("SIGINT", shutdown); -process.on("SIGTERM", shutdown); +main().catch(console.error);