Metadata-Version: 2.4
Name: chromium-sync-mcp
Version: 0.3.1
Summary: MCP server for accessing Chromium browser data (tabs, history, bookmarks) from Brave, Chrome, and Chromium
Project-URL: Homepage, https://github.com/jaidhyani/chromium-sync-mcp
Project-URL: Repository, https://github.com/jaidhyani/chromium-sync-mcp
Project-URL: Issues, https://github.com/jaidhyani/chromium-sync-mcp/issues
Author-email: Jai Dhyani <jai@dhyani.net>, "Claude Opus 4.5" <noreply@anthropic.com>
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: bookmarks,brave,browser,chrome,chromium,claude,history,mcp,sync,tabs
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.11
Requires-Dist: mcp>=1.0.0
Requires-Dist: plyvel>=1.5.1
Provides-Extra: dev
Requires-Dist: pyright>=1.1.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.8.0; extra == 'dev'
Provides-Extra: setup
Requires-Dist: websockify>=0.12.0; extra == 'setup'
Description-Content-Type: text/markdown

# chromium-sync-mcp

MCP server for accessing browser data (tabs, history, bookmarks) from Chromium-based browsers.

Supports **Brave**, **Chrome**, and **Chromium**.

## Installation

```bash
# Using uvx (recommended)
uvx chromium-sync-mcp

# Or install with pip
pip install chromium-sync-mcp
```

### System Requirements

Requires the LevelDB library:

```bash
# Ubuntu/Debian
sudo apt-get install libleveldb-dev

# macOS
brew install leveldb

# Fedora
sudo dnf install leveldb-devel
```

## Claude Code Configuration

Add to your Claude Code MCP settings:

```json
{
  "mcpServers": {
    "chromium-sync": {
      "command": "uvx",
      "args": ["chromium-sync-mcp"]
    }
  }
}
```

## Tools

| Tool | Description |
|------|-------------|
| `get_tabs_all_devices` | Get open tabs from all synced devices |
| `get_tabs_local` | Get open tabs from the local browser session |
| `get_history` | Search browsing history with optional filters |
| `get_bookmarks` | Get bookmarks, optionally filtered by folder |
| `search_bookmarks` | Search bookmarks by title or URL |
| `select_browser` | Select which browser to use (when multiple installed) |
| `set_profile_path` | Manually set the browser profile path |
| `check_sync_status` | Check what data is accessible (for debugging) |

### get_history

Returns a JSON array of history entries. Supports substring search, regex patterns, and date filtering.

**Parameters:**

| Parameter | Type | Description |
|-----------|------|-------------|
| `query` | string | Substring match against URL and title (case-insensitive). Cannot be used with `pattern`. |
| `pattern` | string | Regex match against URL and title. Cannot be used with `query`. |
| `limit` | integer | Maximum results to return. Default: 100 |
| `days_back` | integer | Only return entries from the last N days. |
| `after` | string | ISO date or datetime. Only entries on or after this time. |
| `before` | string | ISO date or datetime. Only entries before this time. |

**Date formats:** `YYYY-MM-DD` or `YYYY-MM-DDTHH:MM:SS`

**Example response:**

```json
[
  {
    "url": "https://github.com/anthropics/claude-code",
    "title": "GitHub - anthropics/claude-code",
    "visit_time": "2026-01-11T14:30:00",
    "visit_count": 5
  }
]
```

## Configuration

### Auto-detection

The server automatically detects installed Chromium-based browsers. If multiple browsers are found, you'll be prompted to select one.

### Environment Variable

Override auto-detection by setting `CHROMIUM_PROFILE_PATH`:

```bash
export CHROMIUM_PROFILE_PATH=~/.config/google-chrome/Default
```

### Saved Preference

When prompted to select a browser, use `select_browser` with `save_default: true` to save your preference to `~/.config/chromium-sync/profile`.

## Supported Browsers

| Browser | Linux | macOS | Windows |
|---------|-------|-------|---------|
| Brave | ✓ | ✓ | ✓ |
| Chrome | ✓ | ✓ | ✓ |
| Chromium | ✓ | ✓ | ✓ |

## How It Works

This server reads directly from your browser's local profile files:

- **History**: SQLite database
- **Bookmarks**: JSON file
- **Synced Tabs**: LevelDB (contains tabs from all your synced devices)

No authentication or network requests required.

## Headless Setup (Sync Passphrase Entry)

If you're running on a headless server and need to enter your Chrome sync passphrase, use the `chromium-sync-setup` command. It launches a browser in a virtual display and provides a secure web URL for remote access.

This is a **one-time setup** per machine. Once you've entered your passphrase and sync is established, you won't need to run this again.

```bash
# If you installed via uvx (recommended)
uvx --with chromium-sync-mcp[setup] --from chromium-sync-mcp chromium-sync-setup

# If you installed via pip
pip install chromium-sync-mcp[setup]
chromium-sync-setup
```

**What it does:**
1. Starts a virtual X display (Xvnc or Xvfb)
2. Launches your browser to the sync settings page
3. Provides a secure HTTPS URL via Cloudflare tunnel

**System requirements (one of):**
- TigerVNC: `sudo apt install tigervnc-standalone-server`
- Or Xvfb + x11vnc: `sudo apt install xvfb x11vnc`

The script auto-downloads cloudflared and noVNC, so those don't need manual installation.

## License

Apache 2.0
