MCP TTS VOICEVOX
Un servidor de texto a voz que se integra con un motor externo de VOICEVOX.
Documentación
VOICEVOX TTS MCP
Inglés | 日本語
Un servidor MCP de texto a voz que utiliza VOICEVOX
🎮 Prueba la Demo en el Navegador — Prueba VoicevoxClient directamente en tu navegador
Lo que puedes hacer
- Haz que tu asistente de IA hable — Texto a voz desde clientes MCP como Claude Desktop
- Reproductor de audio en la interfaz (aplicaciones MCP) — Reproduce audio directamente en el chat con un reproductor interactivo (ChatGPT / Claude Desktop / Claude Web, etc.)
- Conversaciones con múltiples personajes — Cambia de hablante por segmento en una sola llamada
- Reproducción fluida — Gestión de cola, reproducción inmediata, precarga, transmisión
- Multiplataforma — Funciona en Windows, macOS, Linux (incluido WSL)
Reproductor de audio en la interfaz (aplicaciones MCP)

La herramienta voicevox_speak_player utiliza aplicaciones MCP para mostrar un reproductor de audio interactivo directamente en el chat. A diferencia de la herramienta estándar voicevox_speak que reproduce audio en el servidor, el audio se reproduce en el lado del cliente (en el navegador/aplicación) — no se necesita un dispositivo de audio en el servidor.
Características
- Reproducción en el lado del cliente — El audio se reproduce en el chat de Claude Desktop, no en el servidor. Funciona incluso en conexiones remotas.
- Controles de reproducción/pausa — Controles completos de reproducción integrados en la conversación
- Diálogo con múltiples hablantes — Reproducción secuencial de varios hablantes en un solo reproductor con navegación entre pistas
- Cambio de hablante — Cambia la voz de cualquier segmento directamente desde la interfaz del reproductor
- Edición de segmentos — Ajusta velocidad, volumen, entonación, duración de pausas y silencio previo/posterior por segmento
- Edición de frases de acento — Edita posiciones de acento y tono de moras directamente en la interfaz
- Agregar / eliminar / reordenar segmentos — Reordenamiento de pistas con arrastrar y soltar; agrega nuevos segmentos en línea
- Exportación WAV — Guarda todas las pistas como archivos WAV numerados y abre la carpeta de salida automáticamente
- Administrador de diccionario de usuario — Agrega, edita y elimina palabras del diccionario de usuario de VOICEVOX con vista previa de reproducción
- Restauración de estado entre sesiones — El estado del reproductor se guarda en el servidor; al reabrir el chat se restauran las pistas anteriores
Comportamiento de exportación según el entorno:
Save and opensiempre exporta archivos WAV. Si no se admite abrir el explorador de archivos, la exportación aún se realiza correctamente y la ruta de guardado se muestra en la interfaz.Choose output folderutiliza un selector de directorio nativo en Windows/macOS. En entornos no compatibles, esta acción recurre al directorio de exportación predeterminado.
| Reproducción con múltiples hablantes | Lista de pistas | Edición de segmentos |
|---|---|---|
![]() | ![]() | ![]() |
| Selección de hablante | Administrador de diccionario | Exportación WAV |
|---|---|---|
![]() | ![]() | ![]() |
Clientes compatibles
| Cliente | Conexión | Notas |
|---|---|---|
| ChatGPT | HTTP (remoto) | Requiere VOICEVOX_PLAYER_DOMAIN |
| Claude Desktop | stdio (local) | Funciona de inmediato |
| Claude Desktop | HTTP (a través de mcp-remote) | No configurar VOICEVOX_PLAYER_DOMAIN |
Nota:
speak_playerrequiere un host que admita aplicaciones MCP. En hosts sin soporte de aplicaciones MCP, la herramienta no está disponible y se puede usarspeak(reproducción en el lado del servidor) en su lugar.
Herramientas MCP del reproductor
| Herramienta | Descripción |
|---|---|
voicevox_speak_player | Crea una nueva sesión de reproductor y muestra la interfaz. Devuelve viewUUID. |
voicevox_resynthesize_player | Actualiza todos los segmentos de un reproductor existente (nuevo viewUUID en cada llamada). |
voicevox_get_player_state | Lee el estado actual del reproductor (paginado) para ajustes de IA. |
voicevox_open_dictionary_ui | Abre la interfaz del administrador de diccionario de usuario. |
Inicio rápido
Requisitos
- Node.js 20.0.0 o superior (o Bun) o Docker
- Motor VOICEVOX (debe estar en ejecución; incluido en Docker Compose)
- ffplay (opcional, recomendado — no necesario con Docker)
Instalación de FFplay
ffplay es un reproductor ligero incluido con FFmpeg que admite reproducción desde stdin. Cuando está disponible, habilita automáticamente la reproducción de transmisión de baja latencia.
💡 FFplay es opcional. Sin él, la reproducción recurre a la reproducción basada en archivos temporales (Windows: PowerShell, macOS: afplay, Linux: aplay, etc.).
- Configuración fácil: Instalación en una línea para cada sistema operativo (consulta los pasos a continuación)
- Requerido:
ffplaydebe estar en PATH (reinicia la terminal/aplicaciones después de la instalación)
Instalación de FFplay y configuración de PATH
Ejemplos de instalación:
-
Windows (cualquiera de estos)
- Winget:
winget install --id=Gyan.FFmpeg -e - Chocolatey:
choco install ffmpeg - Scoop:
scoop install ffmpeg - Compilaciones oficiales: Descarga desde https://www.gyan.dev/ffmpeg/builds/ o https://github.com/BtbN/FFmpeg-Builds y agrega la carpeta
bina PATH
- Winget:
-
macOS
- Homebrew:
brew install ffmpeg
- Homebrew:
-
Linux
- Debian/Ubuntu:
sudo apt-get update && sudo apt-get install -y ffmpeg - Fedora:
sudo dnf install -y ffmpeg - Arch:
sudo pacman -S ffmpeg
- Debian/Ubuntu:
Configuración de PATH:
- Windows: Agrega
...\ffmpeg\bina las variables de entorno, luego reinicia PowerShell/terminal y el editor (Claude/VS Code, etc.)- Verificación:
powershell -c "$env:Path"debe incluir la ruta de ffmpeg
- Verificación:
- macOS/Linux: Generalmente se detecta automáticamente. Verifica con
echo $PATHsi es necesario, reinicia el shell. - Clientes MCP (Claude Desktop/Code): Reinicia la aplicación para recargar PATH.
Verificación:
ffplay -version
Si se muestra la información de versión, la instalación está completa. CLI/MCP detectará automáticamente ffplay y usará reproducción de transmisión desde stdin.
3 pasos para comenzar
1. Inicia el motor VOICEVOX
2. Agrega al archivo de configuración de Claude Desktop
Ubicación del archivo de configuración:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"tts-mcp": {
"command": "npx",
"args": ["-y", "@kajidog/mcp-tts-voicevox"]
}
}
}
💡 Si usas Bun, simplemente reemplaza
npxconbunx:"command": "bunx", "args": ["@kajidog/mcp-tts-voicevox"]
3. Reinicia Claude Desktop
¡Eso es todo! ¡Pídele a Claude que "diga hola" y hablará!
Inicio rápido con Docker
Puedes ejecutar tanto el servidor MCP como el motor VOICEVOX con un solo comando usando Docker Compose. No se requiere instalación de Node.js ni VOICEVOX.
1. Inicia los contenedores
docker compose up -d
Esto inicia el motor VOICEVOX y el servidor MCP (modo HTTP en el puerto 3000).
2. Agrega al archivo de configuración de Claude Desktop (usando mcp-remote)
{
"mcpServers": {
"tts-mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
}
}
}
3. Reinicia Claude Desktop
Seguridad (Docker):
docker-compose.ymlpublica el puerto 3000 sin autenticación.MCP_ALLOWED_HOSTSno es una defensa aquí — los clientes que no son navegadores pueden enviar cualquier encabezadoHostque deseen — por lo que cualquiera que pueda alcanzar el puerto puede usar el servidor. ConfiguraMCP_API_KEY(y envíalo comoX-API-Key), o mantén el puerto vinculado a una red confiable / solo localhost. Considera también configurarVOICEVOX_ALLOWED_OUTPUT_DIRSpara limitar dónde pueden escribir las herramientas de escritura de archivos.
Limitaciones (Docker): El contenedor Docker no tiene dispositivo de audio, por lo que la herramienta
voicevox_speak(reproducción en el lado del servidor) está deshabilitada por defecto. Usavoicevox_speak_playeren su lugar — reproduce audio en el lado del cliente (en Claude Desktop) y funciona sin ningún dispositivo de audio en el servidor. Consulta Reproductor de audio en la interfaz para más detalles.
Herramientas MCP
voicevox_speak — Texto a voz
La característica principal invocable desde Claude.
| Parámetro | Descripción | Predeterminado |
|---|---|---|
text | Texto a hablar (múltiples segmentos separados por saltos de línea) | Requerido |
phrases | Notación de acento en línea (tiene prioridad sobre text) | (sin configurar) |
speaker | ID del hablante | 1 |
speedScale | Velocidad de reproducción | 1.0 |
immediate | Reproducción inmediata (limpia la cola) | true |
waitForStart | Esperar a que comience la reproducción | false |
waitForEnd | Esperar a que termine la reproducción | false |
immediate/waitForStart/waitForEnddesaparecen del esquema de la herramienta cuando se configura la opción--restrict-*correspondiente.
Ejemplos:
// Simple text
{ "text": "Hello" }
// Specify speaker
{ "text": "Hello", "speaker": 3 }
// Different speakers per segment
{ "text": "1:Hello\n3:Nice weather today" }
// Wait for completion (synchronous processing)
{ "text": "Wait for this to finish before continuing", "waitForEnd": true }
// Control the accent with inline notation (`,` separates phrases, `[` marks the accent)
{ "text": "こんにちは世界", "phrases": "コン[ニ]チワ,セ[カ]イ" }
Notación de acento en línea
phrases (y el campo de pronunciación de las herramientas de diccionario de usuario) acepta katakana con un marcador de acento en línea:
,separa frases de acento —コン[ニ]チワ,セ[カ]イ[marca dónde cae el tono después;コン[ニ]チワsignifica que el acento cae enニ- Omitir los corchetes para una frase mantiene la estimación de acento propia de VOICEVOX
text sigue siendo obligatorio incluso cuando se proporciona phrases — pasa el texto plano allí y la notación es lo que se habla.
voicevox_get_accent_phrases devuelve la misma notación para un texto dado, para que puedas leer el acento estimado, ajustar el corchete y devolverlo a phrases.
Otras herramientas
| Herramienta | Descripción |
|---|---|
voicevox_speak_player | Hablar con reproductor de audio en la interfaz (consulta Herramientas MCP del reproductor) |
voicevox_ping | Verificar conexión con el motor VOICEVOX |
voicevox_get_speakers | Obtener lista de hablantes disponibles |
voicevox_stop_speaker | Detener reproducción y limpiar cola |
voicevox_synthesize_file | Generar archivo de audio |
Herramientas de diccionario de usuario (grupo dictionary):
| Herramienta | Descripción |
|---|---|
voicevox_get_accent_phrases | Obtener lectura y posiciones de acento de un texto como notación en línea |
voicevox_get_user_dictionary | Listar palabras del diccionario de usuario (filtro + paginación) |
voicevox_add_user_dictionary_word | Agregar una palabra (la pronunciación acepta notación de acento en línea) |
voicevox_update_user_dictionary_word | Actualizar una palabra (los campos omitidos conservan su valor) |
voicevox_delete_user_dictionary_word | Eliminar una palabra por UUID |
voicevox_add_user_dictionary_words | Agregar múltiples palabras a la vez |
voicevox_update_user_dictionary_words | Actualizar múltiples palabras a la vez |
Cualquier herramienta se puede desactivar individualmente con --disable-tools / VOICEVOX_DISABLED_TOOLS, o por grupo con --disable-groups / VOICEVOX_DISABLED_GROUPS.
Configuración
Variables de entorno
Configuración de VOICEVOX
| Variable | Descripción | Predeterminado |
|---|---|---|
VOICEVOX_URL | URL del motor | http://localhost:50021 |
VOICEVOX_DEFAULT_SPEAKER | ID de hablante predeterminado | 1 |
VOICEVOX_DEFAULT_SPEED_SCALE | Velocidad de reproducción | 1.0 |
VOICEVOX_RETRY_COUNT | Reintentos para solicitudes API fallidas (0 desactiva) | 2 |
VOICEVOX_RETRY_DELAY_MS | Retraso inicial de reintento en ms (retroceso exponencial) | 250 |
VOICEVOX_TIMEOUT_MS | Tiempo de espera para una sola solicitud API de VOICEVOX en ms. Auméntalo para texto largo o motor lento | 30000 |
Opciones de reproducción
| Variable | Descripción | Predeterminado |
|---|---|---|
VOICEVOX_USE_STREAMING | Reproducción de transmisión (requiere ffplay) | false |
VOICEVOX_DEFAULT_POST_PHONEME_LENGTH | Silencio final por segmento en segundos. Auméntalo para una pausa más larga entre segmentos en cola (también protege el final del habla de cortarse con reproducción de transmisión) | predeterminado del motor |
VOICEVOX_DEFAULT_IMMEDIATE | Reproducción inmediata | true |
VOICEVOX_DEFAULT_WAIT_FOR_START | Esperar inicio de reproducción | false |
VOICEVOX_DEFAULT_WAIT_FOR_END | Esperar fin de reproducción | false |
Configuración de restricciones
Restringe a la IA de especificar ciertas opciones.
| Variable | Descripción |
|---|---|
VOICEVOX_RESTRICT_IMMEDIATE | Restringir opción immediate |
VOICEVOX_RESTRICT_WAIT_FOR_START | Restringir opción waitForStart |
VOICEVOX_RESTRICT_WAIT_FOR_END | Restringir opción waitForEnd |
Desactivar herramientas
# Disable individual tools
export VOICEVOX_DISABLED_TOOLS=speak_player,synthesize_file
# Disable a built-in group of tools
export VOICEVOX_DISABLED_GROUPS=player
# Combine groups and individual tools
export VOICEVOX_DISABLED_GROUPS=dictionary
export VOICEVOX_DISABLED_TOOLS=synthesize_file
Grupos integrados para VOICEVOX_DISABLED_GROUPS / --disable-groups:
| Grupo | Herramientas |
|---|---|
player | speak_player, resynthesize_player, get_player_state, open_dictionary_ui |
dictionary | get_accent_phrases, get_user_dictionary, add_user_dictionary_word, update_user_dictionary_word, delete_user_dictionary_word, add_user_dictionary_words, update_user_dictionary_words |
file | synthesize_file |
apps | speak_player, resynthesize_player, open_dictionary_ui (herramientas de interfaz de aplicaciones MCP) |
Configuración del reproductor en la interfaz
| Variable | Descripción | Valor por defecto |
|---|---|---|
VOICEVOX_PLAYER_DOMAIN | Dominio del widget para el reproductor de UI (requerido para ChatGPT, p. ej. https://your-app.onrender.com) | (sin definir) |
VOICEVOX_AUTO_PLAY | Reproducción automática de audio en el reproductor de UI | true |
VOICEVOX_PLAYER_EXPORT_ENABLED | Habilitar exportación de pistas (descarga) desde el reproductor de UI (false para deshabilitar) | true |
VOICEVOX_PLAYER_EXPORT_DIR | Directorio de salida predeterminado para pistas exportadas (también se usa como respaldo cuando el selector de carpetas no está disponible) | ./voicevox-player-exports |
VOICEVOX_PLAYER_CACHE_DIR | Directorio para archivos de caché del reproductor (*.txt) y archivo de estado del reproductor predeterminado | ./.voicevox-player-cache |
VOICEVOX_PLAYER_AUDIO_CACHE_ENABLED | Habilitar caché de audio persistente en disco (false deshabilita lecturas/escrituras de caché en disco) | true |
VOICEVOX_PLAYER_AUDIO_CACHE_TTL_DAYS | Retención de caché de audio en días (0: deshabilitar caché en disco, -1: sin limpieza TTL) | 30 |
VOICEVOX_PLAYER_AUDIO_CACHE_MAX_MB | Límite de tamaño de caché de audio en MB (0: deshabilitar caché en disco, -1: ilimitado) | 512 |
VOICEVOX_PLAYER_STATE_FILE | Ruta del JSON de estado del reproductor persistido | <VOICEVOX_PLAYER_CACHE_DIR>/player-state.json |
Configuración de salida de archivos
| Variable | Descripción | Valor por defecto |
|---|---|---|
VOICEVOX_ALLOWED_OUTPUT_DIRS | Directorios separados por comas en los que las herramientas de escritura de archivos (voicevox_synthesize_file, exportación de pistas del reproductor) pueden escribir. Las rutas fuera de ellos se rechazan con un error. Sin definir significa sin restricción — se recomienda configurarlo cuando el servidor está expuesto por HTTP | (sin definir) |
Configuración del servidor
| Variable | Descripción | Valor por defecto |
|---|---|---|
MCP_HTTP_MODE | Habilitar modo HTTP | false |
MCP_HTTP_PORT | Puerto HTTP | 3000 |
MCP_HTTP_HOST | Host HTTP | 0.0.0.0 |
MCP_ALLOWED_HOSTS | Hosts permitidos (separados por comas) | localhost,127.0.0.1,[::1] |
MCP_ALLOWED_ORIGINS | Orígenes permitidos (separados por comas) | http://localhost,http://127.0.0.1,... |
MCP_API_KEY | Clave API requerida para /mcp (enviada mediante X-API-Key o Authorization: Bearer) | (sin definir) |
Argumentos de línea de comandos
Los argumentos de línea de comandos tienen prioridad sobre las variables de entorno.
La lista completa y actualizada de opciones siempre está disponible mediante npx @kajidog/mcp-tts-voicevox --help.
# Basic settings
npx @kajidog/mcp-tts-voicevox --url http://192.168.1.100:50021 --speaker 3 --speed 1.2
# HTTP mode
npx @kajidog/mcp-tts-voicevox --http --port 8080
# With restrictions
npx @kajidog/mcp-tts-voicevox --restrict-immediate --restrict-wait-for-end
# Disable individual tools
npx @kajidog/mcp-tts-voicevox --disable-tools speak_player,synthesize_file
# Disable a tool group
npx @kajidog/mcp-tts-voicevox --disable-groups player
| Argumento | Descripción |
|---|---|
--help, -h | Mostrar ayuda |
--version, -v | Mostrar versión |
--init | Generar .voicevoxrc.json con configuración predeterminada |
--config <path> | Ruta al archivo de configuración |
--url <value> | URL del motor VOICEVOX |
--speaker <value> | ID de hablante predeterminado |
--speed <value> | Velocidad de reproducción |
--use-streaming / --no-use-streaming | Reproducción en streaming |
--post-phoneme-length <sec> | Silencio final por segmento (pausa entre segmentos en cola) |
--immediate / --no-immediate | Reproducción inmediata |
--wait-for-start / --no-wait-for-start | Esperar inicio |
--wait-for-end / --no-wait-for-end | Esperar fin |
--restrict-immediate | Restringir inmediato |
--restrict-wait-for-start | Restringir waitForStart |
--restrict-wait-for-end | Restringir waitForEnd |
--allowed-output-dirs <dirs> | Directorios en los que las herramientas de escritura de archivos pueden escribir (separados por comas; sin definir = sin restricción) |
--disable-tools <tools> | Deshabilitar herramientas (nombres de herramientas separados por comas) |
--disable-groups <groups> | Deshabilitar grupos de herramientas: player, dictionary, file, apps |
--auto-play / --no-auto-play | Reproducción automática en el reproductor de UI |
--player-export / --no-player-export | Habilitar/deshabilitar exportación de pistas (descarga) en el reproductor de UI |
--player-export-dir <dir> | Directorio de salida predeterminado para pistas exportadas |
--player-cache-dir <dir> | Directorio de caché del reproductor |
--player-state-file <path> | Ruta del archivo de estado del reproductor persistido |
--player-audio-cache / --no-player-audio-cache | Habilitar/deshabilitar caché de audio en disco para el reproductor |
--player-audio-cache-ttl-days <days> | Días de retención de caché de audio (0: deshabilitar, -1: sin limpieza TTL) |
--player-audio-cache-max-mb <mb> | Límite de tamaño de caché de audio en MB (0: deshabilitar, -1: ilimitado) |
--http | Modo HTTP |
--port <value> | Puerto HTTP |
--host <value> | Host HTTP |
--allowed-hosts <hosts> | Hosts permitidos (separados por comas) |
--allowed-origins <origins> | Orígenes permitidos (separados por comas) |
--api-key <key> | Clave API requerida para /mcp |
Archivo de configuración (.voicevoxrc.json)
Puedes usar un archivo de configuración JSON en lugar de (o además de) las variables de entorno y los argumentos de CLI. Esto es útil cuando tienes muchas configuraciones que ajustar.
Orden de prioridad: Argumentos de CLI > Variables de entorno > Archivo de configuración > Valores predeterminados
Generar un archivo de configuración
npx @kajidog/mcp-tts-voicevox --init
Esto crea .voicevoxrc.json en el directorio actual con toda la configuración predeterminada. Edítalo según sea necesario.
Usar una ruta de archivo de configuración personalizada
npx @kajidog/mcp-tts-voicevox --config ./my-config.json
O mediante variable de entorno:
VOICEVOX_CONFIG=./my-config.json npx @kajidog/mcp-tts-voicevox
Ejemplo de .voicevoxrc.json
{
"url": "http://192.168.1.50:50021",
"speaker": 3,
"speed": 1.2,
"http": true,
"port": 8080,
"disable-tools": ["synthesize_file"],
"disable-groups": ["dictionary"]
}
Las claves pueden escribirse en kebab-case (use-streaming), camelCase (useStreaming) o nombres de clave internos (defaultSpeaker). Si .voicevoxrc.json existe en el directorio actual, se carga automáticamente.
Modo HTTP
Para conexiones remotas:
Iniciar servidor:
# Linux/macOS
MCP_HTTP_MODE=true MCP_HTTP_PORT=3000 npx @kajidog/mcp-tts-voicevox
# Windows PowerShell
$env:MCP_HTTP_MODE='true'; $env:MCP_HTTP_PORT='3000'; npx @kajidog/mcp-tts-voicevox
Configuración de Claude Desktop (usando mcp-remote):
{
"mcpServers": {
"tts-mcp-proxy": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
}
}
}
Configuración de hablante por proyecto
Con Claude Code, puedes configurar diferentes hablantes predeterminados por proyecto usando encabezados personalizados en .mcp.json:
| Encabezado | Descripción |
|---|---|
X-Voicevox-Speaker | ID de hablante predeterminado para este proyecto |
X-API-Key | Clave API cuando MCP_API_KEY está configurado |
Ejemplo de .mcp.json:
{
"mcpServers": {
"tts": {
"type": "http",
"url": "http://localhost:3000/mcp",
"headers": {
"X-Voicevox-Speaker": "113",
"X-API-Key": "your-api-key"
}
}
}
}
Esto permite que cada proyecto use automáticamente un personaje de voz diferente.
Orden de prioridad:
- Parámetro explícito
speakeren la llamada a la herramienta (mayor prioridad) - Valor predeterminado del proyecto desde el encabezado
X-Voicevox-Speaker - Configuración global
VOICEVOX_DEFAULT_SPEAKER(menor prioridad)
Conexión de WSL al host de Windows
Conexión desde WSL a un servidor MCP que se ejecuta en Windows:
1. Obtener la IP del host de Windows desde WSL
# Method 1: From default gateway
ip route show | grep -oP 'default via \K[\d.]+'
# Usually in the format 172.x.x.1
# Method 2: From /etc/resolv.conf (WSL2)
cat /etc/resolv.conf | grep nameserver | awk '{print $2}'
2. Iniciar el servidor en Windows
Agrega la IP de puerta de enlace de WSL a MCP_ALLOWED_HOSTS para permitir el acceso desde WSL:
$env:MCP_HTTP_MODE='true'
$env:MCP_ALLOWED_HOSTS='localhost,127.0.0.1,172.29.176.1'
npx @kajidog/mcp-tts-voicevox
O con argumentos de CLI:
npx @kajidog/mcp-tts-voicevox --http --allowed-hosts "localhost,127.0.0.1,172.29.176.1"
3. Configuración de WSL (.mcp.json)
{
"mcpServers": {
"tts": {
"type": "http",
"url": "http://172.29.176.1:3000/mcp"
}
}
}
⚠️ Dentro de WSL,
localhostse refiere al propio WSL. Usa la IP de puerta de enlace de WSL para acceder al host de Windows.
Uso con ChatGPT
Para usar con ChatGPT, implementa el servidor MCP en modo HTTP en la nube con acceso a un motor VOICEVOX.
1. Implementar en la nube
Implementa con Docker en Render, Railway, etc. (se incluye Dockerfile).
2. Configurar el motor VOICEVOX
Ejecuta el motor VOICEVOX localmente y exponlo mediante ngrok, o impleméntalo junto con el servidor MCP.
3. Configurar variables de entorno
| Variable | Ejemplo | Descripción |
|---|---|---|
VOICEVOX_URL | https://xxxx.ngrok-free.app | URL del motor VOICEVOX |
MCP_HTTP_MODE | true | Habilitar modo HTTP |
MCP_ALLOWED_HOSTS | your-app.onrender.com | Nombre de host implementado |
VOICEVOX_PLAYER_DOMAIN | https://your-app.onrender.com | Dominio del widget para el reproductor de UI (requerido para ChatGPT) |
VOICEVOX_DISABLED_TOOLS | speak | Deshabilitar reproducción del lado del servidor (sin dispositivo de audio) |
VOICEVOX_PLAYER_EXPORT_ENABLED | false | Deshabilitar función de exportación (los archivos no se pueden descargar desde la nube) |
4. Agregar conector en ChatGPT
Ve a Configuración de ChatGPT → Conectores → Agregar URL del servidor MCP (https://your-app.onrender.com/mcp).
Uso con Claude Web
Los pasos básicos son los mismos que para ChatGPT, pero el valor de VOICEVOX_PLAYER_DOMAIN es diferente.
Claude Web requiere que ui.domain sea un dominio dedicado basado en hash. Calcúlalo con el siguiente comando:
node -e "console.log(require('crypto').createHash('sha256').update('Your MCP server URL').digest('hex').slice(0,32)+'.claudemcpcontent.com')"
Ejemplo: Si la URL de tu servidor MCP es https://your-app.onrender.com/mcp:
node -e "console.log(require('crypto').createHash('sha256').update('https://your-app.onrender.com/mcp').digest('hex').slice(0,32)+'.claudemcpcontent.com')"
# Example output: 48fb73a6...claudemcpcontent.com
Establece este valor de salida como VOICEVOX_PLAYER_DOMAIN.
Nota: Dado que ChatGPT y Claude Web requieren valores diferentes de
VOICEVOX_PLAYER_DOMAIN, una sola instancia no puede atender a ambos clientes simultáneamente. Implementa instancias separadas para cada uno, o cambia la variable de entorno según el cliente objetivo.
Solución de problemas
El audio no se reproduce
1. Verifica si el motor VOICEVOX está en ejecución
curl http://localhost:50021/speakers
2. Verifica las herramientas de reproducción específicas de la plataforma
| SO | Herramienta requerida |
|---|---|
| Linux | Una de aplay, paplay, play, ffplay |
| macOS | afplay (preinstalado) |
| Windows | PowerShell (preinstalado) |
No reconocido por el cliente MCP
- Verifica la instalación del paquete:
npm list -g @kajidog/mcp-tts-voicevox - Verifica la sintaxis JSON en el archivo de configuración
- Reinicia el cliente
Estructura del paquete
| Paquete | Descripción |
|---|---|
@kajidog/mcp-tts-voicevox | Servidor MCP (apps/mcp-tts) |
@kajidog/voicevox-client | Biblioteca cliente VOICEVOX de propósito general (se puede usar de forma independiente) |
@kajidog/mcp-core | Infraestructura MCP compartida (esquema de configuración, lanzador HTTP/stdio). No se publica — se incluye en el servidor |
@kajidog/player-ui | Interfaz de usuario del reproductor de audio basada en React, empaquetada en un solo archivo HTML. No se publica |
Información para desarrolladores
Configuración
git clone https://github.com/kajidog/mcp-tts-voicevox.git
cd mcp-tts-voicevox
pnpm install
Comandos
El administrador de paquetes es pnpm (npm / yarn no son compatibles).
| Comando | Descripción |
|---|---|
pnpm build | Compilar todos los paquetes |
pnpm test | Ejecutar pruebas |
pnpm lint | Ejecutar lint (una sola pasada de Biome sobre todo el espacio de trabajo) |
pnpm typecheck | Verificación de tipos en cada paquete |
pnpm changeset | Agregar un changeset para un cambio visible para el usuario |
Los servidores de desarrollo viven en el paquete del servidor, así que ejecútalos con un filtro:
| Comando | Descripción |
|---|---|
pnpm --filter @kajidog/mcp-tts-voicevox dev | Iniciar servidor de desarrollo (stdio) |
pnpm --filter @kajidog/mcp-tts-voicevox dev:http | Iniciar servidor de desarrollo en modo HTTP |
pnpm --filter @kajidog/mcp-tts-voicevox dev:bun | Iniciar servidor de desarrollo con Bun |
pnpm --filter @kajidog/mcp-tts-voicevox dev:bun:http | Iniciar servidor de desarrollo HTTP con Bun |
Licencia
ISC





