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 henry@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 cmake
on macOS,apt install cmake
on 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.