Skip to main content
Claude Code can use Apostate through the MCP server, which gives it browser tools, and through the Apostate skill, which shows it how to write and run a script with the Python package. Set up both.

Add the MCP server

1

Download the browser

2

Add the server

Everything after -- is the server’s command line, so its own options (--platform, --proxy, --profile) go there. --scope decides who sees the server:
3

Check it

Inside a session, /mcp shows the server and its tools.
To share the server with a team, commit an .mcp.json like examples/agents/mcp/claude-code.mcp.json:
.mcp.json
Claude Code expands ${VAR} and ${VAR:-default} in .mcp.json, so a proxy can stay out of the file: add "--proxy", "${APOSTATE_PROXY}" to args, or set APOSTATE_PROXY in the shell that starts Claude Code, which the server inherits.

Permissions

Tools from the server are named mcp__apostate__<tool>. Claude Code asks before each call unless you allow them. Allow the everyday tools and keep asking for the two that do more than browse:
.claude/settings.json

Run a task headless

claude -p runs one prompt and prints the answer, with no interactive session. It loads .mcp.json and the servers you added, and it does not ask for permission, so name the tools it may use:
That ran on a Mac with no window opening: Claude Code started the server, the server started a headless Windows persona, and the page read a Windows machine with a taskbar.

Scripts and the Apostate skill

A skill is a folder with a SKILL.md that Claude Code loads when a task matches its description. The Apostate skill tells Claude when to use the MCP tools, how to write an Apostate script when there are none, and the rules that keep a session looking normal.
1

Install the package

2

Copy the skill

Use .claude/skills/ inside a project instead to share it through the repository. The skill is examples/agents/skills/apostate/SKILL.md.
With the skill in a project and no browser tools connected, this prompt made Claude Code write and run a script:
If Claude Code runs shell commands in its sandbox, a browser started by a script fails on macOS with MachPortRendezvousServer ... Permission denied. Let the command run outside the sandbox, or use the MCP server, which Claude Code starts outside it.

Project instructions

For a project that browses often, a few lines in CLAUDE.md save Claude from rediscovering the setup:
CLAUDE.md