UNPKG

browser-devtools-mcp-server

Version:

MCP服务器,通过WebSocket连接浏览器插件获取DevTools信息,支持Cursor集成

182 lines (148 loc) 4.71 kB
#!/usr/bin/env node /** * Browser DevTools MCP Server CLI * 支持通过npx直接运行的命令行入口 */ import { spawn } from 'child_process'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; import { existsSync } from 'fs'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); // 默认配置 const DEFAULT_CONFIG = { port: 8080, host: '0.0.0.0' }; // 解析命令行参数 function parseArgs() { const args = process.argv.slice(2); const config = { ...DEFAULT_CONFIG }; for (let i = 0; i < args.length; i++) { const arg = args[i]; switch (arg) { case '--port': case '-p': const port = parseInt(args[++i]); if (port && port > 0 && port <= 65535) { config.port = port; } else { console.error('❌ 无效的端口号,必须在1-65535之间'); process.exit(1); } break; case '--host': case '-h': config.host = args[++i]; break; case '--help': showHelp(); process.exit(0); break; case '--version': case '-v': showVersion(); process.exit(0); break; default: if (arg.startsWith('-')) { console.error(`❌ 未知参数: ${arg}`); console.log('使用 --help 查看帮助信息'); process.exit(1); } } } return config; } // 显示帮助信息 function showHelp() { console.log(` 🚀 Browser DevTools MCP Server 用法: npx browser-devtools-mcp-server [选项] 选项: -p, --port <port> 设置WebSocket服务器端口 (默认: 8080) -h, --host <host> 设置WebSocket服务器主机 (默认: 0.0.0.0) --help 显示帮助信息 --version 显示版本信息 环境变量: WS_PORT 设置WebSocket服务器端口 WS_HOST 设置WebSocket服务器主机 示例: # 使用默认端口8080 npx browser-devtools-mcp-server # 指定端口9000 npx browser-devtools-mcp-server --port 9000 # 指定主机和端口 npx browser-devtools-mcp-server --host 127.0.0.1 --port 9000 📖 更多信息: https://github.com/yourusername/browser-devtools-mcp `); } // 显示版本信息 async function showVersion() { try { const fs = await import('fs'); const packageJson = JSON.parse( fs.readFileSync(join(__dirname, 'package.json'), 'utf8') ); console.log(`browser-devtools-mcp-server v${packageJson.version}`); } catch (error) { console.log('browser-devtools-mcp-server v1.0.0'); } } // 启动服务器 async function startServer(config) { try { // 设置环境变量 process.env.WS_PORT = config.port.toString(); process.env.WS_HOST = config.host; console.log('🚀 启动Browser DevTools MCP服务器...'); console.log(`🌐 WebSocket服务器: ${config.host}:${config.port}`); console.log('📡 MCP服务器准备接收Cursor连接'); console.log(''); console.log('💡 提示:'); console.log(' - 确保浏览器插件已安装并配置'); console.log(' - 在Cursor中配置MCP服务器'); console.log(' - 按Ctrl+C停止服务器'); console.log(''); // 导入并启动服务器 const { DevToolsMCPServer } = await import('./server.js'); const server = new DevToolsMCPServer(); await server.run(); } catch (error) { console.error('❌ 服务器启动失败:', error.message); if (error.code === 'MODULE_NOT_FOUND') { console.log(''); console.log('🔧 解决方案:'); console.log(' 1. 确保在正确的目录中运行'); console.log(' 2. 运行 npm install 安装依赖'); console.log(' 3. 检查Node.js版本 (需要 >= 18.0.0)'); } process.exit(1); } } // 主函数 async function main() { try { // 解析命令行参数 const config = parseArgs(); // 启动服务器 await startServer(config); } catch (error) { console.error('❌ 程序执行失败:', error.message); process.exit(1); } } // 处理进程信号 process.on('SIGINT', () => { console.log('\n🛑 正在关闭服务器...'); process.exit(0); }); process.on('SIGTERM', () => { console.log('\n🛑 正在关闭服务器...'); process.exit(0); }); // 启动程序 main().catch(error => { console.error('❌ 未处理的错误:', error); process.exit(1); });