NestDaddy

Ventriloquist

io.github.ShaanGS/ventriloquist ยท v0.5.0

Turn Mac apps into MCP tools via the accessibility API: no screenshots, no model per step.

Connect Runs on your machine

Terminal
claude mcp add ventriloquist -e VENT_LIVE=<VENT_LIVE> -e VENT_ALLOW_HIGH=<VENT_ALLOW_HIGH> -e VENT_HEAL=<VENT_HEAL> -e VENT_HOME=<VENT_HOME> -e VENT_READ_ONLY=<VENT_READ_ONLY> -e VENT_NO_VALUES=<VENT_NO_VALUES> -- uvx ventriloquist-mcp==0.5.0
claude_desktop_config.json
{
  "mcpServers": {
    "ventriloquist": {
      "command": "uvx",
      "args": [
        "ventriloquist-mcp==0.5.0"
      ],
      "env": {
        "VENT_LIVE": "<VENT_LIVE>",
        "VENT_ALLOW_HIGH": "<VENT_ALLOW_HIGH>",
        "VENT_HEAL": "<VENT_HEAL>",
        "VENT_HOME": "<VENT_HOME>",
        "VENT_READ_ONLY": "<VENT_READ_ONLY>",
        "VENT_NO_VALUES": "<VENT_NO_VALUES>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "ventriloquist": {
      "command": "uvx",
      "args": [
        "ventriloquist-mcp==0.5.0"
      ],
      "env": {
        "VENT_LIVE": "<VENT_LIVE>",
        "VENT_ALLOW_HIGH": "<VENT_ALLOW_HIGH>",
        "VENT_HEAL": "<VENT_HEAL>",
        "VENT_HOME": "<VENT_HOME>",
        "VENT_READ_ONLY": "<VENT_READ_ONLY>",
        "VENT_NO_VALUES": "<VENT_NO_VALUES>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "ventriloquist": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "ventriloquist-mcp==0.5.0"
      ],
      "env": {
        "VENT_LIVE": "<VENT_LIVE>",
        "VENT_ALLOW_HIGH": "<VENT_ALLOW_HIGH>",
        "VENT_HEAL": "<VENT_HEAL>",
        "VENT_HOME": "<VENT_HOME>",
        "VENT_READ_ONLY": "<VENT_READ_ONLY>",
        "VENT_NO_VALUES": "<VENT_NO_VALUES>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
VENT_LIVE
Optional
Set to 1 for live mode: the agent can look at and use any running app through its accessibility tree, and save steps that worked as a tool once you approve them. Sends, deletes and the like ask you first.
VENT_ALLOW_HIGH
Optional
Set to 1 to run tools a pack marks as high risk without asking. Without it, they're offered only to clients that can ask you to confirm each call (MCP elicitation).
VENT_HEAL
Optional
Set to 1 to let the server call a model to re-ground broken anchors. Off keeps serving model-free.
VENT_HOME
Optional
Directory for your own packs and traces. Defaults to ~/.ventriloquist.
VENT_READ_ONLY
Optional
Set to 1 to serve read-only tools only. Every other call is refused, even with VENT_ALLOW_HIGH.
VENT_NO_VALUES
Optional
Set to 1, together with VENT_HEAL=1, to keep field values out of what the healer sends to the model.

Details

Package[email protected] (PYPI, stdio)
First published4 Nov 2026
Last updated4 Nov 2026
Registry nameio.github.ShaanGS/ventriloquist

More ai and media servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.