Skip to main content
Glama

REAPER MCP Server

by itsuzef
test_mcp_tools.py3.27 kB
#!/usr/bin/env python3 """ Test script for the MCP tools using our OSC-based implementation This script demonstrates how to use the MCP tools to create a simple project """ import sys import time import json import subprocess import os def call_mcp_tool(tool_name, **params): """Call an MCP tool and return the result""" # Create the MCP request request = { "jsonrpc": "2.0", "id": 1, "method": "callTool", "params": { "name": tool_name, "parameters": params } } # Call the MCP server cmd = ["/Users/youssefhemimy/Documents/reaper-mcp/start_osc_mcp.sh"] proc = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) # Send the request request_json = json.dumps(request) + "\n" stdout, stderr = proc.communicate(input=request_json) # Parse the response try: response = json.loads(stdout.strip()) if "result" in response: return response["result"] else: print(f"Error: {response.get('error', 'Unknown error')}") return None except json.JSONDecodeError: print(f"Error decoding response: {stdout}") print(f"Stderr: {stderr}") return None def main(): print("Testing MCP tools with OSC-based implementation...") # Test 1: Create a new project print("\nTest 1: Creating a new project...") result = call_mcp_tool("mcp2_create_project", name="MCP Test Project") print(f"Result: {result}") # Wait for REAPER to process time.sleep(2) # Test 2: Create tracks print("\nTest 2: Creating tracks...") track_names = ["Drums", "Bass", "Guitar", "Vocals"] track_indices = [] for name in track_names: result = call_mcp_tool("mcp2_create_track", name=name) print(f"Created track '{name}': {result}") if result and result.get("success"): track_indices.append(result.get("track_index", 0)) time.sleep(1) # Test 3: List tracks print("\nTest 3: Listing tracks...") result = call_mcp_tool("mcp2_list_tracks") print(f"Tracks: {result}") # Test 4: Add MIDI notes print("\nTest 4: Adding MIDI notes...") if track_indices: for i, track_idx in enumerate(track_indices): # Add a MIDI note to each track note = 60 + i * 4 # C4, E4, G4, C5 result = call_mcp_tool("mcp2_add_midi_note", track_index=track_idx, note=str(note), start_time="0.0", duration="1.0", velocity="100") print(f"Added note to track {track_idx}: {result}") time.sleep(1) # Test 5: Get project info print("\nTest 5: Getting project info...") result = call_mcp_tool("mcp2_get_project_info") print(f"Project info: {result}") print("\nTests completed. Check REAPER to see the results.") if __name__ == "__main__": main()

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/itsuzef/reaper-mcp'

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