npx -y @heretic-tech/apostate-mcp with the server’s options. Only the file and its shape differ. Download the browser first so the first tool call does not wait for it:
examples/agents/mcp/.
Cursor
Project:.cursor/mcp.json. Everywhere: ~/.cursor/mcp.json.
.cursor/mcp.json
${env:NAME}, ${userHome} and ${workspaceFolder} in command, args and env.
Gemini CLI
User:~/.gemini/settings.json. Project: .gemini/settings.json.
~/.gemini/settings.json
KEY, TOKEN, SECRET, PASSWORD, AUTH or CREDENTIAL. APOSTATE_PROXY is passed through. "trust": true skips the confirmation for every tool call.
VS Code
Workspace:.vscode/mcp.json. VS Code uses a servers key, not mcpServers.
.vscode/mcp.json
sandboxEnabled off for this server: a browser does not start in a sandbox.
OpenCode
Project:opencode.json. Global: ~/.config/opencode/opencode.json. OpenCode takes the command and its arguments as one array, and names the environment block environment.
opencode.json
timeout is 5 seconds, which a first npx run exceeds.
Windsurf
Windsurf is now Devin Desktop. Its Cascade agent reads~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json on Windows):
~/.config/devin/mcp_config.json
Any other client
A client that runs stdio MCP servers needs three things from you:- the command:
npxwith-y @heretic-tech/apostate-mcpand the server’s options - a startup or request timeout of at least a minute, for the first run
- the environment variables Apostate reads, if the client filters them:
APOSTATE_PROXY,APOSTATE_BINARY, andDISPLAYfor headed runs on Linux