Skip to main content

MCP server that exposes MIOSA computer-use tools to Claude Code

Project description

miosa-mcp

MCP (Model Context Protocol) bridge that exposes MIOSA cloud sandboxes & desktops to any MCP-aware client (Claude Code, Cursor, Gemini CLI, etc.).

Two ways to run it

1. Hosted (recommended) — no install

MIOSA ships a public MCP endpoint at https://api.miosa.ai/api/v1/mcp. Point any MCP client at it with your msk_u_* API key as a Bearer token:

claude mcp add --transport http miosa \
  https://api.miosa.ai/api/v1/mcp \
  --header "Authorization: Bearer msk_u_your_key_here"

Full guide: docs/api/mcp-connect.md.

2. Local stdio (this Python package)

Install:

pip install miosa-mcp

Add to ~/.claude/mcp.json:

{
  "mcpServers": {
    "miosa": {
      "command": "python",
      "args": ["-m", "miosa_mcp"],
      "env": {
        "MIOSA_API_KEY": "msk_u_your_key_here"
      }
    }
  }
}

Use stdio when you need to wrap the MCP layer with custom local logic, or your client doesn't yet support remote MCP. Both modes hit the same MIOSA REST API under the hood.

Get your API key at https://miosa.ai/dashboard/api-keys.

Tools

Lifecycle

Tool Description
computer_create(name, template_type?, size?) Create a computer and start it. Becomes the active computer.
computer_list() List all computers in your tenant.
computer_destroy(computer_id?) Permanently destroy a computer.

Desktop — Visual

Tool Description
computer_screenshot(computer_id?) Capture a PNG screenshot. Claude can see and reason about it.
computer_get_screen_size(computer_id?) Get screen resolution in pixels.
computer_get_cursor_position(computer_id?) Get current cursor x/y.

Desktop — Pointer

Tool Description
computer_click(x, y, button?, computer_id?) Click at coordinates.
computer_double_click(x, y, computer_id?) Double-click at coordinates.
computer_move_cursor(x, y, computer_id?) Move cursor without clicking.
computer_drag(from_x, from_y, to_x, to_y, computer_id?) Click-drag between positions.
computer_scroll(direction?, clicks?, x?, y?, computer_id?) Scroll up/down/left/right.

Desktop — Keyboard

Tool Description
computer_type(text, computer_id?) Type text into the focused field.
computer_key(key, computer_id?) Press a single key (Return, Tab, Escape, etc.).
computer_hotkey(keys, computer_id?) Press a key combo (e.g. ["ctrl", "c"]).

Clipboard

Tool Description
computer_get_clipboard(computer_id?) Read clipboard text.
computer_set_clipboard(text, computer_id?) Write clipboard text.

Window Management

Tool Description
computer_windows(computer_id?) List open windows with IDs, titles, positions.
computer_launch(app, computer_id?) Launch an app by name (firefox, gedit, xterm…).

Shell & Files

Tool Description
computer_bash(command, timeout?, computer_id?) Run a bash command; returns stdout, stderr, exit_code.
computer_write_file(path, content, computer_id?) Write a file inside the VM.
computer_read_file(path, computer_id?) Read a file from inside the VM.

Active Computer

All tools accept an optional computer_id. When omitted, the server uses the most recently created or accessed computer automatically. This means you can computer_create once and omit the ID for the rest of the session.

Example session

> computer_create(name="my-dev-box")
Created computer 'my-dev-box' (id=comp_abc123, status=running). This is now the active computer.

> computer_screenshot()
[PNG image of the desktop appears in Claude's context]

> computer_bash(command="ls /home")
stdout:
ubuntu
exit_code: 0

> computer_launch(app="firefox")
Launched: firefox

> computer_screenshot()
[Firefox is now open]

> computer_click(x=640, y=50)
Clicked (640, 50) button=left

> computer_type(text="https://miosa.ai")
Typed: 'https://miosa.ai'

> computer_key(key="Return")
Pressed key: Return

Development

# Install deps (requires Python 3.10+)
pip install -e ".[dev]"

# Type-check
mypy miosa_mcp/

# Lint
ruff check miosa_mcp/

Architecture

The server is a single async Python process that:

  1. Reads MIOSA_API_KEY from the environment
  2. Initializes an AsyncMiosa client
  3. Maintains an in-process cache of AsyncComputer objects
  4. Serves MCP tools over stdio (the protocol Claude Code uses)
  5. Maps every tool call to the corresponding MIOSA SDK method
  6. Returns screenshots as base64-encoded PNG images (MCP ImageContent)

All desktop action tools (click, type, key, etc.) call the MIOSA platform API which proxies commands through to the running VM's envd daemon at port 49983.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

miosa_mcp-0.2.1.tar.gz (35.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

miosa_mcp-0.2.1-py3-none-any.whl (32.8 kB view details)

Uploaded Python 3

File details

Details for the file miosa_mcp-0.2.1.tar.gz.

File metadata

  • Download URL: miosa_mcp-0.2.1.tar.gz
  • Upload date:
  • Size: 35.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for miosa_mcp-0.2.1.tar.gz
Algorithm Hash digest
SHA256 05b7fd2f67c29879526068282e39b85536bbbf47f25336b587f11af69920e13f
MD5 dcd4bed847fce4f83303bff256a1cc0a
BLAKE2b-256 82f53c3c42ab8290fb115edc543631843df6c64cd9e7b29b4b9d84e9bde36b41

See more details on using hashes here.

File details

Details for the file miosa_mcp-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: miosa_mcp-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 32.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for miosa_mcp-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 27f8acefce1c39268117eab59f9d8be03362c0c9a41a5719bcd0bf702a0393c7
MD5 4aca3c736e6b2962d04da0193b3e743d
BLAKE2b-256 45f7cbfe34b55c697761a34d5cefee048a8d9f9c4de007bb1b6e055ee6277098

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page