MCP server for browser automation with Camoufox anti-detection capabilities
Project description
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:
# macOS
python3 -m camoufox fetch
# Linux
python -m camoufox fetch
# Also 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
# Windows
camoufox fetch
To uninstall the browser binary:
camoufox remove
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.
Related Projects
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file camoufox_mcp-0.1.0.tar.gz.
File metadata
- Download URL: camoufox_mcp-0.1.0.tar.gz
- Upload date:
- Size: 152.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75dab8bf84edfd7a9d1feb08b8032de950d402ce27c5b75ad8dc420ec45599f7
|
|
| MD5 |
e697bbdb10be8d3921ddc2703e863fe9
|
|
| BLAKE2b-256 |
1a777b912ec73d6e46618cdb6b8e9140ee7077a2f32158a762494bf503902d85
|
File details
Details for the file camoufox_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: camoufox_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
488cdbd6cdd452c3ee577ed0201fb977d5b1a198afca636f8fcdc04fd3d098bc
|
|
| MD5 |
1cb7b89372a91bc0e672daef3e979fce
|
|
| BLAKE2b-256 |
32ecca56bf7d4ea52120591150707b447cc92eebda3d2e328e0e8afb68de0670
|