- ZeroTwo desktop app
- ZeroTwo on the web
- ZeroTwo desktop app
- ZeroTwo desktop app
The ZeroTwo desktop app, and desktop app support MCP servers and
share MCP configuration for the same ZeroCode host.The supported server features below apply to MCP servers configured on a ZeroCode
host. Hosted plugin tools can have different capabilities.
Supported MCP features
- STDIO servers: Servers that run as a local process (started by a command).
- Environment variables
- Streamable HTTP servers: Servers that you access at an address.
- Bearer token authentication
- OAuth authentication
- ZeroTwo session authentication for trusted first-party servers
- Server instructions: ZeroCode reads the MCP
instructionsfield returned during initialization and uses it as server-wide guidance alongside the server’s tools.
instructions for cross-tool workflows, constraints, and rate limits that apply across the server. Keep the first 512 characters self-contained so the most important guidance is available when ZeroCode is deciding how to use the server.Connect ZeroCode to an MCP server
ZeroCode stores MCP configuration inconfig.toml alongside other ZeroCode configuration settings. By default this is ~/.zerotwo/config.toml, but you can also scope MCP servers to a project with .zerotwo/config.toml (trusted projects only).The ZeroTwo desktop app, and desktop app share this configuration.
Once you configure your MCP servers, you can switch among those clients without
redoing setup.STDIO servers
command(required): The command that starts the server.args(optional): Arguments to pass to the server.env(optional): Environment variables to set for the server.env_vars(optional): Environment variables to allow and forward.cwd(optional): Working directory to start the server from.experimental_environment(optional): Set toremoteto start the stdio server through a remote executor environment when one is available.
env_vars can contain plain variable names or objects with a source:
source = "local" read from ZeroCode’s local environment.
source = "remote" reads from the remote executor environment and requires
remote MCP stdio.
Streamable HTTP servers
url(required): The server address.auth(optional): Authentication to try after configured bearer tokens and authorization headers. Useoauth(the default) for stored MCP OAuth credentials. Usechatgptto use the current ZeroTwo session for the trusted first-party ZeroTwo origin, with stored OAuth as a fallback.bearer_token_env_var(optional): Environment variable name for a bearer token to send inAuthorization.http_headers(optional): Map of header names to static values.env_http_headers(optional): Map of header names to environment variable names (values pulled from the environment).
zerocode mcp login <server-name> separately to start an MCP
OAuth login.
Other configuration options
startup_timeout_sec(optional): Timeout (seconds) for the server to start. Default:10.tool_timeout_sec(optional): Timeout (seconds) for the server to run a tool. Default:60.enabled(optional): Setfalseto disable a server without deleting it.required(optional): Settrueto make startup fail if this enabled server can’t initialize.enabled_tools(optional): Tool allow list.disabled_tools(optional): Tool deny list (applied afterenabled_tools).default_tools_approval_mode(optional): Default approval behavior for tools from this server. Supported values areauto,prompt,writes, andapprove. Thewritesmode prompts for tools that aren’t marked read-only.tools.<tool>.approval_mode(optional): Per-tool approval behavior override.
mcp_oauth_callback_port in config.toml. If unset, ZeroCode binds to an ephemeral port.
If your MCP OAuth flow must use a specific callback URL (for example, a remote Devbox ingress URL or a custom callback path), set mcp_oauth_callback_url. ZeroCode uses this value as the base callback URL, then appends a server-specific callback ID to produce the OAuth redirect_uri it sends during login. Register the full derived redirect_uri with your OAuth provider, including the appended callback ID and any configured path, query, or port, rather than registering only the base host or path without that suffix. Local callback URLs (for example localhost) bind on the local interface; non-local callback URLs bind on 0.0.0.0 so the callback can reach the host.
If the MCP server advertises scopes_supported, ZeroCode prefers those
server-advertised scopes during OAuth login. Otherwise, ZeroCode falls back to the
scopes configured in config.toml.
config.toml examples
Plugin-provided MCP servers
Installed plugins can bundle MCP servers in their plugin manifest. Those servers are launched from the plugin, so user config doesn’t set their transport command. User config can still control on/off state and tool policy underplugins.<plugin>.mcp_servers.<server>.
Examples of useful MCP servers
The list of MCP servers keeps growing. Here are a few common ones:- ZeroTwo Docs MCP: Search and read ZeroTwo developer docs.
- Context7: Connect to up-to-date developer documentation.
- Figma Local and Remote: Access your Figma designs.
- Playwright: Control and inspect a browser using Playwright.
- Chrome Developer Tools: Control and inspect Chrome.
- Sentry: Access Sentry logs.
- GitHub: Manage GitHub beyond what
gitsupports (for example, pull requests and issues).