Skip to main content
Glama

Orgo MCP Server

Official MCP server for controlling Orgo cloud computers from Claude Code, Claude Desktop, and other Model Context Protocol clients.

Install from GitHub, not npm. The canonical install is npx -y github:nickvasilescu/orgo-mcp — the repo ships prebuilt dist/, so this is a fast registry-style install (no compile step). The npm registry still has the obsolete 3.0.0; do not use npx @orgo-ai/mcp until a 4.x release lands there.

Quick Start

1. Get an Orgo API key

Sign up or log in at orgo.ai, then copy an API key from Settings > API Keys.

2. Add the MCP server

The install path uses the GitHub URL so you get the current 4.x build (compact mode, limit, orgo_doctor, etc.). Pin to a release tag for production stability; omit the #ref to track the main branch.

Claude Code:

# Latest from main (prebuilt — installs in seconds)
claude mcp add orgo -e ORGO_API_KEY=sk_live_YOUR_KEY -- npx -y github:nickvasilescu/orgo-mcp

# Or pin to a release tag
claude mcp add orgo -e ORGO_API_KEY=sk_live_YOUR_KEY -- npx -y github:nickvasilescu/orgo-mcp#v4.1.1

Claude Desktop:

{
  "mcpServers": {
    "orgo": {
      "command": "npx",
      "args": ["-y", "github:nickvasilescu/orgo-mcp"],
      "env": {
        "ORGO_API_KEY": "sk_live_YOUR_KEY"
      }
    }
  }
}

Hosted Streamable HTTP server (Claude Code, Cursor, VS Code, and other clients that support remote MCP over HTTP):

{
  "mcpServers": {
    "orgo": {
      "type": "http",
      "url": "https://orgo-mcp.onrender.com/mcp",
      "headers": {
        "X-Orgo-API-Key": "${ORGO_API_KEY}",
        "X-Orgo-Default-Computer-Id": "your-computer-id"
      }
    }
  }
}

The exact shape varies by client: Cursor omits type (it infers the transport from url), Windsurf names the field serverUrl, and VS Code nests servers under a servers key instead of mcpServers.

Claude Desktop is the exception — claude_desktop_config.json is stdio-only and will not start a type: http entry. To reach the hosted endpoint from Claude Desktop, bridge it with mcp-remote (still a stdio command under mcpServers):

{
  "mcpServers": {
    "orgo": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://orgo-mcp.onrender.com/mcp",
        "--transport", "http-only",
        "--header", "X-Orgo-API-Key:${ORGO_API_KEY}",
        "--header", "X-Orgo-Default-Computer-Id:${ORGO_DEFAULT_COMPUTER_ID}"
      ],
      "env": {
        "ORGO_API_KEY": "sk_live_YOUR_KEY",
        "ORGO_DEFAULT_COMPUTER_ID": "your-computer-id"
      }
    }
  }
}

X-Orgo-Default-Computer-Id is optional: it pins a default computer for this connection so tool calls can omit computer_id (the remote equivalent of the ORGO_DEFAULT_COMPUTER_ID env var, which can't be per-user on a shared host). Clients that only let you configure a URL can pass it as a query param instead: https://orgo-mcp.onrender.com/mcp?computer_id=your-computer-id.

PowerShell users can wrap the Claude Code command because PowerShell may mangle -- when it reaches npm shims:

cmd /c "claude mcp add orgo -e ORGO_API_KEY=sk_live_YOUR_KEY -- npx -y github:nickvasilescu/orgo-mcp"

About the GitHub install. The repo commits prebuilt dist/ and has no prepare script, so npx fetches the repo and installs only the three runtime dependencies — no TypeScript toolchain, no compile. Cold installs take a few seconds; subsequent invocations are cached. CI rejects any commit whose dist/ doesn't match src/, so main is always runnable.

Related MCP server: Desktop Commander MCP

Tools

The server exposes 28 focused tools.

Toolset

Tools

core

orgo_list_workspaces, orgo_get_workspace, orgo_workspace_by_name, orgo_list_computers, orgo_get_computer, orgo_doctor

admin

orgo_create_workspace, orgo_delete_workspace, orgo_create_computer, orgo_delete_computer, orgo_restart_computer, orgo_clone_computer, orgo_ensure_running, orgo_resize_computer, orgo_move_computer

screen

orgo_screenshot, orgo_click, orgo_type, orgo_key, orgo_scroll, orgo_drag, orgo_wait

shell

orgo_bash, orgo_exec

files

orgo_list_files, orgo_export_file, orgo_upload_file, orgo_download_file

Each tool is registered with MCP annotations for readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. orgo_restart_computer is marked destructive because it can interrupt running processes and unsaved VM state. Text responses are sanitized before they are returned to the MCP client, so password, token, secret, credential, and API-key fields are redacted even when Orgo API responses include them.

Compact mode for read tools

Read tools (orgo_list_workspaces, orgo_get_workspace, orgo_workspace_by_name, orgo_list_computers, orgo_get_computer, orgo_list_files) are compact by default since 4.1.0: noisy fields like instance_details, template_build_id, and user_id are dropped, keeping id, name, status, timestamps, and key resource fields (cpu, ram, os, disk_size_gb, fly_instance_id, file size/path). Typical savings: 50%+ on list endpoints (a 290 KB workspace list shrinks to ~50 KB). Pass compact: false when you need the complete raw payload. Responses are also no longer pretty-printed — both changes affect default response shape if you upgraded from ≤4.0.x.

Health check (orgo_doctor)

Call orgo_doctor (no arguments) to probe MCP server health: auth source detected (env:ORGO_API_KEY or http_header, never the key value), API reachability with status code, and round-trip latency in ms. Returns { ok, auth, api } — ok: true means both auth is configured and the live Orgo API responded. Use as the first call from an agent harness to verify setup, or after a tool error to distinguish auth failures (status_code: 401) from network issues (no status_code, error: "Cannot reach Orgo API").

Client-side limit for list tools

Pass limit: N (1–500) to orgo_list_workspaces, orgo_list_computers, or orgo_list_files to cap the number of items returned. The Orgo API does not paginate server-side, so the MCP fetches everything and trims client-side. When truncation occurs, the response gains total (the real count) and truncated: true. Omit limit to return everything (current default — backward compatible). Combine with compact: true for the smallest payload: { limit: 5, compact: true } typically returns under 3KB even on accounts with hundreds of computers.

Deliberately not exposed:

  • computer start/stop tools

  • VNC password access

  • account/profile/credits/transactions

  • autonomous agent/thread tools

  • RTMP streaming tools

  • template management tools

Production Safety Controls

Use environment variables to restrict the exposed surface without changing client config.

Variable

Default

Description

ORGO_READ_ONLY

false

When true, only tools annotated as read-only are registered.

ORGO_TOOLSETS

core,admin,screen,shell,files

Comma-separated toolsets to expose. Example: core,screen,files.

ORGO_ENABLED_TOOLS

all registered tools

Exact comma-separated allowlist. Applied before ORGO_DISABLED_TOOLS.

ORGO_DISABLED_TOOLS

none

Exact comma-separated denylist.

Examples:

# Observation-only mode
ORGO_READ_ONLY=true npx -y github:nickvasilescu/orgo-mcp

# Browserless VM control without shell access
ORGO_TOOLSETS=core,screen,files npx -y github:nickvasilescu/orgo-mcp

# Keep shell enabled, but remove bash
ORGO_TOOLSETS=shell ORGO_DISABLED_TOOLS=orgo_bash npx -y github:nickvasilescu/orgo-mcp

Read-only mode currently exposes:

orgo_list_workspaces
orgo_get_workspace
orgo_workspace_by_name
orgo_list_computers
orgo_get_computer
orgo_screenshot
orgo_wait
orgo_list_files
orgo_download_file
orgo_doctor

Environment Variables

Variable

Default

Description

ORGO_API_KEY

none

Required for stdio transport. HTTP deployments receive user keys via X-Orgo-API-Key.

ORGO_DEFAULT_COMPUTER_ID

none

Default computer ID so tool calls can omit computer_id (stdio). For HTTP, send a per-request X-Orgo-Default-Computer-Id header (or ?computer_id=) instead.

MCP_TRANSPORT

stdio

stdio, http, or streamable-http.

MCP_HOST

0.0.0.0

HTTP bind address.

MCP_PORT / PORT

8000

HTTP port.

Self-Hosting

Local stdio:

git clone https://github.com/nickvasilescu/orgo-mcp.git
cd orgo-mcp
npm install
ORGO_API_KEY=sk_live_YOUR_KEY npm start

Local HTTP:

npm install
npm run build
MCP_TRANSPORT=http npm start
curl http://localhost:8000/health

Docker:

docker build -t orgo-mcp .
docker run -p 8000:8000 -e MCP_TRANSPORT=http orgo-mcp

Render:

  1. Fork this repo.

  2. Create a Render Blueprint from render.yaml.

  3. Connect clients to https://YOUR_RENDER_HOST/mcp with an X-Orgo-API-Key header.

The hosted server does not store a shared Orgo key. Each request must include the user's Orgo API key header.

Architecture

npx / stdio:
  MCP client -> stdio -> @orgo-ai/mcp -> Orgo API
                           ORGO_API_KEY env var

Hosted HTTP:
  MCP client -> HTTPS -> orgo-mcp server -> Orgo API
                          X-Orgo-API-Key header

Shell commands:
  orgo_bash -> Terminal WebSocket primary -> VM
            -> REST /bash fallback        -> VM

Development

npm install
npm run build
npm test
npm start

CI runs:

  • TypeScript build from a clean dist/

  • MCP tool-list smoke tests for default, read-only, toolset, allowlist, and denylist policies

  • HTTP transport health and auth smoke tests

  • committed-dist/ freshness check (rebuild must produce no diff)

  • npm package content checks

  • Docker image build

dist/ is committed so the GitHub install needs no build step — after changing src/, run npm run build and commit the regenerated dist/ alongside.

Before publishing:

npm test
npm pack --dry-run

Troubleshooting

Error

Fix

Invalid API key

Check the Orgo API key and whether it is active.

X-Orgo-API-Key header required

HTTP clients must send this header on /mcp requests.

computer_id required

Pass computer_id, set ORGO_DEFAULT_COMPUTER_ID (stdio), or send X-Orgo-Default-Computer-Id / ?computer_id= (HTTP).

Connection refused

Confirm the server is running and check /health.

Tools not appearing

Check ORGO_READ_ONLY, ORGO_TOOLSETS, ORGO_ENABLED_TOOLS, and ORGO_DISABLED_TOOLS.

Security

  • Do not commit .env files or API keys.

  • Prefer ORGO_READ_ONLY=true for observation-only clients.

  • Disable the shell toolset for clients that should not execute VM commands.

  • Treat orgo_bash and orgo_exec as high-power tools: they can modify anything reachable from the target VM.

  • HTTP deployments should pass the user's key per request via X-Orgo-API-Key; do not bake a production Orgo key into the server.

License

MIT. See LICENSE.

Available Tools

35 tools
orgo_ai_completionA
Run an AI completion using OpenRouter's 400+ models.

Access models from OpenAI, Anthropic, Google, Meta, and more through
a unified API. Requires OpenRouter key in your Orgo account settings.

Args:
    params (AICompletionInput): Input containing:
        - model (str): Model ID (e.g., 'openai/gpt-4')
        - prompt (str): The prompt to send
        - system (Optional[str]): Optional system message
        - max_tokens (int): Max response length, 1-100000 (default: 1024)
        - temperature (float): Randomness, 0-2 (default: 0.7)

Returns:
    str: The model's response text

Examples:
    - "Ask GPT-4 to explain quantum computing" ->
      params with model="openai/gpt-4", prompt="Explain quantum computing"

Inputs: params (required). Returns: result

orgo_bashA
Destructive
Execute a bash command on the computer.

Useful for file operations, installing packages, running scripts,
checking system state, etc.

Args:
    params (BashInput): Input containing:
        - computer_id (str): Computer ID
        - command (str): Bash command to run

Returns:
    str: Command output (stdout and stderr combined)

Examples:
    - "Run ls -la" -> params with command="ls -la"
    - "Install requests" -> params with command="pip install requests"

Inputs: params (required). Returns: result

orgo_clickA
Click at (x, y) coordinates on the screen.

Use orgo_screenshot first to see the screen and identify click targets.
Coordinates are in pixels from top-left corner.

Args:
    params (ClickInput): Input containing:
        - computer_id (str): Computer ID
        - x (int): Horizontal position in pixels
        - y (int): Vertical position in pixels
        - button (Literal): 'left', 'right', or 'middle' (default: left)

Returns:
    str: Confirmation of click action

Examples:
    - "Click at (500, 300)" -> params with x=500, y=300
    - "Right-click at 100, 200" -> params with x=100, y=200, button="right"

Inputs: params (required). Returns: result

orgo_create_computerA
Create a new virtual computer in a project.

The computer boots in under 500ms and starts in 'running' status.
Returns the computer ID for use with action tools.

Args:
    params (CreateComputerInput): Input containing:
        - project_name (str): Project to create the computer in
        - name (str): Display name for the computer
        - os (Literal): 'linux' or 'windows' (default: linux)
        - ram (Literal): RAM in GB - 1, 2, 4, 8, 16, 32, 64 (default: 2)
        - cpu (Literal): CPU cores - 1, 2, 4, 8, 16 (default: 2)

Returns:
    str: JSON with created computer details:
        {
            "id": str,
            "name": str,
            "status": "running",
            "os": str,
            "ram": int,
            "cpu": int
        }

Examples:
    - "Create Linux computer with 4GB RAM" -> params with ram=4
    - "Create Windows dev-box" -> params with os="windows", name="dev-box"

Error Handling:
    - Returns "Error: Insufficient credits..." if account balance is low

Inputs: params (required). Returns: result

orgo_create_projectA
Create a new Orgo project.

Projects are containers for computers. Create a project first,
then add computers to it with orgo_create_computer.

Args:
    params (CreateProjectInput): Input parameters containing:
        - name (str): Unique name for the project (e.g., 'qa-automation')
        - icon_url (Optional[str]): URL for project icon

Returns:
    str: JSON with created project details:
        {
            "id": str,
            "name": str,
            "status": str,
            "created_at": str,
            "desktops": []
        }

Examples:
    - "Create project for QA testing" -> params with name="qa-automation"
    - "Make new project called dev-env" -> params with name="dev-env"

Error Handling:
    - Returns "Error: Conflict..." if project name already exists

Inputs: params (required). Returns: result

orgo_delete_computerA
DestructiveIdempotent
Permanently delete a computer.

WARNING: This is destructive and cannot be undone.
All data on the computer will be lost.

Args:
    params (ComputerIdInput): Input containing:
        - computer_id (str): Computer ID to delete

Returns:
    str: Confirmation message

Inputs: params (required). Returns: result

orgo_delete_fileA
DestructiveIdempotent
Delete a file from storage.

WARNING: This permanently removes the file from cloud storage.

Args:
    params (FileIdInput): Input containing:
        - file_id (str): File ID to delete

Returns:
    str: Confirmation message

Inputs: params (required). Returns: result

orgo_delete_projectA
DestructiveIdempotent
Permanently delete a project and ALL its computers.

WARNING: This is destructive and cannot be undone.
All computers and their data in the project will be lost.

Args:
    params (ProjectIdInput): Input containing:
        - project_id (str): Project ID from orgo_list_projects

Returns:
    str: Confirmation message

Examples:
    - "Delete project proj_123" -> params with project_id="proj_123"

Error Handling:
    - Returns "Error: Resource not found..." if project doesn't exist

Inputs: params (required). Returns: result

orgo_double_clickA
Double-click at (x, y) coordinates.

Use for opening files/apps on desktop or selecting text.

Args:
    params (DoubleClickInput): Input containing:
        - computer_id (str): Computer ID
        - x (int): Horizontal position in pixels
        - y (int): Vertical position in pixels

Returns:
    str: Confirmation of double-click action

Inputs: params (required). Returns: result

orgo_download_fileA
Read-onlyIdempotent
Get a signed download URL for a file.

The URL expires after 1 hour. Use orgo_list_files to find file IDs.

Args:
    params (FileIdInput): Input containing:
        - file_id (str): File ID

Returns:
    str: Download URL (expires in 1 hour)

Inputs: params (required). Returns: result

orgo_dragA
Drag from one position to another.

Useful for drag-and-drop operations, selecting text, or resizing windows.

Args:
    params (DragInput): Input containing:
        - computer_id (str): Computer ID
        - start_x (int): Starting horizontal position
        - start_y (int): Starting vertical position
        - end_x (int): Ending horizontal position
        - end_y (int): Ending vertical position
        - duration (float): How long the drag takes, 0.1-5.0 (default: 0.5)

Returns:
    str: Confirmation of drag action

Inputs: params (required). Returns: result

orgo_execA
Destructive
Execute Python code on the computer.

Returns the output of the execution. Useful for data processing,
file manipulation, and quick scripts.

Args:
    params (ExecInput): Input containing:
        - computer_id (str): Computer ID
        - code (str): Python code to execute
        - timeout (int): Max execution time, 1-300 seconds (default: 30)

Returns:
    str: Python execution output

Inputs: params (required). Returns: result

orgo_export_fileA
Read-onlyIdempotent
Export a file from the computer's filesystem.

The computer must be running. Files can only be exported from /home/user.
Returns a download URL that expires in 1 hour.

Args:
    params (ExportFileInput): Input containing:
        - computer_id (str): Computer ID
        - path (str): Path to file (e.g., 'Desktop/results.txt')

Returns:
    str: File info and download URL

Inputs: params (required). Returns: result

orgo_get_computerA
Read-onlyIdempotent
Get full details for a computer including access URL.

Returns comprehensive information about a computer including its
access URL for direct browser viewing.

Args:
    params (ComputerIdInput): Input containing:
        - computer_id (str): Computer ID

Returns:
    str: JSON with computer details:
        {
            "id": str,
            "name": str,
            "project_name": str,
            "os": str,
            "ram": int,
            "cpu": int,
            "status": str,
            "url": str,
            "created_at": str
        }

Examples:
    - "Get details for computer abc123" -> params with computer_id="abc123"
    - "What's the URL for my computer?" -> get_computer then access url field

Inputs: params (required). Returns: result

orgo_get_projectA
Read-onlyIdempotent
Get project details by name.

Returns full project information including all computers.

Args:
    params (GetProjectInput): Input containing:
        - name (str): Project name to look up

Returns:
    str: JSON with project details:
        {
            "id": str,
            "name": str,
            "status": str,
            "created_at": str,
            "desktops": [{"id": str, "name": str, "status": str, ...}]
        }

Examples:
    - "Get details for my-project" -> params with name="my-project"

Error Handling:
    - Returns "Error: Resource not found..." if project doesn't exist

Inputs: params (required). Returns: result

orgo_keyA
Press a keyboard key or combination.

Supports single keys and combinations with modifiers (ctrl, alt, shift, cmd).

Args:
    params (KeyInput): Input containing:
        - computer_id (str): Computer ID
        - key (str): Key name or combination
            - Single keys: Enter, Tab, Escape, Backspace, Delete, Space
            - Arrow keys: Up, Down, Left, Right
            - Function keys: F1-F12
            - Combos: ctrl+c, ctrl+v, alt+Tab, ctrl+shift+s

Returns:
    str: Confirmation of key press

Examples:
    - "Press Enter" -> params with key="Enter"
    - "Press Ctrl+C" -> params with key="ctrl+c"

Inputs: params (required). Returns: result

orgo_list_ai_modelsA
Read-onlyIdempotent
List available AI models through OpenRouter.

Returns a list of 400+ AI models available for use with orgo_ai_completion.
Requires OpenRouter API key configured in your Orgo account.

Args:
    params (ListAIModelsInput): Input containing:
        - limit (int): Maximum results, 1-200 (default: 50)
        - offset (int): Skip for pagination (default: 0)
        - response_format (ResponseFormat): 'markdown' or 'json'

Returns:
    str: Formatted list of AI models with pagination

Examples:
    - "List available AI models" -> orgo_list_ai_models with defaults

Inputs: params (required). Returns: result

orgo_list_computersA
Read-onlyIdempotent
List all computers in a project.

Returns computer IDs, names, and status with pagination. Use computer_id
with action tools like orgo_screenshot, orgo_click, orgo_bash, etc.

Args:
    params (ListComputersInput): Input parameters containing:
        - project_name (str): Project name from orgo_list_projects
        - limit (int): Maximum results, 1-100 (default: 20)
        - offset (int): Skip for pagination (default: 0)
        - response_format (ResponseFormat): 'markdown' or 'json'

Returns:
    str: Formatted response containing:

    Markdown format:
        # Computers in project-name
        Found X computers (showing Y)

        ## dev-box (`comp_abc`)
        - **Status**: running
        - **OS**: linux
        - **RAM**: 4 GB | **CPU**: 2 cores

    JSON format:
        {
            "total": int,
            "count": int,
            "offset": int,
            "has_more": bool,
            "next_offset": int | null,
            "computers": [{"id": str, "name": str, "status": str, "os": str, "ram": int, "cpu": int}]
        }

Examples:
    - "List computers in my-project" -> params with project_name="my-project"
    - "Show running VMs" -> list then filter by status

Error Handling:
    - Returns "Project 'name' not found" if project doesn't exist
    - Returns "No computers found in project" if empty

Inputs: params (required). Returns: result

orgo_list_filesA
Read-onlyIdempotent
List all files associated with a computer.

Shows both uploaded files and files exported from the computer.
Use file IDs with orgo_download_file or orgo_delete_file.

Args:
    params (ListFilesInput): Input containing:
        - computer_id (str): Computer ID
        - limit (int): Maximum results, 1-100 (default: 20)
        - offset (int): Skip for pagination (default: 0)
        - response_format (ResponseFormat): 'markdown' or 'json'

Returns:
    str: Formatted list of files with pagination info

Inputs: params (required). Returns: result

orgo_list_projectsA
Read-onlyIdempotent
List all Orgo projects in your account.

Returns project names and IDs with pagination support. Use project names
with orgo_list_computers or orgo_create_computer to manage computers.

Args:
    params (ListProjectsInput): Input parameters containing:
        - limit (int): Maximum results to return, 1-100 (default: 20)
        - offset (int): Number of results to skip for pagination (default: 0)
        - response_format (ResponseFormat): 'markdown' or 'json' (default: markdown)

Returns:
    str: Formatted response containing:

    Markdown format:
        # Orgo Projects
        Found X projects (showing Y)

        ## project-name (proj_123)
        - **Created**: 2024-01-15 10:30:00

    JSON format:
        {
            "total": int,
            "count": int,
            "offset": int,
            "has_more": bool,
            "next_offset": int | null,
            "projects": [{"id": str, "name": str, "created_at": str}]
        }

Examples:
    - "List my Orgo projects" -> orgo_list_projects with defaults
    - "Show next page of projects" -> orgo_list_projects with offset=20

Error Handling:
    - Returns "Error: Invalid API key..." if ORGO_API_KEY is invalid
    - Returns "No projects found" if account has no projects

Inputs: params (required). Returns: result

orgo_promptA
Send an AI agent to complete a task on an Orgo computer (fire-and-forget).

Launches a task asynchronously and returns immediately with a URL to monitor
progress. The agent runs on Orgo's hosted AI infrastructure, controlling
the computer with mouse, keyboard, and bash commands to complete the task.

This is ideal for long-running tasks where you don't want to wait for
completion. Check progress at the returned URL or use orgo_screenshot.

Args:
    params (PromptInput): Input containing:
        - prompt (str): Natural language instruction for the AI agent
        - computer_id (Optional[str]): Existing computer ID. Creates new if omitted
        - project_name (Optional[str]): Project for new computer (default: 'MCP Agents')
        - computer_name (Optional[str]): Display name for new computer
        - max_iterations (int): Max agent loops, 1-200 (default: 50)

Returns:
    str: Markdown-formatted response containing:
        - Computer ID for reference
        - Task summary (truncated if long)
        - URL to monitor progress at orgo.ai
        - Instructions for checking status and cleanup

Examples:
    - "Search for AI news and create a summary document"
      -> Creates new computer, starts agent, returns URL immediately
    - "Fill out the contact form with test data" (with computer_id)
      -> Uses existing computer, starts agent on current screen state

Error Handling:
    - Returns "Error: Resource not found..." if computer_id is invalid
    - Returns "Error: Insufficient credits..." if account balance is low
    - Returns "Error: Invalid API key..." if authentication fails

Inputs: params (required). Returns: result

orgo_restart_computerA
Idempotent
Restart a computer.

Useful for recovering from unresponsive states or resetting to a clean environment.

Args:
    params (ComputerIdInput): Input containing:
        - computer_id (str): Computer ID to restart

Returns:
    str: Confirmation message

Inputs: params (required). Returns: result

orgo_restart_projectA
Idempotent
Restart all computers in a project.

Batch operation to restart all computers simultaneously.

Args:
    params (ProjectIdInput): Input containing:
        - project_id (str): Project ID

Returns:
    str: Confirmation message

Examples:
    - "Restart all computers in project proj_123"

Inputs: params (required). Returns: result

orgo_screenshotA
Read-onlyIdempotent
Take a screenshot of the computer's display.

Returns a JPEG image of the current screen. Use this to see what's
on screen before clicking or typing.

Args:
    params (ComputerIdInput): Input containing:
        - computer_id (str): Computer ID to screenshot

Returns:
    Image: JPEG screenshot of the current display

Examples:
    - "Take a screenshot of computer abc123"
    - "Show me what's on the screen"

Inputs: params (required).

orgo_scrollB
Scroll the page in the specified direction.

Args:
    params (ScrollInput): Input containing:
        - computer_id (str): Computer ID
        - direction (Literal): 'up', 'down', 'left', or 'right'
        - amount (int): How much to scroll, 1-10 (default: 3)

Returns:
    str: Confirmation of scroll action

Inputs: params (required). Returns: result

orgo_start_computerA
Idempotent
Start a stopped computer.

Boots in under 500ms. Use orgo_list_computers to find computer IDs.

Args:
    params (ComputerIdInput): Input containing:
        - computer_id (str): Computer ID to start

Returns:
    str: Confirmation message

Examples:
    - "Start computer abc123" -> params with computer_id="abc123"

Inputs: params (required). Returns: result

orgo_start_projectA
Idempotent
Start all computers in a project.

Batch operation to boot all computers simultaneously.
Computers boot in under 500ms each.

Args:
    params (ProjectIdInput): Input containing:
        - project_id (str): Project ID

Returns:
    str: Confirmation message

Examples:
    - "Start all computers in project proj_123" -> params with project_id="proj_123"

Inputs: params (required). Returns: result

orgo_start_streamA
Start RTMP streaming from a computer.

Stream the computer's display to Twitch, YouTube, or any RTMP endpoint.
Computer must be running. Only one stream per computer at a time.

Args:
    params (StartStreamInput): Input containing:
        - computer_id (str): Computer ID
        - rtmp_url (str): Full RTMP URL with stream key
        - resolution (Literal): '1920x1080', '1280x720', '854x480' (default: 720p)
        - fps (Literal): 15, 30, or 60 (default: 30)
        - bitrate (str): Video bitrate (default: '2500k')

Returns:
    str: JSON with stream status

Examples:
    - "Stream to Twitch" -> params with rtmp_url="rtmp://live.twitch.tv/app/key"

Inputs: params (required). Returns: result

orgo_stop_computerA
Idempotent
Stop a running computer to save costs.

The computer can be restarted later with orgo_start_computer.
Data on the computer is preserved.

Args:
    params (ComputerIdInput): Input containing:
        - computer_id (str): Computer ID to stop

Returns:
    str: Confirmation message

Inputs: params (required). Returns: result

orgo_stop_projectA
Idempotent
Stop all computers in a project.

Batch operation to stop all computers and save costs.
Computers can be restarted later with orgo_start_project.

Args:
    params (ProjectIdInput): Input containing:
        - project_id (str): Project ID

Returns:
    str: Confirmation message

Examples:
    - "Stop all computers in project proj_123" -> params with project_id="proj_123"

Inputs: params (required). Returns: result

orgo_stop_streamA
Idempotent
Stop RTMP streaming from a computer.

Args:
    params (ComputerIdInput): Input containing:
        - computer_id (str): Computer ID

Returns:
    str: JSON with final stream status

Inputs: params (required). Returns: result

orgo_stream_statusA
Read-onlyIdempotent
Get the current streaming status of a computer.

Check if a stream is active, idle, or terminated.

Args:
    params (ComputerIdInput): Input containing:
        - computer_id (str): Computer ID

Returns:
    str: JSON with stream status

Inputs: params (required). Returns: result

orgo_typeA
Type text at the current cursor position.

Click on an input field first, then use this to type text.

Args:
    params (TypeInput): Input containing:
        - computer_id (str): Computer ID
        - text (str): Text to type

Returns:
    str: Confirmation showing what was typed (truncated if long)

Examples:
    - "Type 'hello world'" -> params with text="hello world"

Inputs: params (required). Returns: result

orgo_upload_fileA
Upload a file to the computer's Desktop.

The file will sync to all running computers in the project.
Maximum file size: 10MB.

Args:
    params (UploadFileInput): Input containing:
        - computer_id (str): Computer ID
        - filename (str): Name for the file
        - content_base64 (str): Base64-encoded content
        - content_type (Optional[str]): MIME type

Returns:
    str: Confirmation message

Inputs: params (required). Returns: result

orgo_waitA
Read-onlyIdempotent
Wait for a specified duration.

Useful for waiting for pages to load, animations to complete,
or applications to start.

Args:
    params (WaitInput): Input containing:
        - computer_id (str): Computer ID
        - seconds (float): How long to wait, 0.1-60 (default: 2)

Returns:
    str: Confirmation of wait completion

Inputs: params (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 35 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes, but some overlap exists (e.g., orgo_bash vs orgo_exec, orgo_download_file vs orgo_export_file). Descriptions are detailed enough to resolve confusion, but the large number of tools still requires careful reading.

    Naming Consistency5/5

    All tools follow a consistent orgo_verb_noun pattern using snake_case (e.g., orgo_create_computer, orgo_list_projects). The naming is predictable and uniform across the entire set.

    Tool Count3/5

    35 tools is significantly above the typical 3-15 range, but the broad domain (project/computer management, file operations, AI, streaming) justifies most tools. However, some tools could be consolidated (e.g., start/stop/restart per resource).

    Completeness4/5

    The tool surface covers CRUD for projects/computers, file operations, AI completions, streaming, and system interaction. Missing are update operations (e.g., update_computer, update_project) and possibly batch file actions, but core workflows are well-supported.

    Maintenance

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI to control a computer through mouse, keyboard, and screen capture tools, with support for local native and Docker sandboxed environments.
      3 npm
      6
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to control remote desktops through screen capture, mouse movement, and keyboard input.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI agents to operate disposable Linux computers via MCP, providing tools for shell, file read/write, directory listing, and port exposure. It also supports browser automation and integration with any MCP-compatible client.
      Apache 2.0