{"id":50535180,"url":"https://github.com/TwelveTake-Studios/reaper-mcp","last_synced_at":"2026-06-27T21:00:55.931Z","repository":{"id":328196756,"uuid":"1114543213","full_name":"TwelveTake-Studios/reaper-mcp","owner":"TwelveTake-Studios","description":"MCP server to control REAPER DAW with AI — 158 tools for mixing, mastering, MIDI composition, and full music production.","archived":false,"fork":false,"pushed_at":"2026-06-22T16:44:29.000Z","size":216,"stargazers_count":18,"open_issues_count":0,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-06-22T18:24:20.217Z","etag":null,"topics":["ai","claude","daw","mastering","mcp","midi","mixing","model-context-protocol","music-production","reaper"],"latest_commit_sha":null,"homepage":"https://twelvetake.com","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TwelveTake-Studios.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"buy_me_a_coffee":"twelvetake","ko_fi":"twelvetake"}},"created_at":"2025-12-11T14:22:29.000Z","updated_at":"2026-06-22T16:44:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/TwelveTake-Studios/reaper-mcp","commit_stats":null,"previous_names":["twelvetake-studios/reaper-mcp"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/TwelveTake-Studios/reaper-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwelveTake-Studios%2Freaper-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwelveTake-Studios%2Freaper-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwelveTake-Studios%2Freaper-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwelveTake-Studios%2Freaper-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TwelveTake-Studios","download_url":"https://codeload.github.com/TwelveTake-Studios/reaper-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TwelveTake-Studios%2Freaper-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34867616,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-27T02:00:06.362Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","claude","daw","mastering","mcp","midi","mixing","model-context-protocol","music-production","reaper"],"created_at":"2026-06-03T16:00:32.435Z","updated_at":"2026-06-27T21:00:55.915Z","avatar_url":"https://github.com/TwelveTake-Studios.png","language":"Lua","funding_links":["https://buymeacoffee.com/twelvetake","https://ko-fi.com/twelvetake"],"categories":["Media Processing","📦 Other"],"sub_categories":["Audio \u0026 Music"],"readme":"# TwelveTake REAPER MCP\n\nA [TwelveTake Studios](https://twelvetake.com) project.\n\n[![Tools](https://img.shields.io/badge/tools-163-blue)](https://github.com/TwelveTake-Studios/reaper-mcp)\n[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-support-yellow)](https://buymeacoffee.com/twelvetake)\n[![Ko-fi](https://img.shields.io/badge/Ko--fi-support-ff5e5b)](https://ko-fi.com/twelvetake)\n\nA comprehensive Model Context Protocol (MCP) server that enables AI assistants to control REAPER DAW for mixing, mastering, MIDI composition, and full music production workflows.\n\nBuilt by a working producer with 7+ albums released. These aren't theoretical tools—they're battle-tested in real sessions.\n\n**Version:** 1.5.0\n\n## Why This Server\n\n### Workflow Automation, Not Just API Wrappers\n\nMost MCP servers just wrap REAPER's API and call it a day. This one includes **production workflow helpers** that handle multi-step operations in a single call:\n\n| Tool | What it does for you |\n|------|---------------------|\n| `setup_sidechain_compression()` | Creates send, routes to channels 3-4, configures ReaComp's detector input — complete sidechain setup in one call |\n| `add_mastering_chain()` | Adds ReaEQ → ReaComp → ReaEQ → ReaLimit to master track with proper signal flow |\n| `add_parallel_compression()` | Creates a bus track, sets up the send, adds compressor — NY-style compression ready to blend |\n| `create_bus()` | Creates a submix track and routes your specified tracks to it |\n| `get_project_summary()` | Returns track count, all track names/volumes/pans/FX, markers, regions, tempo, time signature — everything your AI needs in one call |\n\n### Zero Configuration\n\n- **File-based communication** works immediately — no network setup, no ports to configure\n- **Stock REAPER Lua only** — the bridge script has no dependencies, nothing extra to install in REAPER\n- Copy the script, run it, connect your AI assistant\n\n### 163 Tools Covering Real Production Needs\n\n- **Full FX control** — add/remove plugins, get/set any parameter by index, manage presets, bypass\n- **FX parameter automation** — automate any plugin knob (flanger depth, filter cutoff, etc.)\n- **Complete routing** — sends, receives, sidechain routing to specific channel pairs\n- **Automation** — create envelopes, add/edit points, set automation modes\n- **MIDI** — create items, add notes individually or in batches, edit velocities\n- **Audio items** — import, split, duplicate, fade, position, mute\n- **Markers \u0026 regions** — create, edit, navigate, render by region\n\n## Requirements\n\n- REAPER (any recent version)\n- Python 3.8+ (for the MCP server)\n- An MCP-compatible AI assistant\n\n## Installation\n\n### 1. Install the Bridge Script in REAPER\n\nThe bridge script runs inside REAPER and handles communication with the MCP server.\n\n1. Copy `reaper_mcp_bridge.lua` to your REAPER Scripts folder:\n   - Windows: `%APPDATA%\\REAPER\\Scripts\\`\n   - macOS: `~/Library/Application Support/REAPER/Scripts/`\n   - Linux: `~/.config/REAPER/Scripts/`\n2. In REAPER: **Actions → Show action list → Load ReaScript**\n3. Select `reaper_mcp_bridge.lua` and click **Run**\n\nYou should see \"REAPER MCP Bridge started\" in REAPER's console.\n\n### 2. Install the MCP Server\n\n```bash\npip install -r requirements.txt\n```\n\nOr install dependencies directly:\n```bash\npip install mcp httpx\n```\n\n#### Alternative: Nix flake (optional)\n\nIf you use [Nix](https://nixos.org/), the repo ships a flake-based dev shell that provides\nPython 3.12 and creates/activates a virtualenv for you:\n\n```bash\n# Enter the dev shell manually\nnix develop\n\n# Or, with direnv, auto-activate on cd:\ndirenv allow\n```\n\nThen install the dependencies as usual:\n```bash\npip install -r requirements.txt\n```\n\nThis pins the Python version and keeps dependencies isolated from your system.\n\n\u003e **Note:** the `x86_64-linux` dev shell is tested and working. The macOS (Darwin) shells are\n\u003e provided but have **not** been tested — confirmation from a macOS user is welcome.\n\n### 3. Configure Your AI Assistant\n\nAdd to your MCP client's configuration (e.g., `.mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"reaper\": {\n      \"command\": \"python\",\n      \"args\": [\"path/to/reaper_mcp_server.py\"]\n    }\n  }\n}\n```\n\n### 4. Verify Connection\n\n```bash\npython test_connection.py\n```\n\n## Communication Modes\n\nThe **file-based bridge is the supported path** — it is reliable and needs no extra setup.\nHTTP mode is **deprecated** (see below).\n\n### File-Based (Default, Recommended)\n\nUses JSON files for communication. More reliable, no network configuration needed.\nThis is the only actively maintained path; all tools are guaranteed to work here.\n\n```\nMCP Server                    REAPER Bridge\n    │                              │\n    ├── writes request_N.json ────►│\n    │                              ├── processes request\n    │◄── reads response_N.json ────┤\n```\n\n**Bridge directory:** `%APPDATA%\\REAPER\\Scripts\\mcp_bridge_data`\n\n### HTTP Mode (Deprecated)\n\n\u003e **Deprecated as of v1.2.1.** The HTTP bridges (`reaper_web_server.lua` / `reaper_web_server.py`)\n\u003e are kept for existing users but are no longer maintained and will not receive new tools.\n\u003e They may be removed in a future major release (v2.0). Use the file bridge instead.\n\nUses HTTP requests on localhost. Requires additional setup:\n- **Lua HTTP bridge**: Requires LuaSocket (install via ReaPack → \"sockmonkey\")\n- **Python HTTP bridge**: Requires Python enabled in REAPER preferences\n\n```bash\n# Set environment variable to use HTTP mode\nREAPER_COMM_MODE=http python reaper_mcp_server.py\n```\n\n**Default port:** 9000\n\n## Quick Start Examples\n\n### Basic Track Operations\n```\n\"How many tracks are in my project?\"\n\"Create a new track called 'Vocals'\"\n\"Set track 0 volume to -6dB\"\n\"Mute track 2\"\n\"Solo the drums track\"\n```\n\n### Mixing\n```\n\"Add ReaComp to the bass track\"\n\"Set up sidechain compression from the kick to the bass\"\n\"Create a drum bus and route tracks 0-3 to it\"\n\"Add a mastering chain to the master track\"\n```\n\n### FX and Parameters\n```\n\"What plugins are on track 0?\"\n\"Get the parameters for the compressor on track 1\"\n\"Set the threshold to -20dB\"\n\"Bypass the EQ on the vocal track\"\n```\n\n### MIDI Composition\n```\n\"Create a 4-bar MIDI item on track 0\"\n\"Add a C major chord at the start\"\n\"Get all the notes in the MIDI item\"\n\"Set the velocity of note 0 to 100\"\n```\n\n### Transport and Navigation\n```\n\"Play the project\"\n\"Stop playback\"\n\"Set the cursor to 30 seconds\"\n\"Add a marker called 'Chorus' at the current position\"\n```\n\n### Project Management\n```\n\"What's the project tempo?\"\n\"Set the tempo to 120 BPM\"\n\"Save the project\"\n\"Render to D:/Output/mix.wav\"\n```\n\n## Tool Reference\n\n### Track Operations (23 tools)\n\n| Tool | Description |\n|------|-------------|\n| `get_track_count()` | Get total number of tracks (excluding master) |\n| `get_track(index)` | Get track info (name, volume, pan, mute, solo) |\n| `get_all_tracks()` | Get info for all tracks |\n| `get_master_track()` | Get master track info |\n| `insert_track(index, name)` | Create a new track |\n| `delete_track(index)` | Delete a track |\n| `set_track_name(index, name)` | Rename a track |\n| `set_track_volume(index, db)` | Set volume in dB |\n| `set_track_pan(index, pan)` | Set pan (-1 to 1) |\n| `set_track_mute(index, mute)` | Mute/unmute track |\n| `set_track_solo(index, solo)` | Solo/unsolo track |\n| `set_track_phase(index, invert)` | Invert phase |\n| `set_track_width(index, width)` | Set stereo width (0-2) |\n| `set_track_color(index, r, g, b)` | Set track color |\n| `get_track_peak(index, channel)` | Get current peak level (dB) |\n| `get_track_peak_hold(index, channel)` | Get held peak since last reset (dB) |\n| `clear_all_peak_indicators()` | Reset peak hold on all tracks |\n| `get_track_master_send(index)` | Get master/parent send state |\n| `set_track_master_send(index, enabled)` | Enable/disable master send |\n| `set_track_as_folder(index, depth)` | Set as folder parent/child |\n| `arm_track(index, arm)` | Arm for recording |\n| `set_track_input(index, input)` | Set record input |\n| `set_track_monitor(index, mode)` | Set monitor mode |\n\n### FX Operations (16 tools)\n\n| Tool | Description |\n|------|-------------|\n| `track_fx_get_count(index)` | Count FX on track |\n| `track_fx_get_list(index)` | List all FX with details |\n| `track_fx_add_by_name(index, name, position?)` | Add FX plugin (optionally at position) |\n| `track_fx_move(index, fx_index, new_position)` | Reorder FX in the chain |\n| `track_fx_delete(index, fx_index)` | Remove FX |\n| `track_fx_get_name(index, fx_index)` | Get FX name |\n| `track_fx_get_enabled(index, fx_index)` | Check if enabled |\n| `track_fx_set_enabled(index, fx_index, enabled)` | Enable/bypass FX |\n| `track_fx_get_num_params(index, fx_index)` | Count parameters |\n| `track_fx_get_param_name(index, fx_index, param)` | Get parameter name |\n| `track_fx_get_param(index, fx_index, param)` | Get parameter value |\n| `track_fx_set_param(index, fx_index, param, value)` | Set parameter value |\n| `get_fx_presets(index, fx_index)` | List available presets |\n| `get_fx_preset(index, fx_index)` | Get current preset |\n| `set_fx_preset(index, fx_index, name)` | Load preset |\n| `save_fx_preset(index, fx_index, name)` | Save current settings as preset |\n\n### ReaEQ Operations (5 tools)\n\nDedicated ReaEQ band control using REAPER's EQ-specific API, which handles ReaEQ's\nnon-linear parameter curves (dB gain, log frequency, log Q) correctly.\n\n| Tool | Description |\n|------|-------------|\n| `find_eq(track, instantiate?)` | Find ReaEQ on a track (optionally add it) |\n| `get_eq_bands(track, fx)` | Read all ReaEQ bands with human-readable values |\n| `set_eq_band(track, fx, bandtype, bandidx, paramtype, value, is_normalized?)` | Set a band parameter (Hz, dB, or Q) |\n| `get_eq_band_enabled(track, fx, bandtype, bandidx?)` | Check whether a band is enabled |\n| `set_eq_band_enabled(track, fx, bandtype, bandidx?, enabled?)` | Enable/disable a band |\n\n### Take FX Operations (11 tools)\n\nPer-take (per-item) FX, mirroring the track FX tools. Every take is addressed by\n`(track_index, item_index, take_index)`.\n\n| Tool | Description |\n|------|-------------|\n| `take_fx_get_count(track, item, take)` | Count FX on a take |\n| `take_fx_get_list(track, item, take)` | List all take FX with details |\n| `take_fx_add_by_name(track, item, take, name)` | Add FX plugin to a take |\n| `take_fx_delete(track, item, take, fx)` | Remove FX from a take |\n| `take_fx_get_name(track, item, take, fx)` | Get take FX name |\n| `take_fx_get_enabled(track, item, take, fx)` | Check if enabled |\n| `take_fx_set_enabled(track, item, take, fx, enabled)` | Enable/bypass take FX |\n| `take_fx_get_num_params(track, item, take, fx)` | Count parameters |\n| `take_fx_get_param_name(track, item, take, fx, param)` | Get parameter name |\n| `take_fx_get_param(track, item, take, fx, param)` | Get parameter value |\n| `take_fx_set_param(track, item, take, fx, param, value)` | Set parameter value |\n\n### Take Management \u0026 Comping (7 tools)\n\nMulti-take workflows: list/switch/delete takes, explode/crop, REAPER 7 fixed-lane comping.\n\n| Tool | Description |\n|------|-------------|\n| `get_takes(track, item)` | List all takes (name + active flag) |\n| `get_active_take(track, item)` | Get the active take index |\n| `set_active_take(track, item, take)` | Switch which take plays |\n| `explode_takes(track, item)` | Explode takes to overlapping items (in place) |\n| `crop_to_active_take(track, item)` | Keep only the active take |\n| `delete_take(track, item, take)` | Delete a specific take |\n| `select_comp_lane(track, lane)` | Play one fixed lane exclusively (lane comping) |\n\n### Routing (9 tools)\n\n| Tool | Description |\n|------|-------------|\n| `create_send(src, dest)` | Create send between tracks |\n| `delete_send(index, send_index)` | Remove a send |\n| `set_send_volume(index, send_index, db)` | Set send level |\n| `get_track_num_sends(index)` | Count sends from track |\n| `set_send_dest_channels(index, send_index, chan)` | Route to specific channels |\n| `set_send_source_channels(index, send_index, chan)` | Set source channels |\n| `setup_sidechain_send(src, dest, db)` | Create sidechain send |\n| `configure_reacomp_sidechain(index, fx_index, use)` | Configure ReaComp sidechain |\n| `setup_sidechain_compression(trigger, target, fx, db)` | Complete sidechain setup |\n\n### Transport (10 tools)\n\n| Tool | Description |\n|------|-------------|\n| `play()` | Start playback |\n| `stop()` | Stop playback |\n| `pause()` | Pause playback |\n| `record()` | Start recording |\n| `get_play_state()` | Get current state (playing/paused/recording) |\n| `get_cursor_position()` | Get edit cursor position (seconds) |\n| `set_cursor_position(seconds)` | Move edit cursor |\n| `get_play_position()` | Get playback position (seconds) |\n| `toggle_repeat()` | Toggle loop mode |\n| `get_repeat_state()` | Check if looping |\n\n### Project (15 tools)\n\n| Tool | Description |\n|------|-------------|\n| `get_project_summary()` | Get comprehensive project state in one call |\n| `save_project()` | Save current project |\n| `create_project(name)` | Create new project |\n| `open_project(path)` | Open project file |\n| `get_project_path()` | Get project directory |\n| `get_project_name()` | Get project filename |\n| `get_project_length()` | Get project length (seconds) |\n| `get_tempo()` | Get project tempo (BPM) |\n| `set_tempo(bpm)` | Set project tempo |\n| `get_time_signature()` | Get time signature |\n| `set_time_signature(num, denom)` | Set time signature |\n| `render_project(path, start, end, tail)` | Render to audio file |\n| `render_region(index, path)` | Render specific region |\n| `zoom_to_selection()` | Zoom to time selection |\n| `zoom_to_project()` | Zoom to show entire project |\n\n### MIDI Operations (8 tools)\n\n| Tool | Description |\n|------|-------------|\n| `create_midi_item(track, pos, length)` | Create empty MIDI item |\n| `get_midi_item(track, item)` | Get MIDI item info |\n| `add_midi_note(track, item, pitch, vel, start_beat, length_beats, chan)` | Add single note (beats) |\n| `add_midi_notes_batch(track, item, notes)` | Add multiple notes |\n| `get_midi_notes(track, item)` | Get all notes |\n| `delete_midi_note(track, item, note)` | Delete a note |\n| `clear_midi_item(track, item)` | Delete all notes |\n| `set_midi_note_velocity(track, item, note, vel)` | Change note velocity |\n\n### Audio Items (17 tools)\n\n| Tool | Description |\n|------|-------------|\n| `insert_audio_file(track, path, pos)` | Import audio file |\n| `get_track_items(track)` | List all items on track |\n| `get_item_info(track, item)` | Get item details |\n| `set_item_position(track, item, pos)` | Move item |\n| `set_item_length(track, item, length)` | Change item length |\n| `delete_item(track, item)` | Delete item |\n| `duplicate_item(track, item)` | Duplicate item |\n| `split_item(track, item, pos)` | Split item at position |\n| `set_item_mute(track, item, mute)` | Mute/unmute item |\n| `set_item_volume(track, item, db)` | Set item volume |\n| `set_item_fade_in(track, item, length)` | Set fade-in |\n| `set_item_fade_out(track, item, length)` | Set fade-out |\n| `select_all_items()` | Select all items |\n| `unselect_all_items()` | Deselect all items |\n| `get_selected_items()` | Get selected items |\n| `copy_selected_items()` | Copy to clipboard |\n| `paste_items()` | Paste from clipboard |\n\n### Markers \u0026 Regions (8 tools)\n\n| Tool | Description |\n|------|-------------|\n| `add_marker(pos, name, color)` | Add marker |\n| `add_region(start, end, name, color)` | Add region |\n| `get_markers()` | Get all markers |\n| `get_regions()` | Get all regions |\n| `delete_marker(index)` | Delete marker |\n| `delete_region(index)` | Delete region |\n| `go_to_marker(index)` | Jump to marker |\n| `go_to_region(index)` | Jump to region start |\n\n### Automation (8 tools)\n\n| Tool | Description |\n|------|-------------|\n| `get_track_envelope(track, name)` | Get envelope by name |\n| `get_envelope_point_count(track, name)` | Count envelope points |\n| `add_envelope_point(track, name, time, value, shape)` | Add automation point |\n| `get_envelope_points(track, name)` | Get all points |\n| `delete_envelope_point(track, name, index)` | Delete point |\n| `clear_envelope(track, name)` | Clear all points |\n| `set_track_automation_mode(track, mode)` | Set automation mode |\n| `arm_track_envelope(track, name, arm)` | Arm envelope for recording |\n\n### FX Parameter Automation (5 tools)\n\n| Tool | Description |\n|------|-------------|\n| `get_fx_envelope(track, fx, param)` | Get/create envelope for any FX parameter |\n| `add_fx_envelope_point(track, fx, param, time, value, shape)` | Add automation point to FX parameter |\n| `get_fx_envelope_points(track, fx, param)` | Get all points from FX envelope |\n| `delete_fx_envelope_point(track, fx, param, point)` | Delete point from FX envelope |\n| `clear_fx_envelope(track, fx, param)` | Clear all points from FX envelope |\n\n### Selection \u0026 Editing (11 tools)\n\n| Tool | Description |\n|------|-------------|\n| `undo()` | Undo last action |\n| `redo()` | Redo last undone action |\n| `get_undo_state()` | Get undo/redo state |\n| `select_track(index, exclusive)` | Select a track |\n| `select_all_tracks()` | Select all tracks |\n| `unselect_all_tracks()` | Deselect all tracks |\n| `get_selected_tracks()` | Get selected track indices |\n| `set_time_selection(start, end)` | Set time selection |\n| `get_time_selection()` | Get time selection |\n| `clear_time_selection()` | Clear time selection |\n| `delete_selected_items()` | Delete selected items |\n\n### Mixing Helpers (6 tools)\n\n| Tool | Description |\n|------|-------------|\n| `add_mastering_chain()` | Add EQ→Comp→EQ→Limiter to master |\n| `add_parallel_compression(track, db)` | Set up NY compression |\n| `create_bus(name, tracks)` | Create submix bus |\n| `add_eq(track)` | Add ReaEQ |\n| `add_compressor(track)` | Add ReaComp |\n| `add_limiter(track)` | Add ReaLimit |\n\n### Advanced (4 tools)\n\n| Tool | Description |\n|------|-------------|\n| `run_action(action_id)` | Run REAPER action by ID |\n| `run_action_by_name(name)` | Run action by name |\n| `get_track_fx_chunk(track, fx)` | Get raw FX state data |\n| `cut_selected_items()` | Cut items to clipboard |\n\n## Track Indexing\n\n- **Regular tracks:** 0-based index (first track = 0)\n- **Master track:** Use index `-1`\n\n```\n\"Set the master track volume to -3dB\"  → track_index = -1\n\"Mute track 1\"                          → track_index = 1 (second track)\n```\n\n## Common Plugin Names\n\nUse these names with `track_fx_add_by_name()`:\n\n| Plugin | Name |\n|--------|------|\n| EQ | `ReaEQ` |\n| Compressor | `ReaComp` |\n| Limiter | `ReaLimit` |\n| Gate | `ReaGate` |\n| Delay | `ReaDelay` |\n| Reverb | `ReaVerbate` or `ReaVerb` |\n\nThird-party plugins use their full name as shown in REAPER's FX browser.\n\n## Troubleshooting\n\n### \"Cannot connect to REAPER\"\n1. Ensure REAPER is running\n2. Ensure the bridge script is running (check REAPER's console)\n3. For file mode: verify the bridge directory exists\n4. For HTTP mode: check port 9000 isn't blocked\n\n### \"Track not found\"\n- Track indices are 0-based\n- Use `-1` for master track\n- Check track count with `get_track_count()`\n\n### Bridge script won't load\n- **Lua:** Ensure LuaSocket is installed (ReaPack → \"sockmonkey\")\n- **Python:** Enable Python in REAPER preferences\n\n### Slow response\n- File-based mode has ~50ms latency per call\n- Batch operations when possible (e.g., `add_midi_notes_batch`)\n\n## Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `REAPER_COMM_MODE` | `file` | Communication mode (`file` or `http`) |\n| `REAPER_BRIDGE_DIR` | `%APPDATA%\\REAPER\\Scripts\\mcp_bridge_data` | File bridge directory |\n| `REAPER_HOST` | `localhost` | HTTP bridge host |\n| `REAPER_PORT` | `9000` | HTTP bridge port |\n\n## License\n\nMIT License - see [LICENSE](LICENSE)\n\n---\n\n**TwelveTake Studios LLC**\nWebsite: [twelvetake.com](https://twelvetake.com)\nContact: contact@twelvetake.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTwelveTake-Studios%2Freaper-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTwelveTake-Studios%2Freaper-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTwelveTake-Studios%2Freaper-mcp/lists"}