chrome-orchestrator

chrome-orchestrator

Enables AI agents to dynamically provision headless browser environments and connect to them through a unified HTTP/SSE MCP endpoint with persistent storage and automatic health monitoring.

Category
Visit Server

README

Chrome Orchestrator

chrome-orchestrator is a lightweight Python SDK and CLI that abstracts away Docker management for headless browser environments, specifically Arthur and gloria-headless.

It runs a long-lived background daemon that acts as a unified HTTP proxy. AI agents request a browser session, and the daemon dynamically provisions the requested Docker container, mounts persistent storage, and seamlessly proxies the stateless HTTP/SSE MCP (Model Context Protocol) endpoints on port 3000.

Features

  • Daemon Proxy Architecture: Exposes a single, unified port (3000 by default) and proxies MCP traffic to dynamically allocated Docker containers (port 8000 for Arthur, 8787 for Gloria).
  • Agent Manifests: The SDK returns a ContainerManifest containing environmental instructions so AI agents automatically understand the capabilities of the environment they just provisioned.
  • Persistent Storage: Automatically mounts a local directory (~/.chrome-orchestrator/data/<image>) to persist state across browser sessions.
  • Active Health Monitoring: The daemon actively monitors container health in the background and attempts restarts if they become unresponsive.

Environments

Both environments expose the identical execute_python tool using the chrome browser object, allowing AI agents to seamlessly write Python code regardless of the underlying backend.

  • Arthur (Default): A pure, minimal Chromium environment with exact DOM fidelity, interacting natively via CDP WebSockets. Optimal for token limits and standard browsing.
  • Gloria-Headless: An environment pre-configured with uBlock Origin Lite that interacts via the Chrome Bridge extension (Native Messaging). Use this for "hard stuff" like captcha evasion, since it behaves more like a real user browser.

Requirements

  • Python 3.9+
  • Docker or Podman installed and running. For Docker, ensure permissions to access the Docker daemon (/var/run/docker.sock). For Podman, rootful socket access is supported natively (unix:///run/podman/podman.sock) as a seamless fallback.

Installation

# From PyPI
pip install chrome-orchestrator

# Or without installing via uvx
uvx --from chrome-orchestrator orchestrator <command>

# Or from source
pip install -e .

Usage

1. Start the Daemon

First, start the background daemon proxy. This service must be running for the CLI and SDK to work.

uvx --from chrome-orchestrator orchestrator daemon

By default, the daemon runs on http://0.0.0.0:3000.

2. CLI Usage

You can manage arthur and gloria containers via the CLI:

# Provision an Arthur container
uvx --from chrome-orchestrator orchestrator arthur up

# Stop an Arthur container
uvx --from chrome-orchestrator orchestrator arthur down

# Provision a Gloria-headless container
uvx --from chrome-orchestrator orchestrator gloria up

# Stop all running orchestrator containers
uvx --from chrome-orchestrator orchestrator down

When you run up, the orchestrator will provision the container and output a static MCP HTTP URL you can connect your client to, such as http://localhost:3000/arthur/mcp.

3. Python SDK Usage

AI agents and Python scripts can use the SDK to programmatically provision and tear down environments:

from chrome_orchestrator import sdk

# Provision the environment (defaults to Arthur)
manifest = sdk.up(sdk.ContainerImage.ARTHUR)

print(f"Connected! MCP URL: {manifest.mcp_url}")
print(f"Agent Instructions:\n{manifest.instructions}")

# Your automation/MCP client connects to `manifest.mcp_url` here...

# Tear down the session when finished
sdk.down(sdk.ContainerImage.ARTHUR)

Testing

The project uses pytest for testing. The tests target the highest seams (CLI and SDK) and simulate HTTP proxy interactions.

pytest tests/

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured