diff --git a/src/index.ts b/src/index.ts index 2278a755..8ce284a4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -41,12 +41,13 @@ const snapshotTools: Tool[] = [ const resources: Resource[] = []; -async function createServer(): Promise { +async function createServer(port?: number): Promise { return createServerWithTools({ name: appConfig.name, version: packageJSON.version, tools: snapshotTools, resources, + port, }); } @@ -56,8 +57,11 @@ async function createServer(): Promise { program .version("Version " + packageJSON.version) .name(packageJSON.name) - .action(async () => { - const server = await createServer(); + .option("-p, --port ", "Port for WebSocket server") + .action(async (options) => { + const portOption = options.port || process.env.PORT; + const port = portOption ? parseInt(portOption, 10) : undefined; + const server = await createServer(port); setupExitWatchdog(server); const transport = new StdioServerTransport(); diff --git a/src/server.ts b/src/server.ts index 7c118f0e..95c6b290 100644 --- a/src/server.ts +++ b/src/server.ts @@ -16,10 +16,11 @@ type Options = { version: string; tools: Tool[]; resources: Resource[]; + port?: number; }; export async function createServerWithTools(options: Options): Promise { - const { name, version, tools, resources } = options; + const { name, version, tools, resources, port } = options; const context = new Context(); const server = new Server( { name, version }, @@ -31,7 +32,7 @@ export async function createServerWithTools(options: Options): Promise { }, ); - const wss = await createWebSocketServer(); + const wss = await createWebSocketServer(port); wss.on("connection", (websocket) => { // Close any existing connections if (context.hasWs()) {