mixxx-mcp

mixxx-mcp

MCP server for Mixxx DJ software that enables AI agents to control transport, mixing, EQ, loops, hotcues, and effects in real time through MIDI and OSC.

Category
Visit Server

README

mixxx-mcp

MCP (Model Context Protocol) server for Mixxx DJ Software. Lets AI agents (Claude, Claude Code, etc.) control Mixxx in real time — transport, mixing, EQ, loops, hotcues, effects.


Architecture

AI Agent (Claude)
      │
      ▼ MCP tools
mixxx-mcp Python Server
      │                     ┌─────────────────────┐
      ├─ MIDI CC out ───────▶│ Virtual MIDI port   │
      │                     │ "mixxx-mcp"          │
      │                     └────────┬────────────┘
      │                              ▼ CC → engine.setValue()
      │                     ┌────────────────────┐
      │                     │ Mixxx + mixxx-mcp  │
      │                     │ .js controller      │
      │                     │ script              │
      ◀── OSC UDP ──────────┤ broadcasts state    │
   OscStateStore            └────────────────────┘

Write path: mcp.tool → MidiBridge → rtmidi CC → Mixxx JS script → engine.setValue()
Read path: Mixxx JS → OSC UDP → OscStateStore → mcp.tool → AI


Setup

1. Install Python server

pip install -e ".[dev]"
# or without dev deps:
pip install mcp python-osc python-rtmidi

2. Install Mixxx controller script

Copy both files to your Mixxx controllers directory:

# macOS
cp mixxx-mcp.js mixxx-mcp.midi.xml \
  ~/Library/Containers/org.mixxx.mixxx/Data/Library/Application\ Support/Mixxx/controllers/

# Linux
cp mixxx-mcp.js mixxx-mcp.midi.xml ~/.mixxx/controllers/

# Windows
cp mixxx-mcp.js mixxx-mcp.midi.xml %LOCALAPPDATA%\Mixxx\controllers\

3. Enable in Mixxx

  1. Open Mixxx → Preferences → Controllers
  2. Select mixxx-mcp from the device list
  3. Check Enable
  4. Click OK

Note (Windows): Virtual MIDI ports require loopMIDI. Create a port named mixxx-mcp before starting the server.

4. Run the MCP server

# stdio mode (Claude Desktop / claude-code)
python main.py

# HTTP mode (remote / multi-client)
python main.py --http --port 8080

5. Configure Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "mixxx": {
      "command": "python",
      "args": ["/path/to/mixxx-mcp/main.py"],
      "env": {}
    }
  }
}

Available Tools

Tool Description
play(deck) Start playback
stop(deck) Stop playback
cue(deck) Trigger CUE
sync(deck) Toggle BPM sync
set_volume(deck, value) Channel fader 0.0–1.0
set_crossfader(value) Crossfader -1.0–1.0
set_eq(deck, low, mid, high) EQ bands 0.0–4.0
set_pregain(deck, value) Trim 0.0–4.0
set_rate(deck, value) Tempo pitch -1.0–1.0
nudge_tempo(deck, direction, size) Tempo nudge up/down
set_loop(deck, beats) Activate beat loop
exit_loop(deck) Deactivate loop
halve_loop(deck) / double_loop(deck) Resize loop
set_hotcue(deck, slot) Set hotcue 1–8
goto_hotcue(deck, slot) Jump to hotcue
clear_hotcue(deck, slot) Delete hotcue
beatjump(deck, beats) Jump ±N beats
get_deck_state(deck) Read live deck state
get_mixer_state() Read master mixer state
get_all_state() Full OSC state dump
send_control(group, key, value) Raw control escape hatch
toggle_effect(unit, effect, enabled) Effect on/off
set_effect_mix(unit, value) Effect wet/dry

OSC State

Mixxx broadcasts control changes via the JS script's engine.makeConnection() callbacks. The Python server listens on UDP 57121 at path /mixxx/<group>/<key>.

To fully enable OSC push (vs poll), the JS callbacks in mixxx-mcp.js need to forward values via a UDP socket. This requires a Mixxx build with liblo, or you can extend the JS script to use XMLHttpRequest to POST state to a local HTTP endpoint.


Mixxx Controls Reference

Full control list: https://manual.mixxx.org/latest/en/chapters/appendix/mixxx_controls.html

Key groups:

  • [Channel1][Channel4] — Decks
  • [Master] — Mixer master
  • [Sampler1][Sampler64] — Samplers
  • [EffectRack1_EffectUnit1][_EffectUnit4] — Effect units
  • [EffectRack1_EffectUnit1_Effect1][_Effect3] — Individual effects
  • [Playlist] — Library navigation

License

MIT

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
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
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
VeyraX MCP

VeyraX MCP

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

Official
Featured
Local
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
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
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

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
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