From e5d34d5e0768fcfc83d01f3439037a02bb4c4083 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 5 Apr 2026 05:01:55 +0000 Subject: [PATCH] feat: add custom port support for WebSocket server Allows running multiple instances of the Browser MCP server by allowing a custom port to be specified via the `-p, --port` CLI option or the `PORT` environment variable. The port is passed down to `createWebSocketServer` to resolve the hardcoded port conflict. Co-authored-by: hasmcp-dev <259770388+hasmcp-dev@users.noreply.github.com> --- src/index.ts | 10 +++++++--- src/server.ts | 5 +++-- 2 files changed, 10 insertions(+), 5 deletions(-) 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()) {