mcp-svstudio
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_SVSTUDIO_IPC_DIR | No | Directory used for the atomic file-mailbox IPC protocol between the MCP server and the Synthesizer V Studio Lua handler. Overrides the default IPC directory if provided. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_server_statusA | Check connection status with Synthesizer V Studio 2, script heartbeat, and current project info. |
| get_server_logsB | Read the latest execution and error logs from Synthesizer V Studio Lua script. |
| get_project_infoA | Get current project metadata: duration, number of tracks, note groups, tempo marks, and measure marks. |
| list_tracksA | List all tracks in the project with track name, group references count, display color, and mixer settings (gain, pan, mute, solo). |
| list_groupsA | List all note groups in the project library with group name, UUID, and note count. |
| get_notesA | Get all notes in a specific track and group reference (0-based indices). Returns pitch, onset, duration, lyrics, phonemes, and note attributes. |
| find_notesA | Search notes by onset range, pitch range, lyrics substring/regex, or phonemes. Ideal for aligning with MuseScore score data. |
| add_notesA | Add one or more notes to a track/group. Each note requires onset (in blicks, 1 quarter = 705,600,000 blicks), duration, pitch (MIDI 0-127), lyrics, and optional phonemes. |
| update_notesA | Update existing notes identified by 0-based noteIndex or locator (onset/pitch match). Supports dry_run. |
| delete_notesB | Delete note(s) from a group by noteIndices or locator. |
| get_phonemesA | Get user-specified phonemes for notes in a group or a specific noteIndex (returns empty string if none set). |
| set_phonemesA | Directly assign formal SynthV space-separated phoneme strings to notes (e.g. '.sh er', '.n ax', 'g u: t'). Solves MusicXML lyric joining issues. |
| get_computed_phonemesB | Retrieve SynthV internal synthesis engine-computed phonemes and attributes (symbol, language, activity, position, accent) using SV.getComputedAttributesForGroup. |
| get_note_attributesB | Get detailed note attributes (detune, rapAccent, per-phoneme timing/activity: leftOffset, position, activity, strength). |
| set_note_attributesC | Set note attributes and per-phoneme attributes (phonemes: [{ leftOffset, position, activity, strength }]). |
| get_voiceC | Get voice settings on NoteGroupReference (paramLoudness, paramTension, paramBreathiness, paramGender, paramToneShift, vocalModeParams). |
| set_voiceC | Set voice settings on NoteGroupReference (loudness, tension, breathiness, gender, toneShift, vocalModeParams). |
| get_parametersA | Read automation curve points for a parameter (pitchDelta, vibratoEnv, loudness, tension, breathiness, voicing, gender, vocalMode_*). |
| set_parametersB | Set automation points on parameter curve (add, replace_all, or remove_range). |
| playA | Start playback in Synthesizer V Studio. |
| pauseA | Pause playback in Synthesizer V Studio without resetting playhead. |
| stopA | Stop playback and return playhead to start position. |
| seekB | Seek playhead to specific time in seconds. |
| get_playheadA | Get playhead position in seconds and status ('playing', 'looping', 'stopped'). |
| loopB | Start loop playback between tBegin and tEnd in seconds. |
| batch_editA | Execute multiple note/phoneme/voice/parameter operations in a single atomic transaction with snapshot rollback. |
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 26 tools
Tools are generally organized by resource (notes, phonemes, voice, parameters, transport) and the descriptions clarify distinctions such as get_phonemes vs get_computed_phonemes and get_voice vs get_parameters. Minor overlap remains between get_project_info/get_server_status and between note attribute and phoneme tools, but selection should be reliable.
Most tools follow a consistent verb_noun pattern (get_notes, set_voice, list_tracks, batch_edit), with list_ reserved for collections and get_/set_ for individual properties. The transport controls (play, pause, stop, seek, loop) are bare verbs and batch_edit is a compound, so the pattern is not perfectly uniform but remains predictable.
26 tools is high but defensible for a Synthesizer V Studio integration that spans project status, note editing, phonemes, attributes, voice settings, automation curves, and transport. The count is at the upper edge of reasonable and every tool maps to a distinct operation rather than redundant duplicates.
The core note workflow is well covered: create/read/search/update/delete notes, phoneme handling, attribute editing, voice settings, parameter automation, and transport control. Missing group/track creation or rendering/export are notable gaps, but they appear outside the intended editing scope and can be worked around.