lmms-mcp

lmms-mcp

Enables AI agents to create, modify, and save LMMS music projects programmatically, including tracks, notes, mixer control, effects, and song settings.

Category
Visit Server

README

LMMS MCP Server

An MCP (Model Context Protocol) server for LMMS - the free, open-source digital audio workstation. Lets AI agents create, modify, and save LMMS music projects programmatically.

Features

  • Create & save LMMS projects (.mmpz compressed, .mmp XML)
  • Add tracks: Instrument, Sample, Pattern (Beat/Bassline), Automation
  • Add notes with MIDI key, position, velocity, and panning
  • Effects: 18 built-in effects on tracks and mixer channels (delay, reverb, EQ, compressor...)
  • ZynAddSubFX presets: Load any of ~950 factory instruments (.xiz), tune parameters
  • Arrangement: Place patterns, BB clips and audio clips on the song timeline
  • Automation: Tempo ramps, volume swells, panning curves - linked to real LMMS models
  • Mixer control: Create channels, set volume, name channels
  • Song settings: Tempo (BPM), time signature, master volume/pitch
  • Musical utilities: Note name conversion, scale generation, tick/bar conversion
  • Full project inspection: Read tracks, patterns, notes, mixer channels

Installation

pip install lmms-mcp

Or from source:

git clone https://github.com/TypeWolf/lmms-mcp.git
cd lmms-mcp
pip install -e .

Requirements

  • Python 3.10+
  • An MCP host (opencode, Claude Desktop, Cursor, etc.)

Quick Start

With opencode

Add to your opencode.json:

{
  "mcp": {
    "lmms": {
      "type": "local",
      "command": ["python", "-m", "lmms_mcp"],
      "environment": {
        "LMMS_PROJECTS_DIR": "/path/to/your/lmms/projects"
      }
    }
  }
}

With Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "lmms": {
      "command": "python",
      "args": ["-m", "lmms_mcp"],
      "env": {
        "LMMS_PROJECTS_DIR": "/path/to/your/lmms/projects"
      }
    }
  }
}

Run directly

python -m lmms_mcp

Tools

Project Management

Tool Description
create_project Create a new empty LMMS project
load_project Load an existing .mmpz or .mmp file
save_project Save the current project
get_project_info Get project overview (tempo, tracks, mixer)
get_project_xml Get raw XML of the project

Track Operations

Tool Description
add_instrument_track Add a synthesizer/sampler track
add_sample_track Add an audio sample track
add_automation_track Add a parameter automation track
add_pattern_track Add a beat/bassline pattern track
remove_track Remove a track by index
get_track Get detailed track information
list_tracks List all tracks with summary
set_track_volume Set track volume (0-200)
set_track_panning Set track panning (-100 to +100)
mute_track Mute/unmute a track
solo_track Solo/unsolo a track

Notes & Patterns

Tool Description
add_note Add a note by MIDI key number
add_note_by_name Add a note by name (e.g. "C4", "A#3")
add_notes_batch Add multiple notes at once

Mixer

Tool Description
add_mixer_channel Create a new mixer channel
get_mixer_channels List all mixer channels
set_mixer_channel_volume Set channel volume
set_mixer_channel_name Rename a channel

Song Settings

Tool Description
set_tempo Set BPM (10-999)
set_time_signature Set time signature (e.g. 4/4, 3/4)
set_master_volume Set master volume (0-200)
set_master_pitch Set master pitch (-12 to +12 semitones)

Effects (FX Chain)

Tool Description
add_effect Add a built-in effect to a track or mixer channel
remove_effect Remove an effect by name or chain position
toggle_effect Enable/bypass an effect without removing it
get_effect_chain List all effects on a track or mixer channel

ZynAddSubFX Presets & Parameters

Tool Description
list_zyn_presets Browse ~950 factory presets (.xiz) by category
load_zyn_preset Load a preset into a zynaddsubfx track
set_zyn_params Set portamento, filter, FM gain, resonance etc.

Arrangement (Song Editor Timeline)

Tool Description
place_pattern Place an empty pattern clip on an instrument track
place_bb_clip Trigger a BB pattern at a given time
place_sample_clip Place an audio file clip on a sample track
assign_sample_file Assign/replace the audio file on sample clips
move_clip Move a clip to a new position
delete_clip Delete a clip at a position
get_arrangement Full timeline overview of all clips

Automation

Tool Description
add_automation Create automation curves for tempo, master volume/pitch, track volume/panning and mixer channel volume

LMMS App Integration

Tool Description
get_lmms_info Detect installed LMMS version + available plugins
render_project Export to WAV/FLAC/OGG/MP3 via headless LMMS render

The server reads and writes project files directly - it never launches the LMMS GUI. The installed LMMS is only used for: preset discovery, plugin availability checks (warns about plugins your version lacks, e.g. SlicerT/Xpressive require LMMS 1.3+) and audio rendering.

Custom Plugins & VST

Tool Description
list_available_plugins Dynamically list ALL installed plugins (incl. custom ones)
scan_vst_directory Find VST .dll files in a folder
add_vst_track Add a track hosting a VST plugin (Vestige)

Custom LMMS plugins dropped into the plugins folder are detected automatically and can be used directly by name - no server update needed.

Utilities

Tool Description
note_name_to_key Convert note name to MIDI number
key_to_note_name Convert MIDI number to note name
bars_to_ticks_converter Convert bars to ticks
ticks_to_bars_converter Convert ticks to bars
generate_scale Generate a musical scale

Resources

URI Description
lmms://project/info Current project information
lmms://project/tracks All tracks in the project
lmms://project/mixer All mixer channels
lmms://project/xml Raw project XML
lmms://reference/instruments Available LMMS instruments
lmms://reference/effects Available LMMS effects
lmms://reference/note_names MIDI note name mapping
lmms://reference/scales Available musical scales

Prompts

Name Description
create_basic_song Create a song structure with drums, bass, melody
add_drum_pattern Generate a drum pattern (four-on-the-floor, breakbeat, etc.)
create_melody Generate a melody in a given scale
mix_and_arrange Mix and arrange the current project
export_project Export/save the project

LMMS Concepts

Concept Value
Ticks per bar 192 (in 4/4 time)
Default tempo 140 BPM
Note 60 C4 (middle C)
Note 69 A4 (440 Hz)
Volume range 0-200 (100 = normal)
Panning range -100 (left) to +100 (right)
Track type 0 Instrument
Track type 1 Pattern (Beat/Bassline)
Track type 2 Sample
Track type 5 Automation

Available Instruments

All built-in LMMS instruments (verified against LMMS source). LMMS has no plugin download mechanism - only these can be used:

Plugin ID Name
tripleoscillator Three-oscillator subtractive synth (default)
kicker Kick drum synth
audiofileprocessor Audio file player/sampler
organic Additive organ synth
malletsstk Physical modeling mallets (STK)
lb302 TB-303 style acid bass
monstro Powerful 3-oscillator polyphonic synth
freeboy Game Boy sound chip emulator
nes NES 8-bit sound chip emulator
sid Commodore 64 SID chip emulator
sfxr Retro sound effect generator
opulenz OPL3 FM synthesizer
watsyn 4-oscillator wavetable-style synth
xpressive Expressive mono lead synth
zynaddsubfx ZynAddSubFX powerful feature-rich synth
sf2player SoundFont (.sf2) sample player
vibedstrings Vibrating string physical model
bitinvader Bit-crushed wavetable synth
patman GUS patch sampler
gigplayer GIG sample library player
slicert Beat slicer for audio loops
vestige VST plugin host (Windows only)

Available Effects

Built-in LMMS effects for add_effect: amplifier, bassbooster, bitcrush, compressor, crossovereq, delay, dispersion, dualfilter, dynamicsprocessor, eq, flanger, frequencyshifter, multitapecho, reverbsc, slewdistortion, stereoenhancer, stereomatrix, waveshaper.

Typical chains:

  • Lead synth: delay -> reverbsc
  • Vocals: eq -> compressor -> reverbsc
  • Master bus: eq -> compressor -> stereoenhancer

Environment Variables

Variable Default Description
LMMS_PROJECTS_DIR ~/Desktop/Media/lmms/AI-Projects Default directory for saving projects
LMMS_PRESETS_DIR auto-detected Path to ZynAddSubFX presets folder (data/presets/ZynAddSubFX)
LMMS_EXECUTABLE auto-detected Path to lmms.exe (for version/plugin checks and rendering)

Configuration

opencode.json

{
  "mcp": {
    "lmms": {
      "type": "local",
      "command": ["python", "-m", "lmms_mcp"],
      "cwd": ".",
      "enabled": true,
      "environment": {
        "LMMS_PROJECTS_DIR": "C:\\Users\\you\\Music\\LMMS\\Projects"
      }
    }
  }
}

claude_desktop_config.json

{
  "mcpServers": {
    "lmms": {
      "command": "python",
      "args": ["-m", "lmms_mcp"],
      "env": {
        "LMMS_PROJECTS_DIR": "/home/you/music/lmms/projects"
      }
    }
  }
}

Development

# Clone and install
git clone https://github.com/TypeWolf/lmms-mcp.git
cd lmms-mcp
pip install -e ".[dev]"

# Run tests
pytest

# Run in development mode
mcp dev src/lmms_mcp/server.py

License

MIT License - see LICENSE for details.

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

Links

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

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured