Files
claude-code/scripts/setup-chrome-mcp.mjs
2026-05-01 21:39:30 +08:00

71 lines
1.8 KiB
JavaScript

#!/usr/bin/env node
/**
* Unified Chrome MCP setup script.
*
* Usage:
* node scripts/setup-chrome-mcp.mjs # Run full setup (fix-permissions → register → doctor)
* node scripts/setup-chrome-mcp.mjs doctor # Run a single sub-command
*/
import { execFileSync } from 'node:child_process'
import { mkdirSync } from 'node:fs'
import { createRequire } from 'node:module'
import { homedir } from 'node:os'
import { join } from 'node:path'
if (process.env.CLAUDE_CODE_SKIP_CHROME_MCP_SETUP === '1') {
process.exit(0)
}
const require = createRequire(import.meta.url)
const cliPath = require.resolve(
'@claude-code-best/mcp-chrome-bridge/dist/cli.js',
)
const userArgs = process.argv.slice(2)
function getChromeMcpLogDir() {
const home = homedir()
if (process.platform === 'darwin') {
return join(home, 'Library', 'Logs', 'mcp-chrome-bridge')
}
if (process.platform === 'win32') {
return join(
process.env.LOCALAPPDATA || join(home, 'AppData', 'Local'),
'mcp-chrome-bridge',
'logs',
)
}
return join(
process.env.XDG_STATE_HOME || join(home, '.local', 'state'),
'mcp-chrome-bridge',
'logs',
)
}
if (userArgs.length > 0) {
// Forward single sub-command
execFileSync('node', [cliPath, ...userArgs], { stdio: 'inherit' })
} else {
// Full setup sequence
const steps = [
['fix-permissions'],
['register', '--browser', 'chrome'],
['doctor'],
]
mkdirSync(getChromeMcpLogDir(), { recursive: true })
for (let i = 0; i < steps.length; i++) {
const args = steps[i]
const isLast = i === steps.length - 1
if (isLast) console.log(`\n[${i + 1}/${steps.length}] ${args.join(' ')}`)
execFileSync('node', [cliPath, ...args], {
stdio: isLast ? 'inherit' : 'pipe',
})
}
console.log('\nChrome MCP setup complete!')
}