# fortress

fortress gives an AI agent a Chromium browser for loading pages that block ordinary scripts. Use it for data collection from protected sites.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 777
- Author: tiliondev
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/tiliondev/fortress
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/mcp/fortress

## What it does

fortress runs a Chromium-based browser that an agent can use to load pages protected by Cloudflare, DataDome, and CAPTCHA. The server is also built for extracting page data. It fits browser-based collection tasks where a regular automated browser gets blocked.

To install it in Claude Code, use `uvx tilion` with the `TILION_API_KEY` environment variable. The setup command also has options for headless mode, prewarming, and private egress. The install command needs a value for `TILION_API_KEY` to be fully configured.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `TILION_MCP_PREWARM`, `TILION_MCP_HEADLESS`, `TILION_ALLOW_PRIVATE_EGRESS`, `TILION_BASE_URL`, `TILION_API_KEY` — keys and tokens: ask the human for the values, never commit them or put them in shared files.
- Works with: Chrome

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env TILION_MCP_PREWARM=<TILION_MCP_PREWARM> --env TILION_MCP_HEADLESS=<TILION_MCP_HEADLESS> --env TILION_ALLOW_PRIVATE_EGRESS=<TILION_ALLOW_PRIVATE_EGRESS> --env TILION_BASE_URL=<TILION_BASE_URL> --env TILION_API_KEY=<TILION_API_KEY> --transport stdio fortress -- uvx tilion
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from tilion <command>

### Codex

**Platform CLI**
```bash
codex mcp add fortress --env TILION_MCP_PREWARM=<TILION_MCP_PREWARM> --env TILION_MCP_HEADLESS=<TILION_MCP_HEADLESS> --env TILION_ALLOW_PRIVATE_EGRESS=<TILION_ALLOW_PRIVATE_EGRESS> --env TILION_BASE_URL=<TILION_BASE_URL> --env TILION_API_KEY=<TILION_API_KEY> -- uvx tilion
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from tilion <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "fortress": {
            "command": "uvx",
            "args": [
                "tilion"
            ],
            "env": {
                "TILION_MCP_PREWARM": "<TILION_MCP_PREWARM>",
                "TILION_MCP_HEADLESS": "<TILION_MCP_HEADLESS>",
                "TILION_ALLOW_PRIVATE_EGRESS": "<TILION_ALLOW_PRIVATE_EGRESS>",
                "TILION_BASE_URL": "<TILION_BASE_URL>",
                "TILION_API_KEY": "<TILION_API_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from tilion <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "fortress": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "tilion"
            ],
            "env": {
                "TILION_MCP_PREWARM": "<TILION_MCP_PREWARM>",
                "TILION_MCP_HEADLESS": "<TILION_MCP_HEADLESS>",
                "TILION_ALLOW_PRIVATE_EGRESS": "<TILION_ALLOW_PRIVATE_EGRESS>",
                "TILION_BASE_URL": "<TILION_BASE_URL>",
                "TILION_API_KEY": "<TILION_API_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from tilion <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e TILION_MCP_PREWARM=<TILION_MCP_PREWARM> -e TILION_MCP_HEADLESS=<TILION_MCP_HEADLESS> -e TILION_ALLOW_PRIVATE_EGRESS=<TILION_ALLOW_PRIVATE_EGRESS> -e TILION_BASE_URL=<TILION_BASE_URL> -e TILION_API_KEY=<TILION_API_KEY> fortress uvx tilion
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from tilion <command>

## When to use it
- load a page protected by Cloudflare
- retrieve data from a site that blocks browser automation
- collect details from CAPTCHA-protected pages
- give an agent browser tools through MCP

## Example prompts
- Open this page and extract its key details.
- Try loading the page that blocks a regular browser script.
- Collect information from pages protected by CAPTCHA.

## Similar
- [browser-control](https://affpapa.org/en/nevibecode/skills/browser-control.md) — skill · 1000 installs
- [setup-browser-cookies](https://affpapa.org/en/nevibecode/skills/setup-browser-cookies.md) — skill · 342 installs
- [open-gstack-browser](https://affpapa.org/en/nevibecode/skills/open-gstack-browser.md) — skill · 318 installs
- [Kernel MCP Server](https://affpapa.org/en/nevibecode/mcp/kernel-mcp-server.md) — MCP server · ★ 38
- [anti-detect-browser](https://affpapa.org/en/nevibecode/skills/anti-detect-browser.md) — skill · 137300 installs
- [openbrowser-ai](https://affpapa.org/en/nevibecode/mcp/openbrowser-ai.md) — MCP server · ★ 279

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
