Skip to main content
The Orgo MCP server gives any Model Context Protocol client direct control of your cloud computers: spin up a computer, drive its browser, run shell commands, and read the screen back. Tools are generated from the published API specification, so the tool list follows the spec rather than the installed server version.

Connect with OAuth

For clients that support remote HTTP MCP servers, add https://www.orgo.ai/mcp. Your client opens Orgo’s sign-in and consent page. Choose the workspace to authorize, then approve access. No API key is needed for this connection.
Claude Code
The hosted server supports the OAuth authorization-code flow with PKCE (S256), one-hour access tokens, and rotating refresh tokens. The grant is scoped to the selected workspace. It can create and manage computers, screens, and files in that workspace and read the workspace itself. A sign-in sees only a reviewed list of tools inside that surface: reading the workspace, creating and managing its computers, the screenshot, mouse, keyboard, bash and Python tools, screens, and listing, exporting, downloading and deleting files. Tools outside the list are not offered at all. They include Templates, Clients, Account, Chat and Support, creating, changing or deleting workspaces, suspending and resuming computers, uploading files, orgo_get_vnc_password, orgo_apply_computer_secrets and orgo_move_computer, so a sign-in is never sent a computer’s password and cannot put vault secrets on a computer. A new API operation joins the list only after it is reviewed, so a sign-in can see fewer tools than the spec defines. Use an API key for anything outside the list. To revoke a connection, open Settings → Security. Connected AI apps lists each app with its workspace. Click Disconnect next to one, and its next tool call fails with 401, which sends the client back to sign-in. Clients that let you set request headers can also call https://www.orgo.ai/mcp with an API key in Authorization: Bearer $ORGO_API_KEY instead of OAuth. An API key reaches every tool its scope allows, with two exceptions over the hosted URL. orgo_upload_file is refused because it reads a file from the machine running the server, so use it with the local server or write the file on the computer instead. orgo_agent_signup is refused because the connection already has an account, so sign up over HTTP with POST /api/v1/agents.

Install locally with an API key

Get a key at Settings → API keys, then restart your client. Config lives at ~/.cursor/mcp.json for Cursor, .vscode/mcp.json for VS Code, and ~/Library/Application Support/Claude/claude_desktop_config.json for Claude Desktop on macOS.
Already using the CLI? Run orgo login once and drop the env block entirely. The server reads the same ~/.orgo/credentials.json, so your key never has to sit in a config file.

Try it

The first prompt runs orgo_create_computer, then orgo_execute_bash, then orgo_get_screenshot. By default orgo_get_screenshot returns a link to the stored capture. Pass response_format: "base64" and the screenshot comes back as an image the model can see. Over a hosted sign-in, the tool always returns an image and does not offer response_format.

Tools

One tool per API operation, named after its operationId. createComputer becomes orgo_create_computer. The table shows the spec when this page was written. The server prints its live tool count when it starts, as shown in Troubleshooting.
orgo_get_template_schema orgo_list_templates orgo_publish_template orgo_validate_template orgo_list_curated_templates orgo_list_curated_template_versions orgo_list_template_versions orgo_get_template orgo_delete_template orgo_build_template orgo_get_build_status orgo_cancel_build orgo_stream_build_events orgo_test_run_template orgo_stop_template_run
orgo_list_clients orgo_create_client orgo_get_client orgo_update_client orgo_close_client orgo_replace_client_key orgo_transfer_client orgo_withdraw_client_transfer orgo_get_client_billing orgo_send_client_payment_link orgo_update_client_billing orgo_stop_client_billing orgo_resend_client_payment_link orgo_list_client_payments orgo_refund_client_payment
Group names are the spec’s own tags, so ORGO_TAGS="Workspaces,Computers" narrows the surface using the same words the API Reference uses. Set it when a client’s tool picker starts guessing.

Configuration

Nothing here is required. ORGO_API_KEY is the only variable most setups ever set. These variables configure the local server. Over the hosted URL, pin a computer with an X-Orgo-Default-Computer-Id header, or add ?computer_id= to the URL for clients that only take a URL.

Security

An sk_live_ key is account-wide by default, and orgo_execute_bash and orgo_execute_python run arbitrary commands on a live machine. Leave your client’s tool confirmation on. For a narrower blast radius, create a workspace-scoped key under Settings → API keys, or set ORGO_READ_ONLY=true to register only the read tools.

How it works

Tools come from the spec. Descriptions, types, enums, defaults and required fields are read straight out of it, so orgo_create_computer already knows ram is one of 4, 8, 10, 16, 32 or 64 without anyone writing that down twice. Path, query and body parameters flatten into one argument list, so a call reads orgo_resize_computer({ id, mem_gb }) rather than nesting a body. Annotations follow the HTTP method: GET tools are read-only, and every write is marked destructive, because orgo_execute_bash cannot promise otherwise. A hosted sign-in gets reviewed annotations for each listed tool instead, so a tool like orgo_scroll is not marked destructive. Responses are shaped to it too. Only the fields the spec declares survive, which keeps internal state the docs never promise out of the model’s context. A schema matching none of the keys in hand is treated as describing something else, so the payload passes through untouched instead of being emptied. Spec drift costs verbosity, never data. Set ORGO_RAW=1 to turn shaping off. Failures retry only when that is provably safe. A 5xx or a dropped connection is retried with doubling backoff, but only for GET, PUT and DELETE requests. orgo_execute_bash and orgo_mouse_click get exactly one attempt, because running either twice is worse than failing once. The spec is loaded fresh. In order, first one wins:
  1. Cache: $XDG_CACHE_HOME/orgo-mcp/openapi.json, if fetched within ORGO_SPEC_MAX_AGE_MS.
  2. Network: ORGO_SPEC_URL, 5 second timeout, written back to the cache.
  3. Stale cache: whatever was last fetched.
  4. Bundled snapshot: shipped in the npm package.
A normal start is instant and offline. A start after the cache expires picks up whatever shipped in the API that day. A machine with no network still works.

Troubleshooting

Run the server directly to see what it thinks. It prints one line to stderr, then waits for JSON-RPC on stdin:
That line names the tool count, the API version and which spec source won, which answers most setup questions on its own. Silence on stdout is correct; that channel carries the protocol.
npm ships npx.cmd, and Node’s spawn will not resolve a .cmd without a shell. Wrap it:
Check the key on its own:
If that works but the server does not, your client is not forwarding env. Pass the key inline with claude mcp add -e instead.
Fully quit and relaunch. Most clients read MCP config only at startup, and Claude Desktop needs a real quit rather than closing the window. Then check ORGO_READ_ONLY and ORGO_TAGS, which reduce the tool list by design. Claude Desktop logs to ~/Library/Logs/Claude/mcp-server-orgo.log on macOS.

Next steps

API Reference

The same operations, with full request and response schemas.

CLI

Drive the same computers from your own terminal.

Claude Code skill

Teach Claude when to reach for a computer in the first place.