浏览器控制协议服务器

Camoufox MCP Server是一款基于Camoufox反检测浏览器的模型上下文协议服务器,用于网页抓取、表单自动化和网络分析。

  • by Sekinal
  • Python
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 Sekinal/camoufox-mcp

使用说明

迷彩MCP服务器

MCP(模型上下文协议)服务器 迷彩 -基于Firefox构建的反检测浏览器。该服务器使Claude能够控制一个隐秘的浏览器,用于网络抓取、表单自动化和网络分析。

特性

  • 浏览器控件:启动、关闭和管理多个浏览器选项卡
  • 反检测:基于迷彩,具有自动指纹欺骗功能
  • 网络分析:捕获并分析所有HTTP请求/响应
  • 页面交互:单击、填写表单、键入、选择下拉菜单、复选框
  • 内容提取:从任何元素获取文本、HTML和属性
  • JavaScript执行:在页面上下文中运行自定义JS
  • 截图:捕获整页或特定元素
  • Cookie/存储:管理Cookie和本地存储
  • 类人行为:可选光标人性化
  • Docker支持:完全容器化部署,可选VNC调试

快速入门(Docker-推荐)

选项1:Docker编写(最简单)

# Clone the repo
git clone <repo-url>
cd camoufox-mcp

# Start the server
docker compose up -d camoufox

# Or with VNC debugging (view browser at http://localhost:6080)
docker compose --profile debug up -d

选项2:Docker运行

# Build the image
docker build -t camoufox-mcp .

# Run for MCP
docker run -i --rm camoufox-mcp

Claude代码配置(Docker)

添加到 ~/.claude/settings.json:

{
  "mcpServers": {
    "camoufox": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "camoufox-mcp"]
    }
  }
}

或者使用Docker Compose:

{
  "mcpServers": {
    "camoufox": {
      "command": "docker",
      "args": ["compose", "-f", "/path/to/camoufox-mcp/docker-compose.yml", "run", "--rm", "-T", "camoufox"]
    }
  }
}

安装(本地开发)

# Clone and enter directory
cd camoufox-mcp

# Install dependencies with uv
uv sync

# Install Camoufox browser (downloads custom Firefox build)
uv run python -c "from camoufox.sync_api import Camoufox; print('OK')"

# Install Playwright browsers
uv run playwright install firefox

克劳德代码配置(本地)

添加到 ~/.claude/settings.json:

{
  "mcpServers": {
    "camoufox": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/camoufox-mcp", "run", "python", "main.py"]
    }
  }
}

然后重新启动Claude Code。


Docker编写配置文件

配置文件 命令 描述
默认值 docker compose up camoufox 仅限MCP服务器
调试 docker compose --profile debug up MCP+noVNC网络查看器
测试 docker compose --profile test up 运行测试套件

VNC调试

使用时 debug 配置文件,您可以实时查看浏览器:

  1. 从调试配置文件开始: docker compose --profile debug up
  2. 打开http://localhost:6080在浏览器中
  3. 观看克劳德实时控制浏览器!

环境变量

复制 .env.example 到 .env 并自定义:

# Enable VNC server (for debugging)
ENABLE_VNC=true

# VNC port (default: 5900)
VNC_PORT=5900

# noVNC web viewer port (default: 6080)
NOVNC_PORT=6080

# Screenshot settings
CAMOUFOX_SCREENSHOT_DIR=/tmp/camoufox_screenshots  # Directory for auto-saved screenshots
CAMOUFOX_SCREENSHOT_AUTO_SAVE=true                  # Always save to file (no base64)

卷

Docker设置仍然存在:

  • ./data/screenshots/ -已保存的屏幕截图
  • ./data/downloads/ -已下载的文件
  • camoufox-cache -浏览器缓存(用于更快的启动)

可用工具(共55个)

浏览器管理

工具 说明
launch_browser 启动带有反检测选项的迷彩服(无头、代理、操作系统欺骗、人性化)
close_browser 关闭浏览器并清理资源
new_page 创建新的浏览器选项卡
switch_page 在选项卡之间切换
list_pages 列出所有打开的带有URL的选项卡
get_browser_info 获取浏览器会话状态

导航

工具 说明
goto 导航到URL
reload 重新加载当前页面
go_back 返回历史记录
go_forward 在历史中向前导航
get_url 获取当前页面URL
get_page_title 获取页面标题

页面交互

工具 说明
click 单击元素(支持CSS、XPath)
fill 用值填充输入/文本区域
type_text 逐个字符键入文本(类人)
press_key 按键盘键(Enter、Tab等)
select_option 按值/标签/索引选择下拉选项
check 选中复选框或单选按钮
uncheck 取消选中复选框
hover 将鼠标悬停在元素上
scroll 滚动页面或元素进入视图
upload_file 上传文件到文件输入

复合动作(令牌高效)

工具 说明
batch_actions 在一次通话中执行多个操作(点击、填写、键入、按下、选择等)
fill_form 使用可选提交功能一次填写多个表单字段
click_text 按文本内容单击元素(不需要选择器)
click_role 按ARIA角色(按钮、链接等)单击元素
fill_by_label 按标签文本填充输入(不需要选择器)
fill_placeholder 用占位符文本填充输入(不需要选择器)

内容提取

工具 说明
get_text 从元素或页面获取文本内容
get_html 获取HTML(内部或外部)
get_attribute 获取元素属性值
query_selector_all 查询多个元素,提取数据
inspect_element 获取详细的元素信息(标签、rect、属性)

网络分析

工具 说明
get_network_log 通过过滤获取捕获的请求
clear_network_log 清除捕获的网络日志
set_network_capture 启用/禁用捕获,包括身体
wait_for_request 等待特定的请求模式
wait_for_response 等待特定的响应模式

屏幕截图和视口

工具 说明
screenshot 截图(保存到文件,返回路径-无base64保存上下文)
get_viewport_size 获取当前视口尺寸
set_viewport_size 设置视口尺寸

JavaScript

工具 说明
evaluate 在页面上下文中执行JavaScript
evaluate_on_element 对特定元素执行JS

等待

工具 说明
wait_for_selector 等待元素状态(可见、隐藏等)
wait_for_load_state 等待页面加载状态
wait 等待指定的毫秒

Cookie和存储

工具 说明
get_cookies 获取所有Cookie
set_cookie 设置cookie
clear_cookies 清除所有Cookie
get_local_storage 获取本地存储数据
set_local_storage 设置本地存储项

框架和对话框

工具 说明
list_frames 列出页面中的所有框架
frame_locator 与iframe中的元素交互
handle_dialog 设置对话框(警报/确认/提示)处理程序
get_console_logs 捕获控制台日志

使用示例

基本Web剪贴

User: Launch a browser and go to example.com, then get the page title

Claude: [Uses launch_browser, goto, get_page_title]

表单自动化(令牌高效)

User: Fill out the login form with username "test" and password "secret", then submit

Claude: [Uses fill_form with {"#username": "test", "#password": "secret"} and submit_selector]
# OR uses fill_by_label for "Username" and "Password" fields
# OR uses batch_actions with multiple fill + click actions

网络分析

User: Go to the website and show me all API calls it makes

Claude: [Uses set_network_capture, goto, get_network_log with filtering]

调试会话

User: Take a screenshot and inspect the submit button element

Claude: [Uses screenshot, inspect_element]

运行测试

本地

uv run pytest test_server.py -v --tb=short

码头工人

docker compose --profile test run --rm test

发展

# Run server directly (for debugging)
uv run python main.py

# Check available tools
uv run python -c "from main import mcp; print([t.name for t in mcp._tool_manager._tools.values()])"

# Build Docker image
docker build -t camoufox-mcp .

# Run with VNC for debugging
ENABLE_VNC=true docker compose --profile debug up

建筑

camoufox-mcp/
├── main.py              # MCP server with 49 tools
├── test_server.py       # Comprehensive test suite (16 tests)
├── Dockerfile           # Multi-stage Docker build
├── docker-compose.yml   # Compose config with profiles
├── docker-entrypoint.sh # Xvfb + VNC startup script
├── pyproject.toml       # Python dependencies
└── README.md            # This file

技术


故障排除

浏览器无法在Docker中启动

确保Xvfb正在运行。检查日志:

docker compose logs camoufox

VNC未连接

  1. 确保 ENABLE_VNC=true 已设置
  2. 检查端口5900是否未使用
  3. 对于noVNC,请检查端口6080

MCP连接问题

  1. 验证Docker是否正在运行
  2. 检查Claude设置中使用的命令 -i 旗帜
  3. 尝试手动运行: docker run -i --rm camoufox-mcp

许可证

麻省理工学院

学分