Tools

Ghost-Browser

Headless browser automation with built-in fingerprint masking, tracker blocking, and per-session isolation.

Overview

Ghost-Browser is an MPP-signed MCP tool that provides headless browser automation with strong privacy defaults. It is designed for agent workflows that need to navigate the web without leaking fingerprinting data, without persistent state, and with automatic tracker blocking.

Each browser session is fully isolated. No cookies, storage, or fingerprinting data persist between sessions.

Installation

mpp install @q2x/ghost-browser

MCP Tools Provided

navigate

Navigate to a URL and return the page content.

Input:

{
  "url": "https://example.com/page",
  "waitFor": "networkidle",
  "extractContent": true,
  "blockTrackers": true
}

Output:

{
  "url": "https://example.com/page",
  "title": "Example Page",
  "content": "Extracted text content...",
  "html": "<html>...",
  "statusCode": 200,
  "trackersBlocked": 12,
  "sessionId": "gs_abc123"
}

screenshot

Capture a screenshot of a page, optionally of a specific element.

Input:

{
  "url": "https://example.com",
  "selector": ".main-content",
  "format": "webp",
  "fullPage": false
}

Output: Base64-encoded image data with MIME type.

extractData

Navigate to a page and extract structured data using CSS selectors or ARIA roles.

Input:

{
  "url": "https://example.com/products",
  "schema": {
    "products": {
      "selector": ".product-card",
      "fields": {
        "name": ".product-name",
        "price": ".product-price",
        "sku": "[data-sku]"
      }
    }
  }
}

Output:

{
  "products": [
    { "name": "Widget A", "price": "£24.99", "sku": "WGT-001" },
    { "name": "Widget B", "price": "£39.99", "sku": "WGT-002" }
  ]
}

fillForm

Fill and optionally submit a web form.

Input:

{
  "url": "https://example.com/contact",
  "fields": {
    "#name": "Test User",
    "#email": "test@example.com",
    "#message": "Automated test message"
  },
  "submitSelector": "button[type=submit]",
  "dryRun": true
}

Set dryRun: true to fill without submitting — useful for verification.

Privacy Features

Fingerprint Masking

Ghost-Browser randomises:

  • User-Agent string (from a realistic pool of browser/OS combinations)
  • Canvas fingerprint
  • WebGL renderer information
  • Screen resolution and colour depth
  • Timezone (configurable or randomised)
  • Accept-Language headers

Tracker Blocking

Automatically blocks requests to known tracking domains using an EasyList-derived blocklist. Updated weekly. Blocking can be disabled per-navigation.

Session Isolation

Each call creates a fresh browser context with no shared state. Cookies, localStorage, IndexedDB, and service workers are cleared between sessions by default. Optional named sessions allow state sharing within a defined scope.

No Persistent Storage

Ghost-Browser maintains no disk state between invocations. The WASM sandbox writes only to an in-memory tmpfs, which is discarded on exit.

Capability Manifest

{
  "capabilities": {
    "filesystem": {
      "write": ["/tmp/ghost-browser-session"]
    },
    "network": {
      "outbound": ["*"]
    },
    "env": ["GHOST_BROWSER_PROXY"]
  }
}

Network access is required for browser navigation. The GHOST_BROWSER_PROXY variable is optional — set it to route traffic through a proxy.

Rate Limits and Concurrency

  • Maximum 5 concurrent browser sessions per process
  • Navigation timeout: 30 seconds (configurable up to 120 seconds)
  • Maximum page size: 50 MB

Changelog

v1.4.0extractData structured extraction, ARIA role selectors v1.3.0 — Configurable session naming, improved fingerprint pool v1.2.0fillForm method, dryRun mode v1.1.0 — Tracker blocklist, weekly update mechanism v1.0.0 — Initial release