MCP server for browser automation with Camoufox anti-detection capabilities
Camoufox MCP Server
A Python MCP (Model Context Protocol) server providing full browser automation with Camoufox anti-detection capabilities.
Features
- 21 browser automation tools for complete browser control
- Anti-detection: Automatic fingerprint randomization to avoid bot detection
- Lazy initialization: Browser only launches on first tool call
- Persistent sessions: Browser persists between tool calls
- Tab management: Support for multiple tabs/pages
- Form automation: Fill forms, upload files, handle dialogs
Installation
Quick Start (uvx - recommended)
uvx camoufox-mcp
Using pipx
pipx run camoufox-mcp
Using pip
pip install camoufox-mcp
camoufox-mcp
From source
# Clone the repository
git clone https://github.com/rlgrpe/camoufox-mcp-python.git
cd camoufox-mcp-python
# Install with uv
uv sync
Install Camoufox browser
After installing the package, you need to download the Camoufox browser binary. The command depends on how you installed the package:
If installed via uvx (recommended)
uvx camoufox fetch
If installed via pipx
pipx run camoufox fetch
If installed via pip
# macOS
python3 -m camoufox fetch
# Linux
python -m camoufox fetch
# Windows
camoufox fetch
If installed from source (uv)
uv run python -m camoufox fetch
Linux system dependencies
On Linux, you also need to install system dependencies:
# Ubuntu/Debian
sudo apt install -y libgtk-3-0 libx11-xcb1 libasound2
# Arch
sudo pacman -S gtk3 libx11 libxcb cairo libasound alsa-lib
To uninstall the browser binary
# Use the same method as installation:
uvx camoufox remove # if using uvx
pipx run camoufox remove # if using pipx
camoufox remove # if using pip
uv run python -m camoufox remove # if using uv from source
Usage
Start the server
# Using uvx (recommended)
uvx camoufox-mcp
# Using uv (from source)
uv run camoufox-mcp
# Or as a module
python -m camoufox_mcp
Add to Claude Code
claude mcp add camoufox-mcp -- uvx camoufox-mcp
Claude Desktop Configuration
Add to your Claude Desktop config file:
{
"mcpServers": {
"camoufox-mcp": {
"command": "uvx",
"args": ["camoufox-mcp"]
}
}
}
Or if running from source:
{
"mcpServers": {
"camoufox-mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/camoufox-mcp-python",
"camoufox-mcp"
]
}
}
}
Tools Reference
Navigation (4 tools)
| Tool | Description |
|------|-------------|
| browser_navigate | Navigate to a URL |
| browser_navigate_back | Go back to the previous page |
| browser_snapshot | Capture accessibility snapshot of the current page |
| browser_wait_for | Wait for text to appear/disappear or a specified time |
Interaction (6 tools)
| Tool | Description |
|------|-------------|
| browser_click | Click on an element |
| browser_type | Type text into an element |
| browser_hover | Hover over an element |
| browser_drag | Drag and drop between two elements |
| browser_press_key | Press a key on the keyboard |
| browser_select_option | Select an option in a dropdown |
Page (4 tools)
| Tool | Description |
|------|-------------|
| browser_evaluate | Evaluate JavaScript on the page or element |
| browser_console_messages | Get console messages |
| browser_network_requests | Get network requests |
| browser_take_screenshot | Take a screenshot |
Forms (3 tools)
| Tool | Description |
|------|-------------|
| browser_fill_form | Fill multiple form fields |
| browser_file_upload | Upload files |
| browser_handle_dialog | Handle dialogs (alert, confirm, prompt) |
Session (4 tools)
| Tool | Description |
|------|-------------|
| browser_tabs | List, create, close, or select tabs |
| browser_resize | Resize the browser window |
| browser_close | Close the browser |
| browser_install | Install Camoufox browser |
Configuration
The browser can be configured via the BrowserConfig class in camoufox_mcp/config.py. Available options:
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| os | str | None | OS to spoof (windows/macos/linux) |
| headless | bool/str | False | Headless mode (or 'virtual') |
| humanize | bool/float | True | Human-like cursor movements |
| geoip | bool | True | Auto-detect geolocation from IP |
| proxy | str/dict | None | Proxy configuration |
| block_webrtc | bool | True | Block WebRTC leaks |
| block_webgl | bool | False | Block WebGL fingerprinting |
| block_images | bool | False | Block image loading |
| locale | str | None | Browser locale |
| viewport | dict | None | Viewport dimensions |
| enable_cache | bool | True | Enable caching |
| timeout | int | 30000 | Page load timeout (ms) |
| wait_strategy | str | "domcontentloaded" | Wait strategy |
| ublock | bool | False | Enable uBlock Origin |
Proxy Configuration Example
proxy = {
'server': 'http://proxy.example.com:8080',
'username': 'user',
'password': 'pass'
}
Development
# Install dev dependencies
uv sync --dev
# Run tests
uv run pytest
# Format code
uv run ruff format
# Lint
uv run ruff check
License
MIT License - see LICENSE for details.