A Model Context Protocol (MCP) server that provides AI agents with the ability to control and monitor Voicemeeter audio mixer through the Voicemeeter Remote API.
- Full Voicemeeter Control: Connect to and control all versions of Voicemeeter (Standard, Banana, Potato)
- Parameter Management: Get and set any Voicemeeter parameter (mute, gain, routing, etc.)
- Audio Level Monitoring: Real-time audio level monitoring for all channels
- Preset Loading: Load Voicemeeter presets from XML files
- Dynamic Resources: Automatically adapts to the connected Voicemeeter type
- Application Launching: Start Voicemeeter applications programmatically
- Voicemeeter Standard: 2 hardware inputs + 1 virtual input, 3 outputs
- Voicemeeter Banana: 3 hardware inputs + 2 virtual inputs, 5 outputs
- Voicemeeter Potato: 5 hardware inputs + 3 virtual inputs, 8 outputs
- Python 3.8 or higher
- Voicemeeter installed on Windows
- MCP-compatible client (like Claude Desktop)
git clone <repository-url>
cd voicemeeter-mcp-server
pip install -e .pip install -e ".[dev]"voicemeeter-mcp-serverOr directly with Python:
python -m voicemeeter_mcp_server.mainAdd to your MCP client configuration (e.g., Claude Desktop):
{
"mcpServers": {
"voicemeeter": {
"command": "voicemeeter-mcp-server",
"args": []
}
}
}- voicemeeter_connect: Connect to Voicemeeter Remote API
- voicemeeter_disconnect: Disconnect from Voicemeeter Remote API
- voicemeeter_run: Launch Voicemeeter application (standard/banana/potato)
- voicemeeter_get_parameter: Get any Voicemeeter parameter value
- voicemeeter_set_parameter: Set any Voicemeeter parameter value
- voicemeeter_get_levels: Get real-time audio levels for specified channels
- voicemeeter_load_preset: Load settings from Voicemeeter XML preset files
- voicemeeter://status: Connection status and Voicemeeter type information
- voicemeeter://version: Voicemeeter version and API information
- voicemeeter://levels: Current audio levels for all channels
- voicemeeter://strip/{id}: Individual input strip parameters
- voicemeeter://bus/{id}: Individual output bus parameters
Strip[0].mute # Mute strip 0 (0.0 = unmuted, 1.0 = muted)
Strip[0].gain # Gain in dB (-60.0 to +12.0)
Strip[0].A1 # Route to Bus A1 (0.0 = off, 1.0 = on)
Strip[0].label # Strip label (string)
Strip[0].device.name # Input device name (string)
Bus[0].mute # Mute bus 0
Bus[0].gain # Bus gain in dB
Bus[0].eq.on # EQ on/off
Bus[1].mono # Mono mode
# Connect to Voicemeeter
await mcp_client.call_tool("voicemeeter_connect")
# Mute input strip 0
await mcp_client.call_tool("voicemeeter_set_parameter", {
"parameter": "Strip[0].mute",
"value": 1.0
})
# Set gain on bus 1
await mcp_client.call_tool("voicemeeter_set_parameter", {
"parameter": "Bus[1].gain",
"value": -6.0
})
# Get current levels
await mcp_client.call_tool("voicemeeter_get_levels", {
"level_type": 0,
"channels": [0, 1, 2, 3]
})# Load a preset configuration
await mcp_client.call_tool("voicemeeter_load_preset", {
"preset_path": "C:/path/to/preset.xml"
})voicemeeter-mcp-server/
├── src/
│ └── voicemeeter_mcp_server/
│ ├── __init__.py
│ ├── main.py # Entry point
│ ├── server.py # MCP server implementation
│ └── voicemeeter_api.py # Voicemeeter API wrapper
├── tests/ # Test files
├── presets/ # Example presets
├── samples/ # Documentation and samples (not in git)
├── pyproject.toml # Project configuration
└── README.md
pytestblack src/ tests/
isort src/ tests/mypy src/This server wraps the official Voicemeeter Remote API. For detailed parameter documentation, refer to:
- Voicemeeter Remote API documentation (included in samples/)
- Official Voicemeeter website
0: Input levels (pre-fader)1: Output levels (pre-fader)2: Output levels (post-fader)3: Output levels (post-mute)
Run the comprehensive troubleshooting script:
python troubleshoot.pyThis script will:
- Check system architecture and Python version
- Verify Voicemeeter processes are running
- Test DLL loading and API functions
- Provide detailed diagnostic information
-
"Failed to connect to Voicemeeter"
- Ensure Voicemeeter is installed and running
- Try running as administrator
- Check that no other applications are using the Remote API
-
"Failed to load DLL"
- Verify Voicemeeter installation
- Check if running 32-bit vs 64-bit Python matches Voicemeeter version
-
Parameter not found
- Verify parameter name syntax:
Strip[0].mute,Bus[1].gain - Check if parameter exists for your Voicemeeter version
- Some parameters are version-specific
- Verify parameter name syntax:
Set environment variable for verbose logging:
set VOICEMEETER_DEBUG=1
voicemeeter-mcp-serverGenerate audio test files for testing Voicemeeter functionality:
python generate_audio_samples.pyThis creates various test files in audio_samples/:
- Basic tones: 440Hz, 100Hz, 8kHz test tones
- Stereo test: Different frequencies in left/right channels
- Frequency sweep: 20Hz to 20kHz sweep for frequency response testing
- Channel identification: Individual tones for multi-channel testing
- White noise: For general audio testing
Use these files to:
- Test audio routing through Voicemeeter
- Verify real-time level monitoring
- Check stereo separation
- Test parameter changes while audio is playing
rkzwei (rk@rkzwei.dev)
- GitHub: @rkzwei
- Original author and maintainer of Voicemeeter MCP Server
MIT License - see LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Run the test suite
- Submit a pull request
- VB-Audio Software for Voicemeeter and the Remote API
- Anthropic for the Model Context Protocol specification
- The MCP community for tools and examples