Skip to main content
Glama
cli.ts4.46 kB
/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import type {Options as YargsOptions} from 'yargs'; import yargs from 'yargs'; import {hideBin} from 'yargs/helpers'; export const cliOptions = { browserUrl: { type: 'string', description: 'Connect to a running Chrome instance using port forwarding. For more details see: https://developer.chrome.com/docs/devtools/remote-debugging/local-server.', alias: 'u', coerce: (url: string | undefined) => { if (!url) { return; } try { new URL(url); } catch { throw new Error(`Provided browserUrl ${url} is not valid URL.`); } return url; }, }, headless: { type: 'boolean', description: 'Whether to run in headless (no UI) mode.', default: false, }, executablePath: { type: 'string', description: 'Path to custom Chrome executable.', conflicts: 'browserUrl', alias: 'e', }, isolated: { type: 'boolean', description: 'If specified, creates a temporary user-data-dir that is automatically cleaned up after the browser is closed.', default: false, }, customDevtools: { type: 'string', description: 'Path to a custom DevTools frontend bundle.', }, channel: { type: 'string', description: 'Specify a different Chrome channel that should be used. The default is the stable channel version.', choices: ['stable', 'canary', 'beta', 'dev'] as const, conflicts: ['browserUrl', 'executablePath'], }, logFile: { type: 'string', describe: 'Path to a file to write debug logs to. Set the env variable `DEBUG` to `*` to enable verbose logs. Useful for submitting bug reports.', }, viewport: { type: 'string', describe: 'Initial viewport size for the Chrome instances started by the server. For example, `1280x720`. In headless mode, max size is 3840x2160px.', coerce: (arg: string | undefined) => { if (arg === undefined) { return; } const [width, height] = arg.split('x').map(Number); if (!width || !height || Number.isNaN(width) || Number.isNaN(height)) { throw new Error('Invalid viewport. Expected format is `1280x720`.'); } return { width, height, }; }, }, proxyServer: { type: 'string', description: `Proxy server configuration for Chrome passed as --proxy-server when launching the browser. See https://www.chromium.org/developers/design-documents/network-settings/ for details.`, }, acceptInsecureCerts: { type: 'boolean', description: `If enabled, ignores errors relative to self-signed and expired certificates. Use with caution.`, }, experimentalDevtools: { type: 'boolean', describe: 'Whether to enable automation over DevTools targets', hidden: true, }, chromeArg: { type: 'array', describe: 'Additional arguments for Chrome. Only applies when Chrome is launched by chrome-devtools-mcp.', }, } satisfies Record<string, YargsOptions>; export function parseArguments(version: string, argv = process.argv) { const yargsInstance = yargs(hideBin(argv)) .scriptName('npx chrome-devtools-mcp@latest') .options(cliOptions) .check(args => { // We can't set default in the options else // Yargs will complain if (!args.channel && !args.browserUrl && !args.executablePath) { args.channel = 'stable'; } return true; }) .example([ [ '$0 --browserUrl http://127.0.0.1:9222', 'Connect to an existing browser instance', ], ['$0 --channel beta', 'Use Chrome Beta installed on this system'], ['$0 --channel canary', 'Use Chrome Canary installed on this system'], ['$0 --channel dev', 'Use Chrome Dev installed on this system'], ['$0 --channel stable', 'Use stable Chrome installed on this system'], ['$0 --logFile /tmp/log.txt', 'Save logs to a file'], ['$0 --help', 'Print CLI options'], [ '$0 --viewport 1280x720', 'Launch Chrome with the initial viewport size of 1280x720px', ], [ `$0 --chrome-arg='--no-sandbox' --chrome-arg='--disable-setuid-sandbox'`, 'Launch Chrome without sandboxes. Use with caution.', ], ]); return yargsInstance .wrap(Math.min(120, yargsInstance.terminalWidth())) .help() .version(version) .parseSync(); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SHAY5555-gif/chrome-devtools-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server