Sandbox
@baryhuang/mcp-remote-macos-use

MCP server for remote macOS desktop control

This project connects an agent to a remote Mac through MCP and screen sharing. The server turns desktop actions into tools the agent can call, including screenshots, keyboard input, mouse control, drag and drop, and app launch. It is packaged for Docker and configured through environment variables rather than per-request connection settings.

489 stars55 forksPythonUpdated 1y ago
Claude Mcp Remote MacOs Use demo (subtitle)
BuilderZ1k views • 1 year ago

Videos about this repo

Who it's for

Builders who want an agent to control a remote Mac from Claude Desktop or another MCP client.

What it delivers

You can let your agent use a remote macOS desktop without adding a separate app on the target machine.

What it does

Screen capture tool

`remote_macos_get_screen` returns a screenshot of the remote desktop for agent vision and navigation.

Keyboard input tool

`remote_macos_send_keys` sends keystrokes to the remote Mac.

Mouse control tools

`remote_macos_mouse_move`, `remote_macos_mouse_click`, `remote_macos_mouse_double_click`, `remote_macos_mouse_scroll`, and `remote_macos_mouse_drag_n_drop` handle pointer actions with coordinate scali

Application launch tool

`remote_macos_open_application` opens or activates an app and returns its PID.

Docker deployment

The repo provides a Docker image and a Claude Desktop config example for running the server.

How to get it

  1. 1Configure the LiveKit environment variables as shown in the configuration example above
    # Clone the repository
    git clone https://github.com/yourusername/mcp-remote-macos-use.git
    cd mcp-remote-macos-use
  2. 2Run
    # Build the Docker image
    docker build -t mcp-remote-macos-use .
  3. 3Create a new builder instance (if you haven't already)
    docker buildx create --use
  4. 4Build and push the image for multiple platforms
    docker buildx build --platform linux/amd64,linux/arm64 -t buryhuang/mcp-remote-macos-use:latest --push .
  5. 5Verify the image is available for the specified platforms
    docker buildx imagetools inspect buryhuang/mcp-remote-macos-use:latest

README

MCP Server - Remote MacOs Use

The first open-source MCP server that enables AI to fully control remote macOS systems.

A direct alternative to OpenAI Operator, optimized specifically for autonomous AI agents with complete desktop capabilities, requiring no additional software installation.

Docker Pulls License: MIT

Showcases

  • Research Twitter and Post Twitter(https://www.youtube.com/watch?v=--QHz2jcvcs)

    image
  • Use CapCut to create short highlight video(https://www.youtube.com/watch?v=RKAqiNoU8ec)

    image
  • AI Recruiter: Automated candidate information collection, qualifying applications and sending screening sessions using Mail App

  • AI Marketing Intern: LinkedIn engagement - automated following, liking, and commenting with relevant users

  • AI Marketing Intern: Twitter engagement - automated following, liking, and commenting with relevant users

To-Do List (Prioritized)

  1. Performance Optimization - Match speed of Ubuntu desktop alternatives
  2. Apple Scripts Generation - Reduce execution time while maintaining flexibility
  3. VNC Cursor Visibility - Improve debugging and demo experience

We welcome contributions!

Features

  • No Extra API Costs: Free screen processing with your existing Claude Pro plan
  • Minimal Setup: Just enable Screen Sharing on the target Mac – no additional software needed
  • Universal Compatibility: Works with all macOS versions, current and future

Why We Built This

Native macOS Experience Without Compromise

The macOS native ecosystem remains unmatched in user experience today and will continue to be the gold standard for years to come. This is where human capabilities truly thrive, and now your AI can operate in this environment with the same fluency.

Open Architecture By Design

  • Universal LLM Compatibility: Work with any MCP Client of your choice
  • Model Flexibility: Seamlessly integrate with OpenAI, Anthropic, or any other LLM provider
  • Future-Proof Integration: Designed to evolve with the MCP ecosystem

Effortless Deployment

  • Zero Setup on Target Machines: No background applications or agents needed on macOS
  • Screen Sharing is All You Need: Control any Mac with Screen Sharing enabled
  • Eliminate Backend Complexity: Unlike other solutions that require running Python applications or background services

Streamlined Bootstrap Process

  • Leverage Claude Desktop's Polished UI: No need for developer-style Python interfaces
  • Intuitive User Experience: Interact with your AI-controlled Mac through a familiar, user-friendly interface
  • Instant Productivity: Start working immediately without configuration hassles

Architecture

remote_macos_use_system_architecture

Installation

{
  "mcpServers": {
    "remote-macos-use": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "-e",
        "MACOS_USERNAME=your_macos_username",
        "-e",
        "MACOS_PASSWORD=your_macos_password",
        "-e",
        "MACOS_HOST=your_macos_hostname_or_ip",
        "--rm",
        "buryhuang/mcp-remote-macos-use:latest"
      ]
    }
  }
}

WebRTC Support via LiveKit

This server now includes WebRTC support through LiveKit integration, enabling:

  • Low-latency real-time screen sharing
  • Improved performance and responsiveness
  • Better network efficiency compared to traditional VNC
  • Automatic quality adaptation based on network conditions

To use WebRTC features, you'll need to:

  1. Set up a LiveKit server or use LiveKit Cloud
  2. Configure the LiveKit environment variables as shown in the configuration example above

Developer Instruction

Clone the repo

# Clone the repository
git clone https://github.com/yourusername/mcp-remote-macos-use.git
cd mcp-remote-macos-use

Building the Docker Image

# Build the Docker image
docker build -t mcp-remote-macos-use .

Cross-Platform Publishing

To publish the Docker image for multiple platforms, you can use the docker buildx command. Follow these steps:

  1. Create a new builder instance (if you haven't already):

    docker buildx create --use
    
  2. Build and push the image for multiple platforms:

    docker buildx build --platform linux/amd64,linux/arm64 -t buryhuang/mcp-remote-macos-use:latest --push .
    
  3. Verify the image is available for the specified platforms:

    docker buildx imagetools inspect buryhuang/mcp-remote-macos-use:latest
    

Usage

The server provides Remote MacOs functionality through MCP tools.

Tools Specifications

The server provides the following tools for remote macOS control:

remote_macos_get_screen

Connect to a remote macOS machine and get a screenshot of the remote desktop. Uses environment variables for connection details.

remote_macos_send_keys

Send keyboard input to a remote macOS machine. Uses environment variables for connection details.

remote_macos_mouse_move

Move the mouse cursor to specified coordinates on a remote macOS machine, with automatic coordinate scaling. Uses environment variables for connection details.

remote_macos_mouse_click

Perform a mouse click at specified coordinates on a remote macOS machine, with automatic coordinate scaling. Uses environment variables for connection details.

remote_macos_mouse_double_click

Perform a mouse double-click at specified coordinates on a remote macOS machine, with automatic coordinate scaling. Uses environment variables for connection details.

remote_macos_mouse_scroll

Perform a mouse scroll at specified coordinates on a remote macOS machine, with automatic coordinate scaling. Uses environment variables for connection details.

remote_macos_open_application

Opens/activates an application and returns its PID for further interactions.

remote_macos_mouse_drag_n_drop

Perform a mouse drag operation from start point and drop to end point on a remote macOS machine, with automatic coordinate scaling.

All tools use the environment variables configured during setup instead of requiring connection parameters.

Limitations

  • Authentication Support:
    • Only Apple Authentication (protocol 30) is supported

Security Note

https://support.apple.com/guide/remote-desktop/encrypt-network-data-apdfe8e386b/mac https://cafbit.com/post/apple_remote_desktop_quirks/

We only support protocol 30, which uses the Diffie-Hellman key agreement protocol with a 512-bit prime. This protocol is used by macOS 11 to macOS 12 when communicating with OS X 10.11 or earlier clients.

Here's the information converted to a markdown table:

macOS version running Remote DesktopmacOS client versionAuthenticationControl and ObserveCopy items or install packageAll other tasksProtocol Version
macOS 13macOS 132048-bit RSA host keys2048-bit RSA host keys2048-bit RSA host keys to authenticate, then 128-bit AES2048-bit RSA host keys36
macOS 13macOS 10.12Secure Remote Password (SRP) protocol for local only. Diffie-Hellman (DH) if bound to LDAP or macOS server is version 10.11 or earlierSRP or DH,128-bit AESSRP or DH to authenticate, then 128-bit AES2048-bit RSA host keys35
macOS 11 to macOS 12macOS 10.12 to macOS 13Secure Remote Password (SRP) protocol for local only, Diffie-Hellman if bound to LDAPSRP or DH 1024-bit, 128-bit AES2048-bit RSA host keys macOS 13 to macOS 10.132048-bit RSA host keys macOS 10.13 or later33
macOS 11 to macOS 12OS X 10.11 or earlierDH 1024-bitDH 1024-bit, 128-bit AESDiffie-Hellman Key agreement protocol with a 512-bit primeDiffie-Hellman Key agreement protocol with a 512-bit prime30

Always use secure, authenticated connections when accessing remote remote MacOs machines. This tool should only be used with servers you trust and have permission to access.

License

See the LICENSE file for details.

Files in the repo

Repository payload11 top-level entries
  • .github
  • src
  • tests
  • .gitignore
  • conftest.py
  • Dockerfile
  • LICENSE
  • pyproject.toml
  • pytest.ini
  • README.md
  • uv.lock

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface

86k

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

43k

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code

14k
okf-memory/
okf-agent-memory

Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.

547
tirth8205/
code-review-graph

Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.

31k
2akouwu/
reverify

Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.

1.1k