Turn Mac apps into MCP tools via the accessibility API: no screenshots, no model per step.
registry version 0.3.0
Python
uvx ventriloquist-mcpPython
uvx ventriloquist-mcp@0.3.0
Pick your client — the config below is generated for this server (local stdio). Copy respects the “Pin version” switch above.
claude_desktop_config.json
{
"mcpServers": {
"ventriloquist": {
"command": "uvx",
"args": [
"ventriloquist-mcp"
]
}
}
}{
"mcpServers": {
"ventriloquist": {
"command": "uvx",
"args": [
"ventriloquist-mcp@0.3.0"
]
}
}
}Format verified against the official Claude Desktop docs ↗.
terminal
claude mcp add ventriloquist -- uvx ventriloquist-mcp
claude mcp add ventriloquist -- uvx ventriloquist-mcp@0.3.0
Format verified against the official Claude Code docs ↗.
.cursor/mcp.json
{
"mcpServers": {
"ventriloquist": {
"command": "uvx",
"args": [
"ventriloquist-mcp"
]
}
}
}{
"mcpServers": {
"ventriloquist": {
"command": "uvx",
"args": [
"ventriloquist-mcp@0.3.0"
]
}
}
}Format verified against the official Cursor docs ↗.
.vscode/mcp.json
{
"servers": {
"ventriloquist": {
"command": "uvx",
"args": [
"ventriloquist-mcp"
]
}
}
}{
"servers": {
"ventriloquist": {
"command": "uvx",
"args": [
"ventriloquist-mcp@0.3.0"
]
}
}
}Format verified against the official VS Code docs ↗.
mcp_config.json
{
"mcpServers": {
"ventriloquist": {
"command": "uvx",
"args": [
"ventriloquist-mcp"
]
}
}
}{
"mcpServers": {
"ventriloquist": {
"command": "uvx",
"args": [
"ventriloquist-mcp@0.3.0"
]
}
}
}Format verified against the official Windsurf docs ↗.
Defined in the server's official registry manifest. Required secrets are shown as <YOUR_…> placeholders in the configs above.
VENT_ALLOW_HIGH — 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 — Set to 1 to let the server call a model to re-ground broken anchors. Off keeps serving model-free.VENT_HOME — Directory for your own packs and traces. Defaults to ~/.ventriloquist.VENT_READ_ONLY — Set to 1 to serve read-only tools only. Every other call is refused, even with VENT_ALLOW_HIGH.VENT_NO_VALUES — Set to 1, together with VENT_HEAL=1, to keep field values out of what the healer sends to the model.Distributed as Python, listed under Developer Tools. Review our MCP security guide before granting access to real data.
Run the install command shown above, then paste the config for your client (Claude Desktop, Claude Code, Cursor, VS Code or Windsurf) into its MCP settings and restart the client.
The MCP server itself is free to install. The source is public on https://github.com/ShaanGS/ventriloquist. Any third-party service it calls may require its own API key and account.
Any MCP-compatible client can use it, including Claude Desktop, Claude Code, Cursor, VS Code, Windsurf and custom agents.
Publish this server? Link back with a badge on your README or site — copy either snippet.
Markdown
[](https://mcpnav.net/server/ventriloquist/)
HTML
<a href="https://mcpnav.net/server/ventriloquist/"><img src="https://mcpnav.net/badge/ventriloquist.svg" alt="Listed on MCPNav" height="20"></a>