Skip to main content
Glama

Better Playwright MCP

by livoras
cli.js2.7 kB
#!/usr/bin/env node import { program } from 'commander'; import { spawn } from 'child_process'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; import fs from 'fs'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const packageJson = JSON.parse(fs.readFileSync(join(__dirname, '..', 'package.json'), 'utf8')); program .name('better-playwright-mcp2') .description('Better Playwright MCP v2 - Based on Microsoft\'s playwright-mcp with HTTP server') .version(packageJson.version); // MCP 模式(默认) program .command('mcp', { isDefault: true }) .description('Start MCP server (stdio mode)') .option('--snapshot-dir <path>', 'directory to save snapshots') .action((options) => { const args = ['dist/mcp-server.js']; if (options.snapshotDir) { process.env.SNAPSHOT_DIR = options.snapshotDir; } const child = spawn('node', args, { stdio: 'inherit', cwd: join(__dirname, '..'), env: { ...process.env } }); child.on('error', (err) => { console.error('Failed to start MCP server:', err); process.exit(1); }); child.on('exit', (code) => { process.exit(code || 0); }); }); // HTTP 服务器模式 program .command('server') .description('Start HTTP server') .option('-p, --port <number>', 'server port', '3102') .option('--host <string>', 'server host', 'localhost') .option('--headless', 'run browser in headless mode') .option('--chromium', 'use Chromium instead of Chrome') .option('--no-user-profile', 'do not use persistent user profile') .option('--user-data-dir <path>', 'user data directory') .option('--snapshot-dir <path>', 'directory to save snapshots') .action((options) => { const args = ['dist/server/playwright-server.js']; // 设置环境变量 process.env.SERVER_MODE = 'true'; process.env.PORT = options.port; process.env.HOST = options.host; if (options.headless) process.env.HEADLESS = 'true'; if (options.chromium) process.env.CHROMIUM = 'true'; if (!options.userProfile) process.env.NO_USER_PROFILE = 'true'; if (options.userDataDir) process.env.USER_DATA_DIR = options.userDataDir; if (options.snapshotDir) process.env.SNAPSHOT_DIR = options.snapshotDir; const child = spawn('node', args, { stdio: 'inherit', cwd: join(__dirname, '..'), env: { ...process.env } }); child.on('error', (err) => { console.error('Failed to start HTTP server:', err); process.exit(1); }); child.on('exit', (code) => { process.exit(code || 0); }); }); program.parse();

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/livoras/better-playwright-mcp'

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