cua-local

cua-local

Provides a local MCP bridge for AI assistants to control a Mac by observing screen state and performing actions like mouse movement, clicking, typing, and opening URLs.

Category
Visit Server

README

cua-local

Use ChatGPT with MCP to control your local Mac, similar to Computer Use.

cua-local is a small local bridge that lets ChatGPT, or another MCP-compatible AI client, observe and operate your own Mac in a controlled loop:

observe -> act -> observe

It can expose basic tools for reading app/screen state, moving the mouse, clicking, typing, scrolling, dragging, pressing keys, and opening URLs. Everything runs locally on macOS, while the AI assistant connects through MCP.

How it works

cua-local uses native macOS capabilities:

  • AppleScript / Apple Events for app control
  • System Events for keyboard input
  • screencapture for screen observation
  • Swift + CGEvent for mouse movement, clicks, scroll, and drag

In other words: it gives ChatGPT a local Computer Use-like control layer for your Mac through MCP. It is inspired by the Computer Use idea, but it is not an official Computer Use client and not a full desktop automation product.

Quick start

Requirements:

macOS
Node.js >= 20
Xcode Command Line Tools

Run:

npm run doctor
npm run check
npm run smoke
npm run demo

npm run doctor prints a ready-to-copy MCP config for the current checkout.

Does it require DevSpace?

No. cua-local itself is just a local MCP server and can run on its own.

DevSpace is only one possible bridge when you want to call this local MCP server from ChatGPT. If your AI client can launch local MCP servers directly, you do not need DevSpace. If the client runs in the cloud and cannot directly reach your Mac, you need some bridge such as DevSpace, a tunnel, or another remote MCP connection layer.

Typical setups:

Local MCP client -> cua-local -> your Mac
ChatGPT -> DevSpace/tunnel/bridge -> cua-local -> your Mac

MCP config

Use absolute paths on the target machine:

{
  "mcpServers": {
    "computer-use-local": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/cua-local/cua-local.mjs"],
      "cwd": "/ABSOLUTE/PATH/TO/cua-local"
    }
  }
}

Scripts

npm run start      # start MCP server over stdio
npm run doctor     # check dependencies and macOS permissions
npm run check      # syntax-check project scripts
npm run smoke      # lightweight core validation
npm run demo       # safe observe -> move pointer -> observe sample

Tools

  • list_apps
  • get_app_state
  • get_screen_state
  • health_check
  • open_url
  • type_text
  • press_key
  • move_mouse
  • click
  • scroll
  • drag
  • set_value

Safety

This tool can operate the local computer. Only connect it to MCP hosts you trust.

click blocks common high-risk labels such as Buy, Purchase, Pay, Delete, Remove, Send, Submit, Publish, Share, Update, and Install unless confirm_risk_action=true is explicitly provided.

Do not expose this server to the public internet.

Local files not to commit

cua-local.mcp.json
.env
traces/
/tmp/cua-local-*
~/.cua-local/

Limitations

  • Native app support is partial and app-specific.
  • Chrome webpage DOM exposure is limited by macOS Accessibility.
  • Multi-display screenshot stitching still needs hardening.
  • Trace writing is opt-in via CUA_LOCAL_TRACE=1 or CUA_LOCAL_TRACE_DIR=....

License

MIT. See LICENSE.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured