Skip to main content
Glama
aaronckj
by aaronckj
README.md
# voicemeeter-mcp

An MCP (Model Context Protocol) server for controlling
[Voicemeeter](https://vb-audio.com/Voicemeeter/) (Basic, Banana, or Potato)
on Windows: strip and bus gains, mutes, output routing, live levels, macro
buttons, presets, and audio-engine restarts.

- Uses the official Voicemeeter Remote API (via
  [voicemeeter-api](https://pypi.org/project/voicemeeter-api/)).
- **Windows-only, local-only** — the Remote API is an in-process DLL, so this
  server must run on the PC where Voicemeeter runs. From another machine,
  connect over SSH stdio (example below).
- Every mutating tool accepts `dry_run=true` and returns a preview instead of
  acting.

## Quick start (on the Voicemeeter PC)

```bash
# select your edition: basic | banana | potato   (default: banana)
set VM_MCP_KIND=banana

claude mcp add voicemeeter -s user -- uvx voicemeeter-mcp
```

From a different machine (SSH stdio):

```bash
claude mcp add voicemeeter -s user -- ssh streampc "uvx voicemeeter-mcp"
```

## Tools

| Tool | Purpose |
|---|---|
| `mixer_state` | full snapshot: every strip/bus with label, gain, mute, routing |
| `set_strip_gain` / `mute_strip` | input fader control |
| `set_strip_routing` | send a strip to A1/A2/A3/B1/B2 outputs |
| `set_bus_gain` / `mute_bus` | output control |
| `get_levels` | live post-fader levels — find silent or clipping paths |
| `trigger_macro_button` | press a Voicemeeter macro button |
| `load_preset` | load a settings XML |
| `restart_audio_engine` | the classic crackle fix |
| `health_check` | connection + version |

A typical agent ask: *"the game audio is too loud on stream"* →
`mixer_state` to find the strip by label → `set_strip_gain(strip, -12)`.

## Development

```bash
pip install -e '.[dev]'
ruff check src tests && pytest
```

Tests run anywhere (fake Remote API); only live use requires Windows.

## License

MIT

TDQS

B3.4/5.0

Scored across 17 tools

Disambiguation5/5

Each tool targets a distinct aspect of mixer control (strip vs bus, gain vs mute, state vs levels, snapshot vs diff). No overlapping purposes.

Naming Consistency5/5

All tools use snake_case with a clear verb_noun pattern (e.g., set_strip_gain, mute_bus). Even compound names like restart_audio_engine follow the same style.

Tool Count4/5

17 tools is slightly high but still reasonable for a comprehensive audio mixer interface. Each tool serves a specific function without redundancy.

Completeness4/5

Covers core mixer operations (gain, mute, routing, compression, gate, EQ), presets, snapshots, and diagnostics. Minor gap: bus EQ only toggles enable/disable, no parametric control.

Maintenance

ActivitySlowing
ResponsivenessNo issues