Skip to main content
Glama
test_project_operations.py3.44 kB
import pytest import pytest_asyncio from .test_utils import ( ensure_clean_project, assert_response_contains, assert_response_success ) @pytest.mark.asyncio async def test_project_info(reaper_mcp_client): """Test project information retrieval""" # Ensure clean project state await ensure_clean_project(reaper_mcp_client) # Get project name result = await reaper_mcp_client.call_tool( "get_project_name", {} ) print(f"Get project name result: {result}") assert_response_contains(result, "project") # Get project path result = await reaper_mcp_client.call_tool( "get_project_path", {} ) print(f"Get project path result: {result}") # Path should contain either 'path' or a path separator assert "path" in result.content[0].text.lower() or "/" in result.content[0].text or "\\" in result.content[0].text @pytest.mark.asyncio async def test_cursor_operations(reaper_mcp_client): """Test edit cursor operations""" # Ensure clean project state await ensure_clean_project(reaper_mcp_client) # Set edit cursor position result = await reaper_mcp_client.call_tool( "set_edit_cursor_position", {"time": 10.0} ) print(f"Set cursor position result: {result}") assert_response_success(result) # Get cursor position result = await reaper_mcp_client.call_tool( "get_cursor_position", {} ) print(f"Get cursor position result: {result}") assert_response_contains(result, "10.0") @pytest.mark.asyncio async def test_undo_operations(reaper_mcp_client): """Test undo block operations""" # Ensure clean project state await ensure_clean_project(reaper_mcp_client) # Begin undo block result = await reaper_mcp_client.call_tool( "undo_begin_block2", {"project_index": 0} ) print(f"Begin undo block result: {result}") assert_response_success(result) # Create a track (as an undoable action) await reaper_mcp_client.call_tool( "insert_track", {"index": 0, "use_defaults": True} ) # End undo block result = await reaper_mcp_client.call_tool( "undo_end_block2", {"desc": "Test Undo Block", "extra_flags": 0} ) print(f"End undo block result: {result}") assert_response_success(result) @pytest.mark.asyncio async def test_update_operations(reaper_mcp_client): """Test arrange and timeline update operations""" # Ensure clean project state await ensure_clean_project(reaper_mcp_client) # Update arrange result = await reaper_mcp_client.call_tool( "update_arrange", {} ) print(f"Update arrange result: {result}") assert_response_success(result) # Update timeline result = await reaper_mcp_client.call_tool( "update_timeline", {} ) print(f"Update timeline result: {result}") assert_response_success(result) @pytest.mark.asyncio async def test_execute_action(reaper_mcp_client): """Test executing REAPER actions""" # Ensure clean project state await ensure_clean_project(reaper_mcp_client) # Execute action (40001 = insert new track) result = await reaper_mcp_client.call_tool( "execute_action", {"command_id": 40001} ) print(f"Execute action result: {result}") assert_response_success(result)

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

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