使用说明
MCP Chrome代理服务器
一个代理MCP服务器,连接WSL和Windows Chrome DevTools,使WSL中的Claude Code CLI能够控制在Windows上运行的Chrome。
问题解决了
Chrome的DevTools协议只接受来自 localhost (127.0.0.1)出于安全原因。在WSL(Linux的Windows子系统)中运行Claude Code CLI时,您无法直接连接到在Windows上运行的Chrome localhost:9222 因为WSL的网络是隔离的。
此代理服务器通过以下方式解决了问题:
- 在Windows上运行(可以访问Chrome的
localhost:9222) - 在上公开MCP服务器
0.0.0.0:3000(可从WSL访问) - 在WSL和Windows Chrome之间转发所有Chrome DevTools工具调用
建筑
WSL Ubuntu Windows 11
┌─────────────────┐ ┌──────────────────────────┐
│ Claude Code CLI │ │ MCP Proxy Server │
│ │──────▶│ (0.0.0.0:3000) │
│ HTTP: 172.18... │ │ │ │
└─────────────────┘ │ ▼ │
│ chrome-devtools-mcp │
│ │ │
│ ▼ │
│ Chrome (localhost:9222) │
└──────────────────────────┘
需求
- Windows 11 WSL2
- Node.js (v18或更高版本)安装在Windows上
- 铬 在启用远程调试的Windows上运行
- 克劳德代码CLI 在WSL中跑步
安装
1.安装依赖项
打开 PowerShell 或 命令提示符 在Windows上,导航到此目录:
cd C:\path\to\MCP-Proxy
npm install
2.通过远程调试启动Chrome
选项A:使用PowerShell启动器 (推荐)
右击 start-chrome.ps1 然后选择“使用PowerShell运行”,或从PowerShell运行:
.\start-chrome.ps1
选项B:手动启动
& "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="$env:TEMP\chrome-profile-mcp"
验证Chrome是否正在运行:
netstat -ano | findstr ":9222"
您应该看到Chrome正在侦听端口9222。
3.启动代理服务器
选项A:使用启动器脚本 (推荐)
start.bat
选项B:使用npm
npm start
选项C:手动启动
npm run build
node dist/server.js
您应该看到:
============================================================
MCP Chrome Proxy Server Started
============================================================
[Server] Listening on: http://0.0.0.0:3000
[Server] SSE Endpoint: http://0.0.0.0:3000/mcp
[Server] Health Check: http://0.0.0.0:3000/health
[Chrome] Connecting to: http://localhost:9222
============================================================
[Info] To configure Claude Code from WSL, run:
claude mcp add --transport http chrome-proxy http://<WSL_HOST_IP>:3000/mcp
[Ready] Waiting for connections...
4.在WSL中配置Claude代码
在WSL终端中,将代理服务器添加为MCP服务器:
claude mcp add --transport http chrome-proxy http://<WSL_HOST_IP>:3000/mcp
注: 替换 <WSL_HOST_IP> 使用WSL2的Windows主机IP。要从WSL查找您的Windows IP,请使用:
cat /etc/resolv.conf | grep nameserver | awk '{print $2}'
5.验证连接
从WSL测试运行状况端点:
curl http://<WSL_HOST_IP>:3000/health
替换 <WSL_HOST_IP> 使用上面的命令找到IP(通常类似于 172.x.x.1).
您应该看到:
{"status":"ok","chrome_url":"http://localhost:9222"}
用法
配置后,您可以在WSL的Claude Code CLI中使用Chrome DevTools命令:
> Navigate to youtube
> Take a screenshot
> Click on the search box
> Fill the search box with "MCP servers"
> List all pages
可用的Chrome DevTools工具
该代理公开了以下所有26个工具 chrome-devtools-mcp:
导航
navigate_page-导航到URL、后退、前进或重新加载new_page-打开新的浏览器选项卡close_page-关闭浏览器选项卡list_pages-列出所有打开的选项卡select_page-切换到特定选项卡wait_for-等待文本出现在页面上
输入自动化
click-点击一个元素drag-拖放元素fill-填写输入字段fill_form-一次填写多个表单字段handle_dialog-处理浏览器对话框(警报、确认)hover-将鼠标悬停在元素上press_key-按键盘键upload_file-通过文件输入上传文件
检查与调试
take_snapshot-拍摄页面的文本快照take_screenshot-截图evaluate_script-在页面中运行JavaScriptlist_console_messages-列出控制台消息get_console_message-获取特定的控制台消息list_network_requests-列出网络请求get_network_request-获取网络请求的详细信息
仿真与性能
emulate-模拟移动设备、网络条件resize_page-调整浏览器窗口大小performance_start_trace-开始性能分析performance_stop_trace-停止性能分析performance_analyze_insight-分析绩效洞察
配置
环境变量
您可以使用环境变量自定义代理服务器:
PORT-服务器端口(默认值:3000)HOST-绑定地址(默认值:0.0.0.0)CHROME_URL-Chrome DevTools URL(默认值:http://localhost:9222)
例子:
set PORT=8080
set CHROME_URL=http://localhost:9222
npm start
自定义Chrome端口
如果Chrome在其他端口上运行:
set CHROME_URL=http://localhost:9223
npm start
故障排除
Chrome连接问题
问题: [Chrome] Failed to connect
解决:
-
验证Chrome是否正在运行
--remote-debugging-port=9222:netstat -ano | findstr ":9222" -
关闭所有Chrome实例,然后使用标记重新启动:
taskkill /F /IM chrome.exe "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 -
尝试手动访问Chrome DevTools:
- 打开浏览器并转到
http://localhost:9222/json - 您应该看到一个JSON页面列表
- 打开浏览器并转到
WSL连接问题
问题: 无法从WSL连接到Windows
解决:
-
从WSL查找您的Windows IP:
cat /etc/resolv.conf | grep nameserver | awk '{print $2}' -
测试连接性:
curl http://<WINDOWS_IP>:3000/health -
检查Windows防火墙:
- 打开Windows Defender防火墙
- 允许Node.js通过防火墙
- 或暂时禁用防火墙进行测试
-
确保服务器已绑定到
0.0.0.0,不127.0.0.1
间歇性连接故障
问题: claude mcp list 第一次成功,然后在后续尝试中失败
原因: 这是早期版本中的一个错误,在客户端断开连接后,MCP服务器实例仍处于初始化状态。
解决方案:
- 已修复 当前版本(v1.1+)
- 服务器现在会在SSE断开连接后自动重新创建会话
- 您应该在日志中看到这一点:
Cleaning up session after SSE disconnect - 每个新连接都会创建一个新的服务器实例
验证:
# Run multiple times - should all succeed
for i in {1..5}; do
echo "Test $i:"
claude mcp list
sleep 1
done
所有尝试都应该显示 ✓ Connected
服务器日志显示“服务器已初始化”
问题: 日志中有关服务器初始化的错误消息
解决方案:
- 更新到最新版本(v1.1+)
- 添加了会话娱乐逻辑来解决此问题
- 旧的解决方法:在连接之间重新启动服务器(v1.1+中不需要)
端口已在使用中
问题: [Error] Port 3000 is already in use!
解决:
-
查找使用端口的内容:
netstat -ano | findstr ":3000" -
终止进程或使用其他端口:
set PORT=8080 npm start
未安装依赖项
问题: npm install 失败
解决:
-
清除npm缓存:
npm cache clean --force -
删除
node_modules然后重试:rmdir /s /q node_modules npm install -
更新npm:
npm install -g npm@latest
发展
项目结构
MCP-Proxy/
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── start-chrome.ps1 # Chrome launcher (PowerShell)
├── start.bat # Proxy server launcher
├── README.md # This file
├── src/
│ └── server.ts # Main proxy server implementation
└── dist/ # Compiled JavaScript (generated)
└── server.js
建筑
npm run build
在发展中奔跑
npm run dev
代码概述
代理服务器(src/server.ts)由以下部分组成:
-
ChromeProxyServer类
- 管理MCP服务器实例
- 生成物
chrome-devtools-mcp作为子流程 - 通过MCP客户端转发工具调用
-
HTTP/SSE传输
- 收听
0.0.0.0:3000 - 暴露
/mcpSSE连接的端点 - 提供
/health状态检查的端点
- 收听
-
请求转发
listTools()-返回可用的Chrome工具callTool()-将工具执行转发到Chrome
安全考虑
- 服务器绑定到
0.0.0.0允许WSL连接 - 仅接受来自受信任WSL实例的连接
- Chrome DevTools通过仅限本地主机的绑定具有自己的安全性
- 如果暴露在不受信任的网络中,请考虑添加身份验证
许可证
麻省理工学院
版本和更改日志
当前版本: 1.1.0
v1.1.0-会话管理稳定性
- 修复了关键错误:“服务器已初始化”错误
- 实现了SSE断开连接后的自动服务器重新创建
- 添加了增强的日志记录,包括请求ID和生命周期跟踪
- 改进了CORS标头以实现跨源兼容性
- 长期会话的连接保持活动支持
v1.0.0-初始版本
- Chrome DevTools的基本MCP HTTP代理
- WSL Windows网络桥接
- 支持26个Chrome DevTools工具
鸣谢
- 内置 @模型上下文协议/sdk
- 用途 chrome开发工具mcp 用于Chrome集成
- 为解决WSL Windows Chrome网络挑战而创建
- 受MCP SDK状态传输设计启发的会话管理模式