The Scythe MCP REAPER server enables AI-powered control and music composition within REAPER DAW through the Model Context Protocol, allowing programmatic interaction via OSC, MIDI, Lua scripting, and music theory tools.
Transport & Playback Control: Start/stop playback and recording, set project tempo (20-999 BPM), and navigate to specific timeline positions in seconds
Track Management: Create named tracks, adjust volume (0.0-1.0) and pan (-1.0 to 1.0), mute/solo/arm tracks for recording, and select tracks by number
MIDI Composition: Create MIDI items on tracks with specified position and length (in beats), add MIDI notes with precise control over pitch (0-127), timing, duration, and velocity
Advanced REAPER Control: Execute arbitrary Lua code for full ReaScript API access and trigger built-in REAPER actions (save, undo, redo, zoom, etc.)
Music Theory Integration: Access scales, chords, progressions, and rhythm patterns with built-in generators for drums, basslines, and melodies
Session Monitoring: Retrieve REAPER session information to confirm connectivity and status
File-Based Bridge: Uses a polling system where Python writes commands to a file and a Lua script in REAPER executes them, bypassing OSC limitations for complex operations
Enables execution of Lua scripts in REAPER DAW via ReaScript, allowing full programmatic control of the digital audio workstation through the execute_lua tool.
Provides tools for creating MIDI tracks, items, and notes programmatically in REAPER, including generation of drum patterns, basslines, melodies, and chord progressions with music theory support.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Scythe MCP REAPERcreate a lo-fi beat at 85 BPM with jazzy chords and dreamy melody"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Scythe MCP - REAPER Integration
AI-powered music composition and control for REAPER DAW via Model Context Protocol.
Features
OSC Control: Transport, tempo, volume, pan, mute/solo
MIDI Generation: Create tracks, items, and notes programmatically
execute_lua: Full REAPER control via ReaScript
Music Theory: Scales, chords, progressions, rhythm patterns
Generators: Drums, basslines, and melodies
Quick Start
1. Install Python dependencies
2. Configure REAPER OSC
Preferences > Control/OSC/Web > Add
Select OSC (Open Sound Control)
Configure:
Mode: Local port
Port: 8000
Local IP: 127.0.0.1
3. Load the Lua script
Copy
scythe_mcp/reascript/scythe_poller.luato REAPER Scripts folderActions > Load ReaScript > Select the file
Run the script (it will poll for commands in the background)
4. Add to MCP config
Add to your MCP client configuration (e.g., Claude Desktop, Cursor, etc.):
Available Tools
Tool | Description |
| Transport control |
| Change project tempo |
| Create new track with name |
| Create MIDI item on track |
| Insert MIDI notes |
| Set volume (0-1) |
| Mute/solo toggle |
| Run any Lua code in REAPER |
| Trigger REAPER action by ID |
Project Structure
Bridge Architecture
The system uses a file-based command bridge between Python and REAPER:
Python writes commands to
%TEMP%/scythe_mcp/command.jsonLua script polls this file every 100ms
Lua executes the command and writes result to
response.jsonPython reads the response
This approach bypasses REAPER's limited OSC capabilities for complex operations like MIDI note insertion.
Known Limitations
Melody generator produces harmonically correct but not necessarily musical results
PPQ timing assumes 960 ticks per quarter note (standard for most REAPER projects)
The Lua polling script must be running in REAPER for commands to execute
Example Usage
License
MIT