jeffreygnatek/protools-sdk-mcp
If you are the rightful owner of protools-sdk-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
This project demonstrates the use of the Avid Pro Tools Scripting SDK (PTSL SDK) to automate and control Avid Pro Tools through a C++ application and a gRPC-based MCP server.
PTSL SDK + MCP Server Example
This project demonstrates how to use the Avid Pro Tools Scripting SDK (PTSL SDK) to automate and control Avid Pro Tools via a C++ application and a gRPC-based MCP server.
Overview
- PTSL SDK: Provides a C++ API for scripting and controlling Avid Pro Tools.
- MCP Server: A gRPC server that exposes Pro Tools automation commands over the network, implemented using the PTSL SDK.
- Example Client: A simple C++ app that connects to the MCP server and registers a connection with Pro Tools.
Project Structure
/ (project root)
├── app/ # Application code (main.cpp, mcp_server.cpp, CMakeLists.txt)
├── sdk/ # PTSL SDK code (as provided by Avid)
├── README.md # This file
├── CMakeLists.txt # Top-level build file
└── ...
Prerequisites
- CMake (version 3.15+ recommended)
- Avid PTSL SDK (already included in
sdk/) - Avid Pro Tools (running locally for PTSL communication)
- gRPC and Protobuf (for building the MCP server)
Build and Run Instructions
1. Install Dependencies
- CMake:
Install via your package manager (e.g.,brew install cmakeon macOS,apt install cmakeon Ubuntu, or from cmake.org). - gRPC and Protobuf:
Install via your package manager or follow the gRPC installation guide.
2. Configure the Project
mkdir build && cd build
cmake ..
3. Build the Apps
make
- On Windows, use your preferred generator (e.g., Visual Studio) and build from the IDE or with
cmake --build ..
4. Run the MCP Server
From the build directory:
./app/mcp_server
5. Run the Example Client
From the build directory:
./app/ptsl_app
6. Troubleshooting
- Pro Tools not running:
Make sure Avid Pro Tools is running locally before using the PTSL features.
PTSL SDK Command Implementation Checklist
Below is a list of all available PTSL SDK commands. Use the checkboxes to track which commands have been implemented in the MCP server.
| Command Name | Implemented? |
|---|---|
| CreateSession | [x] |
| OpenSession | [x] |
| Import | [x] |
| GetTrackList | [x] |
| SelectAllClipsOnTrack | [x] |
| ExtendSelectionToTargetTracks | [x] |
| TrimToSelection | [x] |
| CreateFadesBasedOnPreset | [x] |
| RenameTargetTrack | [x] |
| ConsolidateClip | [x] |
| ExportClipsAsFiles | [x] |
| ExportSelectedTracksAsAAFOMF | [x] |
| GetTaskStatus | [x] |
| HostReadyCheck | [x] |
| RefreshTargetAudioFiles | [x] |
| RefreshAllModifiedAudioFiles | [x] |
| GetFileLocation | [x] |
| CloseSession | [x] |
| SaveSession | [x] |
| SaveSessionAs | [x] |
| Cut | [x] |
| Copy | [x] |
| Paste | [x] |
| Clear | [x] |
| CutSpecial | [x] |
| CopySpecial | [x] |
| ClearSpecial | [x] |
| PasteSpecial | [x] |
| ExportMix | [x] |
| Spot | [x] |
| ExportSessionInfoAsText | [x] |
| GetDynamicProperties | [x] |
| SetDynamicProperties | [x] |
| GetEditSelection | [x] |
| SetEditSelection | [x] |
| GetTimelineSelection | [x] |
| SetTimelineSelection | [x] |
| GetTransportState | [x] |
| SetTransportState | [x] |
| GetLoopPlaybackState | [x] |
| SetLoopPlaybackState | [x] |
| GetPrePostRoll | [x] |
| SetPrePostRoll | [x] |
| GetNudgeValue | [x] |
| SetNudgeValue | [x] |
| GetSessionAudioFormat | [x] |
| GetSessionSampleRate | [x] |
| GetSessionBitDepth | [x] |
| GetSessionInterleavedState | [x] |
| GetSessionTimeCodeRate | [x] |
| GetSessionFeetFramesRate | [x] |
| GetSessionAudioRatePullSettings | [x] |
| GetSessionVideoRatePullSettings | [x] |
| GetSessionName | [x] |
| GetSessionPath | [x] |
| GetSessionStartTime | [x] |
| GetSessionLength | [x] |
| SetSessionAudioFormat | [x] |
| SetSessionBitDepth | [x] |
| SetSessionInterleavedState | [x] |
| SetSessionTimeCodeRate | [x] |
| SetSessionFeetFramesRate | [x] |
| SetSessionAudioRatePullSettings | [x] |
| SetSessionVideoRatePullSettings | [x] |
| SetSessionStartTime | [x] |
| SetSessionLength | [x] |
| GetPTSLVersion | [x] |
| GetPlaybackMode | [x] |
| GetRecordMode | [x] |
| GetTransportArmed | [x] |
| ClearMemoryLocation | [x] |
| RenameSelectedClip | [x] |
| RenameTargetClip | [x] |
| TogglePlayState | [x] |
| ToggleRecordEnable | [x] |
| PlayHalfSpeed | [x] |
| RecordHalfSpeed | [x] |
| EditMemoryLocation | [x] |
| GetMemoryLocations | [x] |
| RegisterConnection | [x] |
| CreateMemoryLocation | [x] |
| CreateNewTracks | [x] |
| SelectTracksByName | [x] |
| GetEditMode | [x] |
| SetEditMode | [x] |
| GetEditTool | [x] |
| SetEditTool | [x] |
| RecallZoomPreset | [x] |
| GetEditModeOptions | [x] |
| SetEditModeOptions | [x] |
| ImportVideo | [x] |
| SelectMemoryLocation | [x] |
| SetTrackMuteState | [x] |
| SetTrackSoloState | [x] |
| SetTrackSoloSafeState | [x] |
| SetTrackRecordEnableState | [x] |
| SetTrackRecordSafeEnableState | [x] |
| SetTrackInputMonitorState | [x] |
| SetTrackSmartDspState | [x] |
| SetTrackHiddenState | [x] |
| SetTrackInactiveState | [x] |
| SetTrackFrozenState | [x] |
| SetTrackOnlineState | [x] |
| SetTrackOpenState | [x] |
| GetSessionIDs | [x] |
| GetMemoryLocationsManageMode | [x] |
| SetMemoryLocationsManageMode | [x] |
| SetMainCounterFormat | [x] |
| SetSubCounterFormat | [x] |
| GetMainCounterFormat | [x] |
| GetSubCounterFormat | [x] |
| Undo | [x] |
| Redo | [x] |
| UndoAll | [x] |
| RedoAll | [x] |
| ClearUndoQueue | [x] |
| SetTrackDSPModeSafeState | [x] |
| GetSessionSystemDelayInfo | [x] |
| GroupClips | [x] |
| UngroupClips | [x] |
| UngroupAllClips | [x] |
| RegroupClips | [x] |
| RepeatSelection | [x] |
| DuplicateSelection | [x] |
| ClearAllMemoryLocations | [x] |
| GetSessionVideoFormat | [x] |
| GetSessionVideoRate | [x] |
| GetSessionVideoPullDown | [x] |
| GetSessionVideoStartTime | [x] |
| GetSessionVideoOffset | [x] |
| GetSessionVideoDuration | [x] |
| GetSessionVideoFileName | [x] |
License
This project is for demonstration purposes and is not affiliated with or endorsed by Avid Technology, Inc.
This project is a starting point for building modern automation tools for Avid Pro Tools using the PTSL SDK and MCP protocol.