From eca7ea5880702dd8fc06d19ce0a1eec495a48bf4 Mon Sep 17 00:00:00 2001 From: Jude Gao Date: Sun, 31 May 2026 22:59:09 -0400 Subject: [PATCH] feat(browser_eval): support 'chromium' browser (Linux arm64) On platforms where the only available Chrome build is Chromium (e.g. Linux arm64), the browser_eval tool couldn't be used because the browser enum only accepted chrome/firefox/webkit/msedge. @playwright/mcp accepts '--browser chromium' (it resolves to the chrome-for-testing build). Verified end-to-end against @playwright/mcp@0.0.75: started the server with '--browser chromium' and a browser_navigate call launched and loaded a page successfully. Add 'chromium' to the browser enum (tool input schema + arg type) and the manager option type; it is forwarded as '--browser chromium'. Fixes #123 --- src/_internal/browser-eval-manager.ts | 2 +- src/tools/browser-eval.ts | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/_internal/browser-eval-manager.ts b/src/_internal/browser-eval-manager.ts index dd6dea6..b00417b 100644 --- a/src/_internal/browser-eval-manager.ts +++ b/src/_internal/browser-eval-manager.ts @@ -48,7 +48,7 @@ export async function ensureBrowserEvalMCP(): Promise { * Start playwright-mcp server and connect to it */ export async function startBrowserEvalMCP(options?: { - browser?: "chrome" | "firefox" | "webkit" | "msedge" + browser?: "chrome" | "chromium" | "firefox" | "webkit" | "msedge" headless?: boolean }): Promise { // Ensure playwright-mcp is installed diff --git a/src/tools/browser-eval.ts b/src/tools/browser-eval.ts index 2baad56..1750a8f 100644 --- a/src/tools/browser-eval.ts +++ b/src/tools/browser-eval.ts @@ -25,9 +25,11 @@ export const inputSchema = { .describe("The action to perform using browser automation"), browser: z - .enum(["chrome", "firefox", "webkit", "msedge"]) + .enum(["chrome", "chromium", "firefox", "webkit", "msedge"]) .optional() - .describe("Browser to use (default: chrome). Only used with 'start' action."), + .describe( + "Browser to use (default: chrome). Use 'chromium' on platforms without a Chrome build (e.g. Linux arm64). Only used with 'start' action." + ), headless: z .union([z.boolean(), z.string().transform((val) => val === "true")]) .optional() @@ -129,7 +131,7 @@ type BrowserEvalArgs = { | "drag" | "upload_file" | "list_tools" - browser?: "chrome" | "firefox" | "webkit" | "msedge" + browser?: "chrome" | "chromium" | "firefox" | "webkit" | "msedge" headless?: boolean | string url?: string element?: string