Skip to main content
Glama

Synthesizer V Studio 2 MCP Server (mcp-svstudio)

Un servidor Model Context Protocol (MCP) de grado de producción para Dreamtonics Synthesizer V Studio 2 Pro, que permite a agentes de IA generativa y LLM manipular de forma segura, estructural y efectiva notas, letras, fonemas, atributos vocales, parámetros y el transporte de reproducción mediante la API oficial de scripting de Dreamtonics.


Descripción general de la arquitectura

Synthesizer V Studio 2 Pro ejecuta scripts dentro de un entorno embebido de Lua 5.4 / Duktape JS sin sockets de red externos. Para lograr alto rendimiento, baja latencia y cero dependencias de bibliotecas C, este servidor MCP utiliza un Protocolo IPC de buzón de archivos atómico:

+--------------------------------------+
|       LLM / MCP Client               |
|   (Antigravity / Claude / Cursor)    |
+------------------+-------------------+
                   | JSON-RPC over Stdio
                   v
+--------------------------------------+
|       Node.js MCP Server             |
|  - Tool Schema & Validation (Zod)    |
|  - Stable Note Locator Resolver      |
|  - Safe Diff & Dry Run Engine        |
|  - Mailbox IPC Client                |
+------------------+-------------------+
                   | Atomic Mailbox IPC (.req / .res)
                   | Live Heartbeat Monitor (heartbeat.json)
                   v
+--------------------------------------+
|  Synthesizer V Studio 2 Pro (Lua 5.4)|
|  `StartMCPServerRequestHandler.lua`  |
|  - Non-blocking SV:setTimeout loop   |
|  - Dreamtonics Official Scripting API|
|  - Automatic Snapshot Rollback & Undo|
+--------------------------------------+

Aspectos destacados del protocolo IPC

  • Renombrados atómicos de archivos: Escribe en <id>.tmp y renombra atómicamente a <id>.req / <id>.res para evitar condiciones de carrera y lecturas parciales de archivos.

  • IDs de solicitud únicos: Garantiza el emparejamiento solicitud-respuesta incluso durante comandos secuenciales rápidos.

  • Latido instantáneo de actividad: El script Lua actualiza heartbeat.json cada 500 ms. El servidor MCP comprueba la frescura del latido e informa inmediatamente del estado sin conexión (<50 ms) en lugar de quedarse colgado en tiempos de espera.

  • Recolección automática de basura: Limpia automáticamente archivos temporales obsoletos de más de 60 segundos al inicio y durante el sondeo.


Related MCP server: aviutl2-mcp

Instalación y configuración

Requisitos previos

  • Node.js (v18 o superior; probado en v22 y v26)

  • Synthesizer V Studio Pro (Versión 2.0 o 2.1+)

1. Compilar el servidor MCP

git clone https://github.com/shotarokawade/SV-MCP.git
cd SV-MCP
npm install
npm run build

2. Instalar los scripts Lua en Synthesizer V Studio

Ejecute el instalador automatizado:

npm run install-scripts

O copie manualmente los archivos de sv-scripts/ a su carpeta de scripts de Synthesizer V Studio:

  • macOS: ~/Library/Application Support/Dreamtonics/Synthesizer V Studio 2/scripts/MCP/

  • Windows: %APPDATA%\Dreamtonics\Synthesizer V Studio 2\scripts\MCP\

  • Linux: ~/.local/share/Dreamtonics/Synthesizer V Studio 2/scripts/MCP/

3. Iniciar el manejador del servidor en Synthesizer V Studio

  1. Inicie Synthesizer V Studio 2 Pro.

  2. Abra o cree un proyecto con pistas vocales.

  3. En la barra de menú superior, seleccione: Scripts > MCP > Start MCP Server Request Handler

  4. El manejador en segundo plano ahora está en ejecución y responde. (Para detenerlo, seleccione Scripts > MCP > Stop MCP Server Request Handler).


Configuración del cliente MCP

Antigravity (~/.gemini/config/mcp_config.json o configuración del proyecto)

{
  "mcpServers": {
    "synthv": {
      "command": "node",
      "args": ["/absolute/path/to/SV-MCP/build/index.js"],
      "env": {
        "MCP_SVSTUDIO_IPC_DIR": "/absolute/path/to/.mcp-svstudio/ipc"
      }
    }
  }
}

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "synthv": {
      "command": "node",
      "args": ["/path/to/SV-MCP/build/index.js"]
    }
  }
}

Referencia de herramientas MCP

Nombre de la herramienta

Descripción

get_server_status

Devuelve el estado de la conexión, la marca de tiempo del latido del script y la información del proyecto actual.

get_project_info

Recupera el nombre del archivo del proyecto, la duración (en blicks), el número de pistas, el número de grupos y las marcas de tempo y compás.

list_tracks

Lista las pistas con nombres, recuentos de referencias de grupo, colores de visualización y ajustes de mezclador (ganancia, paneo, silencio, solo).

list_groups

Lista todos los grupos de notas en la biblioteca del proyecto con UUIDs y recuentos de notas.

get_notes

Recupera notas para una pista y grupo (índices basados en 0) incluyendo tono, inicio, duración, letras, fonemas y atributos de nota.

find_notes

Busca notas que coincidan con el rango de inicio, rango de tono, subcadena/regex de letras o fonemas.

add_notes

Añade una o más notas a un grupo. Soporta dry_run: true.

update_notes

Actualiza notas existentes por índice o localizador ({ onset, pitch }). Soporta dry_run: true.

delete_notes

Elimina notas por índices o localizador. Soporta dry_run: true.

get_phonemes

Recupera los fonemas especificados por el usuario para la(s) nota(s).

set_phonemes

Establece directamente cadenas de fonemas formales separadas por espacios (Note.setPhonemes()).

get_computed_phonemes

Consulta los resultados internos del motor de texto a fonemas y los atributos calculados (SV.getComputedAttributesForGroup).

get_note_attributes

Obtiene atributos de nota (desafinación, anulación de idioma, anulación de conjunto de fonemas, tipo musical, acento de rap, sincronización/fuerza por fonema).

set_note_attributes

Modifica atributos de nota y atributos por fonema (phonemes: [{ leftOffset, position, activity, strength }]).

get_voice

Obtiene parámetros de voz en NoteGroupReference (volumen, tensión, respiración, género, cambio de tono, parámetros de modo vocal).

set_voice

Modifica los parámetros de voz de pista/grupo y los modos vocales.

get_parameters

Lee puntos de curva de automatización para parámetros (pitchDelta, loudness, tension, breathiness, voicing, gender, vocalMode_*).

set_parameters

Añade, reemplaza o elimina puntos de automatización con validación de rango.

play

Inicia el transporte de reproducción.

pause

Pausa la reproducción sin restablecer el cabezal de reproducción.

stop

Detiene la reproducción y restablece el cabezal a la posición inicial.

seek

Mueve el cabezal de reproducción a la posición en segundos.

get_playhead

Lee la posición del cabezal y el estado ("playing", "looping", "stopped").

loop

Establece la región de reproducción en bucle entre tBegin y tEnd en segundos.

batch_edit

Ejecuta múltiples operaciones atómicamente en una única transacción de deshacer con prevalidación y vista previa de diferencias.


Manipulación de fonemas y corrección de letras alemanas multisilábicas

El problema

Al importar MusicXML desde MuseScore a Synthesizer V Studio, las palabras alemanas multisilábicas divididas entre notas (por ejemplo, schö- y -ne) con syllabic=begin/end a menudo se fusionan con el texto de fonemas crudo en las letras:

  • Nota 1 prevista: .sh er

  • Nota 2 prevista: .n ax

  • Resultado en SynthV si se coloca en las letras: .sh er.n ax (causando advertencias de pronunciación y errores fonéticos).

La solución: Inyección directa de fonemas mediante MCP

Usando este servidor MCP, el LLM establece letras y fonemas directamente mediante las API oficiales:

{
  "trackIndex": 0,
  "groupIndex": 0,
  "assignments": [
    { "noteIndex": 0, "phonemes": ".sh er" },
    { "noteIndex": 1, "phonemes": ".n ax" }
  ]
}

Verificación de pronunciación de ida y vuelta

  1. Llame a set_phonemes para aplicar los fonemas objetivo.

  2. Llame a get_computed_phonemes para volver a consultar el motor sintetizador interno de Synthesizer V.

  3. Compare los fonemas calculados con la pronunciación esperada para verificar la coincidencia exacta.


Pipeline de integración con MuseScore MCP

[ MuseScore MCP ]
       │ 1. Extract note pitches, onset blicks, measure positions, and lyric syllables
       ▼
[ LLM Agent ]
       │ 2. Perform German grapheme-to-phoneme (G2P) conversion to Synthesizer V phonemes
       │    (e.g., "Freude" -> [".f r oy", "d ax"])
       ▼
[ Synthesizer V MCP ]
       │ 3. `find_notes` or `get_notes` matching onset and measure range
       │ 4. `batch_edit` with `dry_run: true` to inspect diff
       │ 5. `batch_edit` with `dry_run: false` to apply notes and `set_phonemes`
       │ 6. `get_computed_phonemes` to verify synthesis pronunciation

Garantías de seguridad, ejecución en seco y reversión

  1. dry_run: true: Todas las herramientas de mutación soportan dry_run: true. El servidor devuelve los cambios previstos y la diferencia sin modificar el estado del proyecto.

  2. Deshacer en un solo paso dentro de la aplicación (project.newUndoRecord()): Cada operación MCP que muta registra un registro de deshacer del proyecto. El usuario puede pulsar Cmd+Z / Ctrl+Z dentro de Synthesizer V Studio para revertir instantáneamente toda la operación.

  3. Reversión de transacción en lote: Si se produce un error durante batch_edit, el script captura el estado anterior a la mutación y revierte automáticamente los elementos modificados antes de devolver el error.

  4. Validación de límites y rangos:

    • Tono MIDI: 0 - 127

    • Volumen: -48 dB a +12 dB

    • Tensión / Respiración / Género: -1.0 a +1.0

    • Sonoridad: 0.0 a +1.0

    • Desviación de tono: -1200 a +1200 cents

    • Modo vocal: 0 a 150


Referencias y cumplimiento de la API oficial

  • Manual oficial de scripting: https://resource.dreamtonics.com/scripting/index.html

  • APIs oficiales clave utilizadas:

    • Note.getPhonemes() / Note.setPhonemes(phonemes)

    • SV.getPhonemesForGroup(groupRef)

    • SV.getComputedAttributesForGroup(groupRef) (SynthV 2.1.1+)

    • Note.getAttributes() / Note.setAttributes(attributes)

    • NoteGroupReference.getVoice() / NoteGroupReference.setVoice(voice)

    • NoteGroup.getParameter(name) / Automation

    • PlaybackControl (play, pause, stop, seek, loop, getPlayhead)

    • Project.newUndoRecord()


Licencia

Licencia MIT.

Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Controls OpenUtau (vocal synthesis software) from Claude Desktop, enabling project creation, editing, and live note manipulation via a bridge plugin.
  • A
    license
    B
    quality
    B
    maintenance
    Enables coding agents to compose, tune, render, mix, and audit native VOCALOID3/4 projects from scratch, acting as a production bridge between intent and finished song.
    22
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Create and manage cinematic AI video renders through the Future Video Studio Agent API.

  • Build and run visual creative-production workflows from your AI agent.

  • Operate your Sapiens Sintéticos AI studio: generate image, article, voice, music and video.

View all MCP Connectors

Latest Blog Posts

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/shotarokawade/SV-MCP'

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