mainstage-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MAINSTAGE_BACKUP_DIR | No | Backups of changed files; set to 'off' to disable them. | ~/Library/Application Support/mainstage-mcp/backups |
| MAINSTAGE_PLUGIN_DIRS | No | Where list_installed_plugins looks, separated by ':'. | /Library/Audio/Plug-Ins:~/Library/Audio/Plug-Ins |
| MAINSTAGE_CONCERTS_DIR | No | Folder(s) containing your .concert files, separated by ':'. | ~/Music/MainStage |
| MAINSTAGE_LIBRARY_DIRS | No | Patch library folder(s), separated by ':'. Defaults to the standard Logic/MainStage library locations. | |
| MAINSTAGE_PLAYBACK_TEMPLATE | No | A .cst file used as a template for Playback strips. Defaults to auto-detection. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Tools for building Apple MainStage concerts.
Typical workflow when the user names a song:
Work out tempo, time signature and which keyboard sounds the song needs (use your own knowledge or a web search if available).
search_sounds for each sound (try several keywords, e.g. "brass", "analog brass").
create_song_patch with the chosen sounds. Default faders to 0 dB unless the user says otherwise.
Optionally add_playback with an audio file the user points you to (find_audio_files).
Concerts are edited on disk. MainStage must not have the concert open, otherwise it would overwrite the changes. If a tool reports that the concert is open, tell the user to close it and call the tool again (optionally with wait_seconds so it waits for the user). Never invent sound names: only use names returned by search_sounds.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| mainstage_statusB | Is MainStage running and which concert windows are open. |
| list_concertsB | List the .concert files in the configured concert folder(s). |
| list_patchesB | Patch list of a concert (in order, sets shown as nested entries). |
| get_patchB | Details of one patch: tempo, time signature, channel strips with sound, dB, pan, mute, plug-ins. |
| search_soundsC | Search the installed Logic/MainStage sound library (instrument patches). |
| find_soundB | Where can I find a sound like this? Searches the sound library, the channel strips used in your concerts, exported patch files and installed plug-in names. German/English instrument names work. |
| list_sound_categoriesB | Categories of the sound library with the number of sounds in each. |
| refresh_sound_libraryA | Rescan the sound library (after installing new content). |
| list_installed_pluginsB | Third-party Audio Unit / VST plug-ins installed on this Mac (Apple's built-in instruments are not listed). |
| create_song_patchC | Create a new patch for a song with sounds from the library, tempo, time signature and mixer settings. |
| set_channelC | Change fader (dB), pan (-1…+1) or mute of a channel strip in a patch. |
| set_patch_settingsC | Change tempo, time signature or transpose of an existing patch. |
| find_audio_filesB | Find audio files (mp3, wav, aiff, m4a, …) in a folder, e.g. backing tracks for a song. |
| add_playbackB | Add a Playback channel strip playing the given audio file to a patch. Uses an existing Playback channel strip (from your concerts or MAINSTAGE_PLAYBACK_TEMPLATE) as template, so output routing and plug-in settings follow your usual setup. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Most tools target a distinct resource+action (concerts vs. patches vs. channel strips vs. sounds vs. plug-ins). The one soft overlap is search_sounds vs. find_sound, which both hit the sound library, though the descriptions differentiate exact-name search from broad 'find me something like this' lookup.
Nearly all tools follow a snake_case verb_noun pattern (list_patches, get_patch, set_channel, create_song_patch, refresh_sound_library). The only deviation is mainstage_status, which uses a bare noun phrase rather than a verb.
14 tools is well within the well-scoped range for a domain covering concerts, patches, channel strips, sound library, and plug-ins. Each tool maps to a concrete inspection or mutation operation with no obvious filler.
Read and update paths are solid (list/get patch, set_patch_settings, set_channel) and creation exists via create_song_patch, but there is no delete/rename/duplicate patch, no patch reordering, and no way to create or open a concert — only list it. These are notable gaps for a full patch lifecycle despite core workflows being covered.