使用说明
浏览器cp
MCP服务器,让AI助手完全控制您的浏览器。适用于Claude Code、Cursor和任何兼容MCP的客户端。
关键优势:使用您的真实浏览器会话,包括所有Cookie、身份验证令牌和扩展——没有无头浏览器,没有403错误。
建筑
AI Client (Claude Code) --stdio--> MCP Server (Node.js) --WebSocket--> Chrome Extension
port 12800
三个组成部分:
- MCP服务器 --Node.js进程,通过stdio与AI通信,通过WebSocket桥接到浏览器
- WebSocket网桥 --在端口12800上运行,将服务器连接到扩展
- Chrome 扩展 --Manifest V3,使用Chrome API在浏览器中执行命令
36工具
核心
| 工具 | 说明 |
|---|---|
browser_navigate |
打开URL并返回页面内容 |
browser_read_page |
从活动或特定选项卡读取内容(text/html/full) |
browser_list_tabs |
列出所有打开的标签,包括ID、URL和标题 |
browser_close_tab |
按ID关闭选项卡 |
browser_click |
通过CSS选择器单击元素 |
browser_type |
在输入框中键入文本 |
browser_screenshot |
将可见选项卡捕获为PNG |
browser_execute_js |
在页面上运行JavaScript |
导航
| 工具 | 说明 |
|---|---|
browser_scroll |
按方向/像素滚动或滚动到CSS选择器 |
browser_back |
返回历史记录 |
browser_forward |
在历史中向前导航 |
browser_switch_tab |
激活并聚焦选项卡 |
browser_keyboard |
按带有修饰符的键,在输入中插入字符 |
browser_hover |
将鼠标悬停在元素上(鼠标输入/鼠标悬停) |
browser_select |
在下拉菜单中选择选项 |
数据提取
| 工具 | 说明 |
|---|---|
browser_get_links |
提取所有链接,可选择过滤 |
browser_get_elements |
通过带有属性的CSS选择器查询元素 |
browser_extract_table |
将表解析为结构化JSON(头+行) |
browser_extract_meta |
提取元标签、OpenGraph、推特卡、JSON-LD |
browser_extract_images |
获取所有包含src、alt、dimensions的图像 |
browser_get_cookies |
读取URL的Cookie |
browser_get_storage |
读取本地存储或会话存储 |
公用事业
| 工具 | 说明 |
|---|---|
browser_wait_for |
等待元素出现(MutationObserver) |
browser_new_tab |
打开新选项卡 |
browser_reload |
重新加载选项卡(具有可选的缓存旁路) |
browser_set_storage |
写入本地存储或会话存储 |
browser_set_cookies |
设置cookie |
browser_find_text |
在带有上下文的页面上搜索文本 |
监控
| 工具 | 说明 |
|---|---|
browser_console_log |
捕获控制台.log/警告/错误(启动/获取/停止) |
browser_network_log |
捕获获取/XHR请求(启动/获取/停止) |
browser_get_computed_style |
读取计算的CSS属性 |
browser_inject_css |
将自定义CSS注入页面 |
browser_highlight |
用彩色轮廓突出显示元素 |
browser_readability |
提取主要文章内容(读者模式) |
browser_watch_changes |
观察DOM突变(启动/获取/停止) |
窗口管理
| 工具 | 说明 |
|---|---|
browser_new_window |
打开新窗口(带大小,隐藏) |
browser_close_window |
按ID关闭窗口 |
browser_resize_window |
调整窗口大小 |
browser_move_tab |
在窗口之间移动选项卡 |
browser_pin_tab |
别针/不愉快标签 |
browser_mute_tab |
静音/取消静音选项卡 |
高级交互
| 工具 | 说明 |
|---|---|
browser_right_click |
右键单击(上下文菜单事件) |
browser_double_click |
双击 |
browser_drag_drop |
在元素之间拖放 |
安装
1.克隆和构建
git clone https://github.com/Smotree/BrowserMCP.git
cd BrowserMCP
npm install
npm run build
2.加载Chrome扩展程序
- 打开
chrome://extensions/ - 启用 开发人员模式 (右上)
- 点击 加载未打包的
- 选择
extension/文件夹
3.配置您的MCP客户端
自动安装(推荐)
运行安装脚本——它会自动检测Claude Code、VS Code、Cursor和Claude Desktop:
npm run install-mcp # install to all detected clients
npm run install-mcp -- --uninstall # remove from all
手动设置
Claude Code — ~/.claude.json (user-scoped, all projects)
通过CLI:
claude mcp add --transport stdio --scope user browser -- node /path/to/BrowserMCP/server/dist/index.js
或手动添加到 ~/.claude.json:
{
"mcpServers": {
"browser": {
"type": "stdio",
"command": "node",
"args": ["/path/to/BrowserMCP/server/dist/index.js"]
}
}
}
仅针对单个项目,添加 .mcp.json 以相同的格式发送到项目根目录。
VS Code — %APPDATA%/Code/User/mcp.json (Win) / ~/Library/Application Support/Code/User/mcp.json (Mac)
{
"servers": {
"browser": {
"command": "node",
"args": ["/path/to/BrowserMCP/server/dist/index.js"],
"type": "stdio"
}
}
}
如果文件已经有其他服务器,只需添加 "browser": { ... } 里面 "servers".
Cursor — %APPDATA%/Cursor/User/mcp.json (Win) / ~/Library/Application Support/Cursor/User/mcp.json (Mac)
格式与上述VS代码相同。
Claude Desktop — %APPDATA%/Claude/claude_desktop_config.json (Win) / ~/Library/Application Support/Claude/claude_desktop_config.json (Mac)
{
"mcpServers": {
"browser": {
"command": "node",
"args": ["/path/to/BrowserMCP/server/dist/index.js"]
}
}
}
4.验证
扩展徽章显示 开 (绿色)连接时, 关闭 (红色)断开连接时。服务器启动后,扩展程序会在1-2秒内自动重新连接。
测试
包含一个测试页面和两个测试脚本:
# Serve the test page
npm run test:serve
# Quick test — verifies all tools with DOM state checks
# (close Claude Code first to free port 12800)
npm run test:quick
# Demo test — visual walkthrough of all tools for screen recording
npm run test:demo
两个测试脚本在启动之前都会自动终止端口12800上的任何进程。
配置
| 环境变量 | 默认值 | 描述 |
|---|---|---|
BROWSER_MCP_WS_PORT |
12800 |
用于服务器扩展通信的WebSocket端口 |
多实例(HTTP中继)
当打开多个IDE窗口时,每个窗口都会启动自己的BrowserMCP服务器。第一个实例拥有12800端口,并直接连接到Chrome扩展程序。后续实例检测到端口繁忙并自动切换到 HTTP中继模式 --它们通过第一个实例代理命令 /exec 终点。这是透明的:无论您使用哪个实例,所有工具的工作原理都是一样的。
项目结构
BrowserMCP/
extension/ Chrome extension (Manifest V3)
background.js Service worker — WebSocket client, command handlers
manifest.json Extension manifest
popup.html/js Connection status popup
icons/ Extension icons
server/ MCP server (TypeScript)
src/
index.ts Entry point — stdio transport + WS bridge
mcp-server.ts Creates MCP server, registers tools
ws-bridge.ts WebSocket server with request correlation
types.ts Shared types
tools/ Tool definitions by category
core.ts navigate, read_page, list_tabs, etc.
navigation.ts scroll, back, forward, keyboard, etc.
extraction.ts get_links, extract_table, get_cookies, etc.
utilities.ts wait_for, new_tab, reload, find_text, etc.
interaction.ts right_click, double_click, drag_drop
monitoring.ts console_log, network_log, inject_css, etc.
window.ts new_window, resize_window, pin_tab, etc.
content.ts highlight, readability, watch_changes, etc.
test/
test-page.html Test page exercising all 36 tools
quick-test.mjs Automated test with assertions
demo-test.mjs Visual demo for screen recording
运作原理
- MCP客户端(克劳德代码)生成
node server/dist/index.js作为一个孩子的过程 - 服务器通过stdin/stdout(MCP协议)与客户端通信
- 服务器在端口12800上启动WebSocket服务器
- Chrome扩展程序连接到WebSocket并等待命令
- 当调用工具时,服务器通过WebSocket向扩展发送命令
- 扩展程序使用Chrome API执行命令并返回结果
- 服务器将结果转发回MCP客户端
许可证
麻省理工学院