Skip to main content
Glama
wegitor
by wegitor

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_trackD

Note: Track indices in REAPER API are 0-based (first track = 0, second = 1, etc.) However, REAPER's visual interface displays tracks starting from 1. So track 0 in API = Track 1 in REAPER UI.

rename_trackA

Rename an existing track.

Args: track_index: 0-based track index (0 = first track, 1 = second, etc.) Note: REAPER UI shows tracks starting from 1, but API uses 0-based indexing. API track 0 = UI Track 1, API track 1 = UI Track 2, etc. new_name: New name for the track

set_track_colorB

Set the color of a track.

Args: track_index: 0-based track index (0 = first track, 1 = second track, etc.) color: Color value

get_track_colorA

Get the color of a track.

Args: track_index: 0-based track index (0 = first track, 1 = second track, etc.)

get_track_countA

Get the number of tracks in the project.

get_track_listA

Get a list of all tracks in the project.

Returns: Dict containing status and a list of tracks, each with: - index: Track index - name: Track name - color: Track color (if available)

set_tempoC

Set the project tempo.

get_tempoA

Get the current project tempo.

get_time_signatureA

Get the current time signature of the project.

set_project_time_signatureB

Set the default project time signature.

Args: numerator: Time signature numerator (e.g., 4 in 4/4) denominator: Time signature denominator (e.g., 4 in 4/4)

get_project_time_signatureB

Get the default project time signature.

set_time_signatureA

Set time signature at specified position.

Args: numerator: Time signature numerator (e.g., 4 in 4/4) denominator: Time signature denominator (e.g., 4 in 4/4) position: Position as "measure:beat,fraction" (optional if time is provided) where fraction is milliseconds (e.g., "1:1,500" = measure 1, beat 1, half beat) time: Position in seconds (optional if position is provided)

render_projectA

Render project to audio file.

Args: output_file: Path to output audio file start_time: Start position in seconds (optional if start_measure is provided) end_time: End position in seconds (optional if end_measure is provided) start_measure: Start position as "measure:beat,fraction" (optional if start_time is provided) end_measure: End position as "measure:beat,fraction" (optional if end_time is provided) samplerate: Sample rate in Hz (default: 44100) channels: Number of channels (default: 2) file_format: Formats available on this machine "wave" "aiff" "iso " "ddp " "flac" "mp3l" "oggv" "OggS" "FFMP" "GIF " "LCF " "wvpk"

add_fxC

Add an FX to a track.

remove_fxB

Remove an FX from a track.

set_fx_paramC

Set an FX parameter value.

get_fx_paramC

Get an FX parameter value.

get_fx_param_listC

Get a list of all parameters for an FX.

get_fx_listB

Get a list of all FX on a track.

get_available_fx_listB

Get a list of all available FX plugins in Reaper.

toggle_fxB

Toggle or set the enable/disable state of an FX.

create_regionA

Create a region in the project.

Args: name: Name of the region start_time: Start position in seconds (optional if start_measure is provided) end_time: End position in seconds (optional if end_measure is provided) start_measure: Start position as "measure:beat,fraction" (optional if start_time is provided) end_measure: End position as "measure:beat,fraction" (optional if end_time is provided)

delete_regionC

Delete a region from the project.

create_markerC

Create a marker in the project.

delete_markerC

Delete a marker from the project.

get_region_listA

Get a list of all regions in the project.

Returns: Dict containing status and a list of regions, each with: - index: region index - start: region start position - end: region end position

get_master_trackB

Get information about the master track.

set_master_volumeB

Set the master track volume.

set_master_panC

Set the master track pan.

toggle_master_muteA

Toggle or set the master track mute state.

toggle_master_soloB

Toggle or set the master track solo state.

create_midi_itemA

Create an empty MIDI item on a track.

Important: It is recommended to avoid overlapping MIDI items. Ensure to double-check before creating a new one.

Returns both track_pos_idx and direct_item_id for flexible item referencing:

  • track_pos_idx: 0-based position index within the track (0, 1, 2, etc.)

  • direct_item_id: REAPER's internal item ID (string pointer)

Both can be used interchangeably in subsequent operations like add_midi_note.

Args: track_index: 0-based track index (0 = first track, 1 = second, etc.) Note: REAPER UI shows "Track 1, Track 2" but API uses 0, 1, etc. start_time: Start position in seconds (optional if start_measure is provided) start_measure: Start position as "measure:beat,fraction" (optional if start_time is provided) where fraction is milliseconds (e.g., "1:1,500" = measure 1, beat 1, half beat) length_time: Duration in seconds from start position (from start_time or start_measure)(optional if length_measure is provided). length_measure: Duration as "measure:beat,fraction" from start position (e.g., "2:1,000" = 2 measures from start_time or start_measure)(optional if length_time is provided). The range starts from 0:1,0. The value 0:4,0 equals three beats in a 4/4 time signature. Thus, if you want the length of all beats from one measure, then use 1:1,0; for two measures, use 2:1,0; and for three, use 3:1,0.

add_midi_noteA

Add a MIDI note to a MIDI item. Reaper format 2.1.00 should be converted to 2:1,000.

Important: Please check MIDI item length in which you want to add the note. If the note extends beyond the item bounds, create another one or resize existing before note adding. Double-check the item's starting position before adding it. Notes positioned before the item's position won't be added.

Item Identification - TWO ways to specify which item:

  1. Using track_pos_idx (integer):

    • Pass the simple index number from create_midi_item response

    • Example: item=track_pos_idx=0 for first item, item=track_pos_idx=1 for second item

    • Fast and easy but may change if items are reordered

  2. Using direct_item_id (string):

    • Pass the exact string ID from create_midi_item or get_items_in_time_range

    • Example: item=direct_item_id="MediaItem*0x000001234567890A"

    • Stable and reliable, won't change even if items move

The system automatically detects which type you're using.

Note about positioning:

  • start_time and start_measure specify ABSOLUTE position in the project timeline

  • The note will be placed at this absolute position, regardless of item location

  • Example: start_measure="5:1,000" means measure 5 in the project, not 5 measures into the item

Args: track_index: 0-based track index (0 = first track, 1 = second, etc.) Important: REAPER UI displays "Track 1" but API uses index 0. item: EITHER an integer track_pos_idx (0, 1, 2...) OR a string direct_item_id pitch: MIDI note pitch (0-127) start_time: ABSOLUTE start position in seconds in the project timeline (optional if start_measure is provided) start_measure: ABSOLUTE start position as "measure:beat,fraction" in the project timeline (optional if start_time is provided) length_time: Duration in seconds from note start (from start_time or start_measure)(optional if length_measure is provided) length_measure: Duration as "measure:beat,fraction" from note start (e.g., "0:2,000" = 2 beats from start_time or start_measure)(optional if length_time is provided). Also remember 2:0,0 is not end of 2 measure and 3:1,0 should be. velocity: Note velocity (0-127, default: 96) relative_start: If True, start_time/start_measure are interpreted as offsets from the item's start (i.e. relative to item.start). If False (default), they are treated as absolute project positions.

add_midi_notesA

Add multiple MIDI notes to a MIDI item in one operation.

Important: Please check MIDI item length in which you want to add notes. If any note extends beyond the item bounds, create another one or resize existing before note adding.

Item Identification - TWO ways to specify which item:

  1. Using track_pos_idx (integer):

    • Simple position number: 0 = first item, 1 = second item, etc.

    • Get this from create_midi_item response field "track_pos_idx"

    • Quick but may become invalid if items are deleted/reordered

  2. Using direct_item_id (string):

    • REAPER's internal pointer like "MediaItem*0x000001234567890A"

    • Get this from create_midi_item response field "direct_item_id"

    • Or from get_items_in_time_range response

    • Guaranteed to always point to the same item

Recommendation: Use track_pos_idx for quick scripts, direct_item_id for reliability.

Args: track_index: Index of the track track_pos_idx: EITHER integer track_pos_idx OR string direct_item_id notes: List of note definitions, each containing: - pitch: MIDI note pitch (0-127) - start_time: Start position in seconds (optional if start_measure provided) - start_measure: Start position as "measure:beat,fraction" (optional if start_time provided) - length_time: Duration in seconds (optional if length_measure provided) - length_measure: Duration as "measure:beat,fraction" (e.g., "0:2,000" = 2 beats) - velocity: Note velocity (0-127, optional, default: 96) - relative_start: Default mode for all notes. Per-note override supported via note['relative_start'] (bool).

Example: notes = [ { "pitch": 60, "start_measure": "1:1,000", "length_measure": "0:2,000", "velocity": 100 }, { "pitch": 64, "start_time": 2.5, "length_time": 0.5 } ]

clear_midi_itemB

Clear all MIDI notes from a MIDI item.

get_midi_notesA

Get all MIDI notes from a MIDI item.

By default, returns only visible notes (within item bounds). Invisible notes exist in the MIDI data but won't sound during playback.

Item Identification - Accepts BOTH types:

  • track_pos_idx (integer): Simple index like 0, 1, 2

  • direct_item_id (string): Internal ID like "MediaItem*0x..."

Args: track_index: Index of the track item_id: EITHER integer track_pos_idx OR string direct_item_id include_invisible: If True, include notes outside item bounds (won't sound). Default: False

find_midi_notes_by_pitchA

Find all MIDI notes within a specific pitch range across the project.

get_selected_midi_itemA

Get the first selected MIDI item in the project.

insert_audio_itemA

Insert an audio file as a media item on a track.

Args: track_index: Index of the track file_path: Path to the audio file start_time: Start position in seconds (optional if start_measure is provided) start_measure: Start position as "measure:beat,fraction" (optional if start_time is provided)

duplicate_itemA

Duplicate an existing item on a track.

Item Identification - Accepts BOTH types:

  • track_pos_idx (integer): Simple index like 0, 1, 2

  • direct_item_id (string): Internal ID like "MediaItem*0x..."

Args: track_index: Index of the track item_id: EITHER integer track_pos_idx OR string direct_item_id new_time: New position in seconds (optional) new_measure: New position as "measure:beat,fraction" (optional)

get_item_propertiesB

Get properties of a media item.

Item Identification - Accepts BOTH types:

  • track_pos_idx (integer): Simple index like 0, 1, 2

  • direct_item_id (string): Internal ID like "MediaItem*0x..."

Args: track_index: Index of the track item_id: EITHER integer track_pos_idx OR string direct_item_id

set_item_positionA

Set the position of a media item.

Item Identification - Accepts BOTH types:

  • track_pos_idx (integer): Simple index like 0, 1, 2

  • direct_item_id (string): Internal ID like "MediaItem*0x..."

Args: track_index: Index of the track item_id: EITHER integer track_pos_idx OR string direct_item_id position_time: New position in seconds (optional if position_measure is provided) position_measure: New position as "measure:beat,fraction" (optional if position_time is provided) where fraction is milliseconds (e.g., "1:1,500" = measure 1, beat 1, half beat)

set_item_lengthA

Set the length of a media item.

Item Identification - Accepts BOTH types:

  • track_pos_idx (integer): Simple index like 0, 1, 2

  • direct_item_id (string): Internal ID like "MediaItem*0x..."

Args: track_index: Index of the track item_id: EITHER integer track_pos_idx OR string direct_item_id length_time: Length in seconds from start of item (optional if length_measure is provided) length_measure: Length as "measure:beat,fraction" from start of item(optional if length_time is provided)

delete_itemA

Delete a media item from a track.

Item Identification - Accepts BOTH types:

  • track_pos_idx (integer): Simple index like 0, 1, 2

  • direct_item_id (string): Internal ID like "MediaItem*0x..."

Args: track_index: Index of the track item: EITHER integer track_pos_idx OR string direct_item_id

get_items_in_time_rangeA

Get all items on a track within a time range.

Returns items with BOTH identification methods for each item:

  1. track_pos_idx (integer):

    • Simple sequential index: 0, 1, 2, 3...

    • Easy to use in loops and quick operations

    • Changes if items before it are deleted

  2. direct_item_id (string):

    • REAPER's permanent internal ID like "MediaItem*0x..."

    • Unique stable reference that never changes

    • Use this for reliable long-term item tracking

You can use either one in subsequent operations like add_midi_note.

Args: track_index: 0-based track index (0 = first track, 1 = second, etc.) start_time: Start position in seconds (optional if start_measure is provided) end_time: End position in seconds (optional if end_measure is provided) start_measure: Start position as "measure:beat,fraction" (optional if start_time is provided) end_measure: End position as "measure:beat,fraction" (optional if end_time is provided)

Returns: Each item includes: - track_pos_idx: Integer position index (0, 1, 2...) - direct_item_id: String internal ID ("MediaItem*...") - position: Item start time in seconds - length: Item duration in seconds

get_selected_itemsA

Get all selected media items in the project with their properties.

Returns: Dict containing status and list of selected items with their properties: - track_index: Index of the track containing the item - item_index: Index of the item in its track - position: Start time in seconds - length: Length in seconds from the start of item - is_midi: Whether the item is a MIDI item - name: Item name if available

test_connectionA

Test connection to Reaper.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wegitor/reaper-reapy-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server