Skip to main content
Glama
TypeWolf

lmms-mcp

by TypeWolf

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
create_projectA

Create a new empty LMMS project.

Args: bpm: Tempo in beats per minute (10-999) time_sig_numerator: Time signature numerator (e.g. 4 for 4/4) time_sig_denominator: Time signature denominator (e.g. 4 for 4/4) master_volume: Master volume (0-200, 100=normal) master_pitch: Master pitch offset in semitones (-12 to +12)

load_projectA

Load an existing LMMS project file (.mmpz or .mmp).

Args: path: Full path to the LMMS project file

save_projectA

Save the current LMMS project to a file.

Args: path: File path to save to. If empty, saves to the default projects directory. If only a filename is given (e.g. "song.mmpz"), it's saved in the default directory. compressed: If True, saves as .mmpz (compressed). If False, saves as .mmp (plain XML). By default (None) the format follows the file extension: ".mmp" is always plain XML, everything else compressed. Writing compressed data into a .mmp breaks LMMS and other tools.

get_project_infoA

Get comprehensive information about the current LMMS project.

Returns tempo, time signature, tracks, mixer channels, and more.

get_project_xmlA

Get the raw XML representation of the current project.

Useful for debugging or understanding the exact project structure.

add_instrument_trackA

Add an instrument track to the project.

Args: name: Track name (e.g. "Lead Synth", "Bass") instrument: Plugin name (lowercase). Valid options: tripleoscillator, kicker, audiofileprocessor, organic, malletsstk, freeboy, lb302, monstro, nes, opulenz, patman, sf2player, sfxr, sid, slicert, vibedstrings, watsyn, xpressive, zynaddsubfx, gigplayer, bitinvader mixer_channel: Mixer channel number (0=Master, 1+=custom channels) volume: Track volume (0-200, 100=normal) panning: Track panning (-100 to +100, 0=center)

add_sample_trackB

Add a sample track for arranging audio files.

Args: name: Track name mixer_channel: Mixer channel number (0=Master) volume: Track volume (0-200) panning: Track panning (-100 to +100)

add_automation_trackC

Add an automation track for parameter automation.

Args: name: Track name

add_pattern_trackA

Add a beat/bassline pattern track for drum sequencing.

A default inner kick instrument is created so notes can be added immediately via add_note. Trigger it in the song editor with place_bb_clip.

Args: name: Pattern track name

remove_trackA

Remove a track by its index.

Args: track_index: Zero-based index of the track to remove

get_trackA

Get detailed information about a specific track.

Args: track_index: Zero-based index of the track

list_tracksA

List all tracks in the current project with their index, name, and type.

set_track_volumeA

Set the volume of a track.

Args: track_index: Zero-based track index volume: Volume level (0-200, 100=normal)

set_track_panningA

Set the panning of a track.

Args: track_index: Zero-based track index panning: Pan value (-100=left, 0=center, 100=right)

mute_trackA

Mute or unmute a track.

Args: track_index: Zero-based track index muted: True to mute, False to unmute

solo_trackA

Solo or unsolo a track.

Args: track_index: Zero-based track index solo: True to solo, False to unsolo

add_noteA

Add a note to a track's pattern.

Args: track_index: Zero-based track index (must be an instrument or pattern track) key: MIDI note number (0-127). 60=C4 (middle C), 69=A4 pos: Position in ticks RELATIVE TO THE PATTERN START (192 ticks = 1 bar). Notes are placed inside the target pattern; if a note ends beyond the pattern clip length, the clip is extended automatically (notes beyond the clip end would otherwise be silent). length: Note length in ticks (48 = 1/16 note, 96 = 1/8 note, 192 = 1 bar) volume: Note velocity (0-200, 100=normal) panning: Note panning (-100 to +100) pattern_index: Which pattern on the track to edit (default: first). Use place_pattern to create additional patterns at specific song positions first.

add_note_by_nameB

Add a note using a note name (e.g. 'C4', 'A#3', 'F#5').

Args: track_index: Zero-based track index note_name: Note name like 'C4', 'A#3', 'F5', 'Bb2' pos: Position in ticks (192 ticks = 1 bar) length: Note length in ticks (48 = 1/16, 96 = 1/8, 192 = 1 bar) volume: Note velocity (0-200)

add_notes_batchA

Add multiple notes to a track at once.

Args: track_index: Zero-based track index notes: List of note objects, each with: key (int or str like "C4"), pos (ticks), length (ticks, default 48), volume (0-200, default 100), panning (-100 to +100, default 0)

add_mixer_channelA

Add a new mixer channel.

The channel is automatically routed to Master via an explicit element - LMMS drops the implicit connection when loading, so channels without it would be silent.

Args: name: Channel name (e.g. "Drums", "Bass", "Lead") volume: Channel volume (0.0-2.0, 1.0=0dB)

get_mixer_channelsA

Get all mixer channels with their settings.

set_mixer_channel_volumeA

Set the volume of a mixer channel.

Args: channel_num: Channel number (0=Master) volume: Volume (0.0-2.0, 1.0=0dB)

set_mixer_channel_nameB

Rename a mixer channel.

Args: channel_num: Channel number (0=Master) name: New channel name

add_effectA

Add an effect to a track's or mixer channel's effect chain.

Args: target_type: "track" or "mixer" target_index: Track index or mixer channel number (0=Master) effect: Built-in LMMS effect name. Valid: amplifier, bassbooster, bitcrush, compressor, crossovereq, delay, dispersion, dualfilter, dynamicsprocessor, eq, flanger, frequencyshifter, multitapecho, reverbsc, slewdistortion, stereoenhancer, stereomatrix, waveshaper wet: Wet/dry mix 0.0-1.0 (1.0=full effect) enabled: Whether the effect is active position: Chain position to insert at (None=end of chain)

remove_effectA

Remove an effect from a chain by name or chain position.

Args: target_type: "track" or "mixer" target_index: Track index or mixer channel number effect: Effect name (e.g. "delay") or position (e.g. 0)

toggle_effectA

Enable or disable an effect without removing it.

Args: target_type: "track" or "mixer" target_index: Track index or mixer channel number effect: Effect name or chain position enabled: True to enable, False to bypass

get_effect_chainA

List all effects on a track's or mixer channel's effect chain.

Args: target_type: "track" or "mixer" target_index: Track index or mixer channel number

list_zyn_presetsA

List available ZynAddSubFX presets (.xiz files).

Args: category: Optional category filter (e.g. "Bass", "Strings", "Synth", "Pads", "Brass"). Omit to list all categories' presets.

load_zyn_presetA

Load a ZynAddSubFX preset (.xiz) into a zynaddsubfx instrument track.

The track must use the 'zynaddsubfx' instrument. Presets can be referenced by filename (e.g. "Bass 1"), "Category/Name", or full path.

Args: track_index: Index of the target track preset: Preset name, "Category/Name" or absolute path

set_zyn_paramsA

Set ZynAddSubFX global parameters on a zynaddsubfx track.

All values are 0-127 as in the ZynAddSubFX UI. Only provided parameters are changed.

Args: track_index: Index of the zynaddsubfx track portamento: Portamento amount (0-127) filterfreq: Filter cutoff frequency (0-127) filterq: Filter resonance/Q (0-127) bandwidth: Bandwidth (0-127) fmgain: FM gain (0-127) rescenterfreq: Resonance center frequency (0-127) resbandwidth: Resonance bandwidth (0-127)

get_lmms_infoA

Get info about the installed LMMS application.

Shows the detected LMMS version, installation path and which instrument/effect plugins are actually available. Use this to check whether a plugin is supported before using it.

render_projectA

Export the current project to an audio file using the installed LMMS.

This launches LMMS in headless render mode (no GUI). Requires a working LMMS installation. The project is saved first, then rendered.

Args: output_path: Output file path (default: .wav in the same directory) file_format: "wav", "flac", "ogg" or "mp3" samplerate: Sample rate in Hz (44100, 48000, ...) bitrate: Bitrate in kbit/s for lossy formats (ogg/mp3)

list_available_pluginsA

List ALL plugins installed in your LMMS, dynamically detected.

Includes built-in instruments/effects plus any custom plugins the user added to LMMS's plugins folder. Custom plugins can be used directly by name in add_instrument_track / add_effect.

scan_vst_directoryA

Scan a folder for VST plugin DLLs (.dll files).

Args: directory: Path to scan (e.g. "C:/VSTPlugins") recursive: Include subdirectories

add_vst_trackA

Add a track hosting a VST plugin (.dll file).

Uses LMMS's Vestige host. The VST must be compatible with your LMMS architecture (64-bit LMMS needs 64-bit VSTs).

Args: name: Track name (e.g. "Spire Lead") dll_path: Absolute path to the VST .dll file mixer_channel: Mixer channel number (0=Master) volume: Track volume (0-200) panning: Track panning (-100 to +100)

assign_sample_fileA

Assign an audio file to all clips on a sample track.

Use relative paths for LMMS's built-in samples (e.g. "drums/kick01.ogg") or absolute paths for your own files.

Args: track_index: Index of the sample track file_path: Audio file path (WAV/OGG/MP3/FLAC)

place_sample_clipB

Place an audio file clip on a sample track at a given bar.

Args: track_index: Index of the sample track file_path: Audio file path (relative to LMMS samples or absolute) pos_bars: Start position in bars (0 = beginning) length_bars: Clip length in bars

place_patternA

Place an empty pattern clip on an instrument track (song arrangement).

The pattern starts empty; add notes with add_note (they go into the first pattern) or use this to sketch the arrangement structure first.

Args: track_index: Index of the instrument track pos_bars: Start position in bars (0 = beginning) name: Optional pattern name (defaults to track name) length_bars: Pattern length in bars

place_bb_clipA

Place a beat/bassline clip on a pattern track in the song editor.

This triggers the BB pattern (created via add_pattern_track and filled with notes) to play at the given time.

Args: bb_track_index: Index of the pattern (BB) track pos_bars: Start position in bars length_bars: Clip length in bars (default 4 = one BB cycle of 16 steps)

move_clipA

Move a clip (pattern/bbtco/sampleclip) to a new time position.

Args: track_index: Track containing the clip old_pos_bars: Current start position in bars new_pos_bars: New start position in bars

delete_clipA

Delete a clip at a given position from a track.

Args: track_index: Track containing the clip pos_bars: Clip start position in bars

get_arrangementA

Get the full song editor arrangement: all clips sorted by time.

Shows every pattern, BB clip, sample clip and automation curve with their positions and lengths in ticks and bars.

add_automationA

Create an automation curve that controls a parameter over time.

Automatable targets:

  • song + tempo: Song BPM (e.g. tempo ramps)

  • song + master_volume / master_pitch

  • track + volume / panning (target_index = track index)

  • mixer + volume (target_index = mixer channel number)

Args: target_type: "song", "track" or "mixer" param: Parameter name (see above) points: Curve points as list of {"bar": float, "value": float}. Example: [{"bar": 0, "value": 120}, {"bar": 8, "value": 140}] target_index: Track index or mixer channel (ignored for "song") name: Automation name (defaults to parameter name) smooth: True = smooth curves (cubic), False = linear steps

set_tempoA

Set the song tempo (BPM).

Args: bpm: Tempo in beats per minute (10-999)

set_time_signatureA

Set the time signature.

Args: numerator: Beats per bar (e.g. 4, 3, 6) denominator: Beat unit (e.g. 4 for quarter notes, 8 for eighth notes)

set_master_volumeA

Set the master volume.

Args: volume: Master volume (0-200, 100=normal)

set_master_pitchA

Set the master pitch offset.

Args: pitch: Pitch offset in semitones (-12 to +12)

note_name_to_keyA

Convert a note name (e.g. 'C4') to its MIDI key number.

Args: name: Note name like 'C4', 'A#3', 'F#5', 'Bb2'

key_to_note_nameA

Convert a MIDI key number to its note name.

Args: key: MIDI key number (0-127)

bars_to_ticks_converterA

Convert bars to ticks (192 ticks per bar in 4/4 time).

Args: bars: Number of bars

ticks_to_bars_converterA

Convert ticks to bars (192 ticks per bar in 4/4 time).

Args: ticks: Number of ticks

generate_scaleA

Generate a musical scale as MIDI key numbers and note names.

Args: root_note: Root note name (e.g. 'C4', 'A3') scale_type: Scale type: major, minor, dorian, mixolydian, pentatonic_major, pentatonic_minor, blues, chromatic, harmonic_minor, melodic_minor num_octaves: Number of octaves to generate

Prompts

Interactive templates invoked by user choice

NameDescription
create_basic_songCreate a basic song structure with drums, bass, and melody. Args: genre: Musical genre (electronic, rock, hip-hop, jazz, pop, ambient) bpm: Tempo in beats per minute key: Root note for the melody (e.g. 'C4', 'A3')
add_drum_patternCreate a drum pattern for the current project. Args: pattern_style: Drum pattern style (four_on_the_floor, breakbeat, hiphop, trap, rock_basic, waltz) steps: Number of steps in the pattern (16 or 32)
create_melodyGenerate a melody for the current project. Args: scale_type: Musical scale (major, minor, pentatonic_major, blues, etc.) root_note: Root note of the scale bars: Number of bars for the melody style: Melodic style (simple, complex, arpeggiated, chordal)
mix_and_arrangeMix and arrange the current project. Guides through volume balancing, panning, and arrangement decisions.
export_projectExport/save the current project. Args: format: Export format (mmpz=compressed, mmp=uncompressed XML, wav=render audio) path: Output file path

Resources

Contextual data attached and managed by the client

NameDescription
resource_project_infoGet current LMMS project information.
resource_project_tracksGet all tracks in the current project.
resource_project_mixerGet all mixer channels in the current project.
resource_project_xmlGet the raw XML of the current project.
resource_instrumentsList of available LMMS instruments/plugins (built-in, verified).
resource_effectsList of available LMMS effects (built-in, verified).
resource_note_namesMIDI note number to note name mapping reference.
resource_scalesAvailable musical scales and their intervals.

TDQS

B3.2/5.0

Scored across 52 tools

Disambiguation3/5

Most tools map cleanly to a specific resource (tracks, mixer, effects, clips), but add_note and add_note_by_name are near-duplicates with only input-format differences, and get_project_info overlaps with list_tracks and get_mixer_channels. Descriptions help, but the boundaries are not always crisp.

Naming Consistency4/5

The set overwhelmingly follows a snake_case verb_noun pattern such as add_instrument_track, remove_effect, set_tempo, and list_tracks. Minor deviations exist in the converter utilities (note_name_to_key, bars_to_ticks_converter) and the add_note_by_name / add_notes_batch variants, but the overall convention is predictable.

Tool Count1/5

52 tools is beyond the 50+ extreme threshold in the rubric, making the surface unwieldy for agent selection. Several tools such as add_note_by_name and the standalone converters could be consolidated into more general tools.

Completeness2/5

Creation and arrangement workflows are broadly covered, but note editing is incomplete: there is no way to list, update, or delete notes once added, which creates dead ends for pattern editing. Mixer channels can be added but not removed, and effect parameters cannot be adjusted beyond enabling/disabling.

Maintenance

ActivityMaintained
ResponsivenessNo issues