diff --git a/examples/basic-server-preact/main.ts b/examples/basic-server-preact/main.ts index d9a51a2..7642632 100644 --- a/examples/basic-server-preact/main.ts +++ b/examples/basic-server-preact/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3001", 10); - await startServer(createServer, { port, name: "Basic MCP App Server (Preact)" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/basic-server-react/main.ts b/examples/basic-server-react/main.ts index 39840a1..ec187b6 100644 --- a/examples/basic-server-react/main.ts +++ b/examples/basic-server-react/main.ts @@ -12,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -63,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -75,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3001", 10); - await startServer(createServer, { port, name: "Basic MCP App Server (React)" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/basic-server-solid/main.ts b/examples/basic-server-solid/main.ts index 2335348..c8d9de2 100644 --- a/examples/basic-server-solid/main.ts +++ b/examples/basic-server-solid/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3001", 10); - await startServer(createServer, { port, name: "Basic MCP App Server (Solid)" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/basic-server-svelte/main.ts b/examples/basic-server-svelte/main.ts index 762a40e..6c50a25 100644 --- a/examples/basic-server-svelte/main.ts +++ b/examples/basic-server-svelte/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3001", 10); - await startServer(createServer, { port, name: "Basic MCP App Server (Svelte)" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/basic-server-vanillajs/main.ts b/examples/basic-server-vanillajs/main.ts index d53d53b..286fa34 100644 --- a/examples/basic-server-vanillajs/main.ts +++ b/examples/basic-server-vanillajs/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3102", 10); - await startServer(createServer, { port, name: "Basic MCP App Server (Vanilla JS)" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/basic-server-vue/main.ts b/examples/basic-server-vue/main.ts index 0304600..669a071 100644 --- a/examples/basic-server-vue/main.ts +++ b/examples/basic-server-vue/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3001", 10); - await startServer(createServer, { port, name: "Basic MCP App Server (Vue)" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/budget-allocator-server/main.ts b/examples/budget-allocator-server/main.ts index 534e876..cc488f0 100644 --- a/examples/budget-allocator-server/main.ts +++ b/examples/budget-allocator-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3103", 10); - await startServer(createServer, { port, name: "Marketing" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/cohort-heatmap-server/main.ts b/examples/cohort-heatmap-server/main.ts index 0b716d1..d59903b 100644 --- a/examples/cohort-heatmap-server/main.ts +++ b/examples/cohort-heatmap-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3104", 10); - await startServer(createServer, { port, name: "Cohort Heatmap Server" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/customer-segmentation-server/main.ts b/examples/customer-segmentation-server/main.ts index 7be715a..130076c 100644 --- a/examples/customer-segmentation-server/main.ts +++ b/examples/customer-segmentation-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,15 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3105", 10); - await startServer(createServer, { - port, - name: "Customer Segmentation Server", - }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/debug-server/main.ts b/examples/debug-server/main.ts index 5aa8ddb..3c89a97 100644 --- a/examples/debug-server/main.ts +++ b/examples/debug-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3110", 10); - await startServer(createServer, { port, name: "Debug Server" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/integration-server/main.ts b/examples/integration-server/main.ts index 5340e8a..c45787e 100644 --- a/examples/integration-server/main.ts +++ b/examples/integration-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3001", 10); - await startServer(createServer, { port, name: "Integration Test Server" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/map-server/main.ts b/examples/map-server/main.ts index 4495659..f91f57b 100644 --- a/examples/map-server/main.ts +++ b/examples/map-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -63,7 +52,7 @@ export async function startServer( }); const httpServer = app.listen(port, () => { - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -75,12 +64,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3001", 10); - await startServer(createServer, { port, name: "CesiumJS Map Server" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/pdf-server/main.ts b/examples/pdf-server/main.ts index 2b0e3ff..310a312 100644 --- a/examples/pdf-server/main.ts +++ b/examples/pdf-server/main.ts @@ -23,19 +23,13 @@ import { DEFAULT_PDF, } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -71,7 +65,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -83,6 +77,17 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + function parseArgs(): { urls: string[]; stdio: boolean } { const args = process.argv.slice(2); const urls: string[] = []; @@ -132,10 +137,9 @@ async function main() { ); if (stdio) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3120", 10); - await startServer(createServer, { port, name: "PDF Server" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/qr-server/server.py b/examples/qr-server/server.py index 5595ef3..02384c7 100755 --- a/examples/qr-server/server.py +++ b/examples/qr-server/server.py @@ -25,7 +25,7 @@ from starlette.middleware.cors import CORSMiddleware VIEW_URI = "ui://qr-server/view.html" HOST = os.environ.get("HOST", "0.0.0.0") # 0.0.0.0 for Docker compatibility -PORT = int(os.environ.get("PORT", "3108")) +PORT = int(os.environ.get("PORT", "3001")) mcp = FastMCP("QR Code Server") diff --git a/examples/say-server/server.py b/examples/say-server/server.py index bc1313e..64b7417 100755 --- a/examples/say-server/server.py +++ b/examples/say-server/server.py @@ -58,7 +58,7 @@ logger = logging.getLogger(__name__) VIEW_URI = "ui://say-demo/view.html" HOST = os.environ.get("HOST", "0.0.0.0") -PORT = int(os.environ.get("PORT", "3109")) +PORT = int(os.environ.get("PORT", "3001")) # Speaker icon as SVG data URI SPEAKER_ICON = Icon( diff --git a/examples/scenario-modeler-server/main.ts b/examples/scenario-modeler-server/main.ts index b7cc7d0..dbd3ab6 100644 --- a/examples/scenario-modeler-server/main.ts +++ b/examples/scenario-modeler-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3106", 10); - await startServer(createServer, { port, name: "SaaS Scenario Modeler" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/shadertoy-server/main.ts b/examples/shadertoy-server/main.ts index 717f5e6..ac8f6ad 100644 --- a/examples/shadertoy-server/main.ts +++ b/examples/shadertoy-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3001", 10); - await startServer(createServer, { port, name: "ShaderToy Server" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/sheet-music-server/main.ts b/examples/sheet-music-server/main.ts index 4b206e7..8b143a7 100644 --- a/examples/sheet-music-server/main.ts +++ b/examples/sheet-music-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3001", 10); - await startServer(createServer, { port, name: "Sheet Music Server" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/system-monitor-server/main.ts b/examples/system-monitor-server/main.ts index 1962480..365a560 100644 --- a/examples/system-monitor-server/main.ts +++ b/examples/system-monitor-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3107", 10); - await startServer(createServer, { port, name: "System Monitor Server" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/threejs-server/main.ts b/examples/threejs-server/main.ts index 1f779a9..13a2084 100644 --- a/examples/threejs-server/main.ts +++ b/examples/threejs-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3108", 10); - await startServer(createServer, { port, name: "Three.js Server" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/transcript-server/main.ts b/examples/transcript-server/main.ts index 2a92704..68db8dc 100644 --- a/examples/transcript-server/main.ts +++ b/examples/transcript-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,19 +12,13 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -64,7 +54,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -76,12 +66,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3109", 10); - await startServer(createServer, { port, name: "Transcript Server" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/video-resource-server/main.ts b/examples/video-resource-server/main.ts index ff30463..082fa5a 100644 --- a/examples/video-resource-server/main.ts +++ b/examples/video-resource-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3001", 10); - await startServer(createServer, { port, name: "Video Resource Server" }); + await startStreamableHTTPServer(createServer); } } diff --git a/examples/wiki-explorer-server/main.ts b/examples/wiki-explorer-server/main.ts index d83ac42..cc7b3a2 100644 --- a/examples/wiki-explorer-server/main.ts +++ b/examples/wiki-explorer-server/main.ts @@ -4,10 +4,6 @@ * Or: node dist/index.js [--stdio] */ -/** - * Shared utilities for running MCP servers with Streamable HTTP transport. - */ - import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js"; import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; @@ -16,22 +12,15 @@ import cors from "cors"; import type { Request, Response } from "express"; import { createServer } from "./server.js"; -export interface ServerOptions { - port: number; - name?: string; -} - /** * Starts an MCP server with Streamable HTTP transport in stateless mode. * * @param createServer - Factory function that creates a new McpServer instance per request. - * @param options - Server configuration options. */ -export async function startServer( +export async function startStreamableHTTPServer( createServer: () => McpServer, - options: ServerOptions, ): Promise { - const { port, name = "MCP Server" } = options; + const port = parseInt(process.env.PORT ?? "3001", 10); const app = createMcpExpressApp({ host: "0.0.0.0" }); app.use(cors()); @@ -67,7 +56,7 @@ export async function startServer( console.error("Failed to start server:", err); process.exit(1); } - console.log(`${name} listening on http://localhost:${port}/mcp`); + console.log(`MCP server listening on http://localhost:${port}/mcp`); }); const shutdown = () => { @@ -79,12 +68,22 @@ export async function startServer( process.on("SIGTERM", shutdown); } +/** + * Starts an MCP server with stdio transport. + * + * @param createServer - Factory function that creates a new McpServer instance. + */ +export async function startStdioServer( + createServer: () => McpServer, +): Promise { + await createServer().connect(new StdioServerTransport()); +} + async function main() { if (process.argv.includes("--stdio")) { - await createServer().connect(new StdioServerTransport()); + await startStdioServer(createServer); } else { - const port = parseInt(process.env.PORT ?? "3109", 10); - await startServer(createServer, { port, name: "Wiki Explorer" }); + await startStreamableHTTPServer(createServer); } }