MCP TTS VOICEVOX
Um servidor de Texto-para-Fala que se integra com um motor externo VOICEVOX.
Documentação
VOICEVOX TTS MCP
Inglês | 日本語
Um servidor MCP de texto-para-fala usando VOICEVOX
🎮 Experimente a Demonstração no Navegador — Teste o VoicevoxClient diretamente no seu navegador
O Que Você Pode Fazer
- Faça seu assistente de IA falar — Texto-para-fala a partir de clientes MCP como Claude Desktop
- Player de Áudio na Interface (Apps MCP) — Reproduza áudio diretamente no chat com um player interativo (ChatGPT / Claude Desktop / Claude Web etc.)
- Conversas com múltiplos personagens — Alterne os falantes por segmento em uma única chamada
- Reprodução suave — Gerenciamento de fila, reprodução imediata, pré-carregamento, streaming
- Multiplataforma — Funciona em Windows, macOS, Linux (incluindo WSL)
Player de Áudio na Interface (Apps MCP)

A ferramenta voicevox_speak_player usa Apps MCP para renderizar um player de áudio interativo diretamente no chat. Diferente da ferramenta padrão voicevox_speak que reproduz áudio no servidor, o áudio é reproduzido no lado do cliente (no navegador/app) — nenhum dispositivo de áudio é necessário no servidor.
Recursos
- Reprodução no lado do cliente — O áudio é reproduzido no chat do Claude Desktop, não no servidor. Funciona até mesmo em conexões remotas.
- Controles de reprodução/pausa — Controles completos de reprodução incorporados na conversa
- Diálogo com múltiplos falantes — Reprodução sequencial de vários falantes em um único player com navegação entre faixas
- Alternância de falantes — Mude a voz de qualquer segmento diretamente na interface do player
- Edição de segmentos — Ajuste velocidade, volume, entonação, duração de pausa e silêncio antes/depois por segmento
- Edição de frases de acento — Edite posições de acento e tom de mora diretamente na interface
- Adicionar / excluir / reordenar segmentos — Reordenação de faixas por arrastar e soltar; adicione novos segmentos inline
- Exportação WAV — Salve todas as faixas como arquivos WAV numerados e abra a pasta de saída automaticamente
- Gerenciador de dicionário do usuário — Adicione, edite e exclua palavras do dicionário do usuário VOICEVOX com reprodução de pré-visualização
- Restauração de estado entre sessões — O estado do player é persistido no servidor; reabrir o chat restaura as faixas anteriores
Comportamento de exportação por ambiente:
Save and opensempre exporta arquivos WAV. Se abrir o explorador de arquivos não for suportado, a exportação ainda é bem-sucedida e o caminho de salvamento é mostrado na interface.Choose output folderusa um seletor de diretório nativo no Windows/macOS. Em ambientes não suportados, esta ação usa o diretório de exportação padrão.
| Reprodução com múltiplos falantes | Lista de faixas | Edição de segmentos |
|---|---|---|
![]() | ![]() | ![]() |
| Seleção de falante | Gerenciador de dicionário | Exportação WAV |
|---|---|---|
![]() | ![]() | ![]() |
Clientes Suportados
| Cliente | Conexão | Observações |
|---|---|---|
| ChatGPT | HTTP (remoto) | Requer VOICEVOX_PLAYER_DOMAIN |
| Claude Desktop | stdio (local) | Funciona imediatamente |
| Claude Desktop | HTTP (via mcp-remote) | Não defina VOICEVOX_PLAYER_DOMAIN |
Observação:
speak_playerrequer um host que suporte Apps MCP. Em hosts sem suporte a Apps MCP, a ferramenta não está disponível espeak(reprodução no lado do servidor) pode ser usada como alternativa.
Ferramentas MCP do Player
| Ferramenta | Descrição |
|---|---|
voicevox_speak_player | Cria uma nova sessão de player e exibe a interface. Retorna viewUUID. |
voicevox_resynthesize_player | Atualiza todos os segmentos de um player existente (novo viewUUID a cada chamada). |
voicevox_get_player_state | Lê o estado atual do player (paginado) para ajuste pela IA. |
voicevox_open_dictionary_ui | Abre a interface do gerenciador de dicionário do usuário. |
Início Rápido
Requisitos
- Node.js 20.0.0 ou superior (ou Bun) ou Docker
- VOICEVOX Engine (deve estar em execução; incluído no Docker Compose)
- ffplay (opcional, recomendado — não necessário com Docker)
Instalando o FFplay
ffplay é um player leve incluído com FFmpeg que suporta reprodução a partir de stdin. Quando disponível, ele ativa automaticamente a reprodução em streaming de baixa latência.
💡 FFplay é opcional. Sem ele, a reprodução usa arquivos temporários como alternativa (Windows: PowerShell, macOS: afplay, Linux: aplay, etc.).
- Configuração fácil: Instalação em uma linha para cada sistema operacional (veja os passos abaixo)
- Necessário:
ffplaydeve estar no PATH (reinicie o terminal/apps após a instalação)
Instalação do FFplay e Configuração do PATH
Exemplos de instalação:
-
Windows (qualquer um destes)
- Winget:
winget install --id=Gyan.FFmpeg -e - Chocolatey:
choco install ffmpeg - Scoop:
scoop install ffmpeg - Builds oficiais: Baixe de https://www.gyan.dev/ffmpeg/builds/ ou https://github.com/BtbN/FFmpeg-Builds e adicione a pasta
binao 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:
Configuração do PATH:
- Windows: Adicione
...\ffmpeg\binàs variáveis de ambiente e reinicie o PowerShell/terminal e o editor (Claude/VS Code, etc.)- Verifique:
powershell -c "$env:Path"deve incluir o caminho do ffmpeg
- Verifique:
- macOS/Linux: Geralmente detectado automaticamente. Verifique com
echo $PATHse necessário, reinicie o shell. - Clientes MCP (Claude Desktop/Code): Reinicie o app para recarregar o PATH.
Verificação:
ffplay -version
Se as informações de versão forem exibidas, a instalação está concluída. CLI/MCP detectarão automaticamente o ffplay e usarão reprodução em streaming via stdin.
3 Passos para Começar
1. Inicie o VOICEVOX Engine
2. Adicione ao arquivo de configuração do Claude Desktop
Localização do arquivo de configuração:
- 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"]
}
}
}
💡 Se estiver usando Bun, basta substituir
npxporbunx:"command": "bunx", "args": ["@kajidog/mcp-tts-voicevox"]
3. Reinicie o Claude Desktop
É isso! Peça ao Claude para "dizer olá" e ele falará!
Início Rápido com Docker
Você pode executar tanto o servidor MCP quanto o VOICEVOX Engine com um único comando usando Docker Compose. Não é necessária instalação de Node.js ou VOICEVOX.
1. Inicie os contêineres
docker compose up -d
Isso inicia o VOICEVOX Engine e o servidor MCP (modo HTTP na porta 3000).
2. Adicione ao arquivo de configuração do Claude Desktop (usando mcp-remote)
{
"mcpServers": {
"tts-mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
}
}
}
3. Reinicie o Claude Desktop
Segurança (Docker):
docker-compose.ymlpublica a porta 3000 sem autenticação.MCP_ALLOWED_HOSTSnão é uma defesa aqui — clientes que não sejam navegadores podem enviar qualquer cabeçalhoHostque desejarem — então qualquer pessoa que possa alcançar a porta pode usar o servidor. DefinaMCP_API_KEY(e envie comoX-API-Key), ou mantenha a porta vinculada a uma rede confiável / somente localhost. Considere também definirVOICEVOX_ALLOWED_OUTPUT_DIRSpara limitar onde as ferramentas de escrita de arquivos podem gravar.
Limitações (Docker): O contêiner Docker não possui dispositivo de áudio, então a ferramenta
voicevox_speak(reprodução no lado do servidor) está desabilitada por padrão. Usevoicevox_speak_playerem vez disso — ela reproduz áudio no lado do cliente (no Claude Desktop) e funciona sem nenhum dispositivo de áudio no servidor. Veja Player de Áudio na Interface para detalhes.
Ferramentas MCP
voicevox_speak — Texto-para-Fala
O principal recurso chamável a partir do Claude.
| Parâmetro | Descrição | Padrão |
|---|---|---|
text | Texto para falar (vários segmentos separados por novas linhas) | Obrigatório |
phrases | Notação de acento inline (tem prioridade sobre text) | (não definido) |
speaker | ID do falante | 1 |
speedScale | Velocidade de reprodução | 1.0 |
immediate | Reprodução imediata (limpa a fila) | true |
waitForStart | Aguardar o início da reprodução | false |
waitForEnd | Aguardar a conclusão da reprodução | false |
immediate/waitForStart/waitForEnddesaparecem do esquema da ferramenta quando a opção--restrict-*correspondente está definida.
Exemplos:
// 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": "コン[ニ]チワ,セ[カ]イ" }
Notação de Acento Inline
phrases (e o campo de pronúncia das ferramentas de dicionário do usuário) aceita katakana com um marcador de acento inline:
,separa frases de acento —コン[ニ]チワ,セ[カ]イ[marca onde o tom cai depois;コン[ニ]チワsignifica que o acento cai emニ- Omitir os colchetes para uma frase mantém a estimativa de acento do próprio VOICEVOX
text permanece obrigatório mesmo quando phrases é fornecido — passe o texto simples ali e a notação é o que será falado.
voicevox_get_accent_phrases retorna a mesma notação para um texto fornecido, então você pode ler o acento estimado, ajustar o colchete e alimentá-lo de volta em phrases.
Outras Ferramentas
| Ferramenta | Descrição |
|---|---|
voicevox_speak_player | Fale com o player de áudio da interface (veja Ferramentas MCP do Player) |
voicevox_ping | Verifique a conexão com o VOICEVOX Engine |
voicevox_get_speakers | Obtenha a lista de falantes disponíveis |
voicevox_stop_speaker | Pare a reprodução e limpe a fila |
voicevox_synthesize_file | Gere arquivo de áudio |
Ferramentas de dicionário do usuário (grupo dictionary):
| Ferramenta | Descrição |
|---|---|
voicevox_get_accent_phrases | Obtenha leitura e posições de acento de um texto como notação inline |
voicevox_get_user_dictionary | Liste palavras do dicionário do usuário (filtro + paginação) |
voicevox_add_user_dictionary_word | Adicione uma palavra (a pronúncia aceita notação de acento inline) |
voicevox_update_user_dictionary_word | Atualize uma palavra (campos omitidos mantêm seu valor) |
voicevox_delete_user_dictionary_word | Exclua uma palavra por UUID |
voicevox_add_user_dictionary_words | Adicione várias palavras de uma vez |
voicevox_update_user_dictionary_words | Atualize várias palavras de uma vez |
Qualquer ferramenta pode ser desativada individualmente com --disable-tools / VOICEVOX_DISABLED_TOOLS, ou por grupo com --disable-groups / VOICEVOX_DISABLED_GROUPS.
Configuração
Variáveis de Ambiente
Configurações do VOICEVOX
| Variável | Descrição | Padrão |
|---|---|---|
VOICEVOX_URL | URL do Engine | http://localhost:50021 |
VOICEVOX_DEFAULT_SPEAKER | ID do falante padrão | 1 |
VOICEVOX_DEFAULT_SPEED_SCALE | Velocidade de reprodução | 1.0 |
VOICEVOX_RETRY_COUNT | Tentativas para requisições de API com falha (0 desativa) | 2 |
VOICEVOX_RETRY_DELAY_MS | Atraso inicial de tentativa em ms (backoff exponencial) | 250 |
VOICEVOX_TIMEOUT_MS | Timeout para uma única requisição de API do VOICEVOX em ms. Aumente para textos longos ou engine lento | 30000 |
Opções de Reprodução
| Variável | Descrição | Padrão |
|---|---|---|
VOICEVOX_USE_STREAMING | Reprodução em streaming (requer ffplay) | false |
VOICEVOX_DEFAULT_POST_PHONEME_LENGTH | Silêncio final por segmento em segundos. Aumente para uma pausa mais longa entre segmentos na fila (também protege o final da fala de ser cortado com reprodução em streaming) | padrão do engine |
VOICEVOX_DEFAULT_IMMEDIATE | Reprodução imediata | true |
VOICEVOX_DEFAULT_WAIT_FOR_START | Aguardar início da reprodução | false |
VOICEVOX_DEFAULT_WAIT_FOR_END | Aguardar fim da reprodução | false |
Configurações de Restrição
Restrinja a IA de especificar certas opções.
| Variável | Descrição |
|---|---|
VOICEVOX_RESTRICT_IMMEDIATE | Restringir opção immediate |
VOICEVOX_RESTRICT_WAIT_FOR_START | Restringir opção waitForStart |
VOICEVOX_RESTRICT_WAIT_FOR_END | Restringir opção waitForEnd |
Desativar Ferramentas
# 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 | Ferramentas |
|---|---|
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 (ferramentas de interface de Apps MCP) |
Configurações do Player na Interface
| Variável | Descrição | Padrão |
|---|---|---|
VOICEVOX_PLAYER_DOMAIN | Domínio do widget para o player de UI (obrigatório para ChatGPT, ex.: https://your-app.onrender.com) | (não definido) |
VOICEVOX_AUTO_PLAY | Reproduzir áudio automaticamente no player de UI | true |
VOICEVOX_PLAYER_EXPORT_ENABLED | Habilitar exportação de faixas (download) no player de UI (false para desabilitar) | true |
VOICEVOX_PLAYER_EXPORT_DIR | Diretório de saída padrão para faixas exportadas (também usado como fallback quando o seletor de pasta não está disponível) | ./voicevox-player-exports |
VOICEVOX_PLAYER_CACHE_DIR | Diretório para arquivos de cache do player (*.txt) e arquivo de estado padrão do player | ./.voicevox-player-cache |
VOICEVOX_PLAYER_AUDIO_CACHE_ENABLED | Habilitar cache de áudio persistente em disco (false desabilita leituras/gravações de cache em disco) | true |
VOICEVOX_PLAYER_AUDIO_CACHE_TTL_DAYS | Retenção do cache de áudio em dias (0: desabilita cache em disco, -1: sem limpeza por TTL) | 30 |
VOICEVOX_PLAYER_AUDIO_CACHE_MAX_MB | Limite de tamanho do cache de áudio em MB (0: desabilita cache em disco, -1: ilimitado) | 512 |
VOICEVOX_PLAYER_STATE_FILE | Caminho do JSON de estado persistido do player | <VOICEVOX_PLAYER_CACHE_DIR>/player-state.json |
Configurações de Saída de Arquivos
| Variável | Descrição | Padrão |
|---|---|---|
VOICEVOX_ALLOWED_OUTPUT_DIRS | Diretórios separados por vírgula nos quais as ferramentas de escrita de arquivos (voicevox_synthesize_file, exportação de faixas do player) podem gravar. Caminhos fora deles são rejeitados com erro. Não definido significa sem restrição — recomendado definir quando o servidor está exposto via HTTP | (não definido) |
Configurações do Servidor
| Variável | Descrição | Padrão |
|---|---|---|
MCP_HTTP_MODE | Habilitar modo HTTP | false |
MCP_HTTP_PORT | Porta HTTP | 3000 |
MCP_HTTP_HOST | Host HTTP | 0.0.0.0 |
MCP_ALLOWED_HOSTS | Hosts permitidos (separados por vírgula) | localhost,127.0.0.1,[::1] |
MCP_ALLOWED_ORIGINS | Origens permitidas (separadas por vírgula) | http://localhost,http://127.0.0.1,... |
MCP_API_KEY | Chave de API obrigatória para /mcp (enviada via X-API-Key ou Authorization: Bearer) | (não definido) |
Argumentos de Linha de Comando
Os argumentos de linha de comando têm prioridade sobre as variáveis de ambiente.
A lista completa e atualizada de opções está sempre disponível via 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 | Descrição |
|---|---|
--help, -h | Mostrar ajuda |
--version, -v | Mostrar versão |
--init | Gerar .voicevoxrc.json com configurações padrão |
--config <path> | Caminho para o arquivo de configuração |
--url <value> | URL do VOICEVOX Engine |
--speaker <value> | ID do locutor padrão |
--speed <value> | Velocidade de reprodução |
--use-streaming / --no-use-streaming | Reprodução em streaming |
--post-phoneme-length <sec> | Silêncio final por segmento (pausa entre segmentos enfileirados) |
--immediate / --no-immediate | Reprodução imediata |
--wait-for-start / --no-wait-for-start | Aguardar início |
--wait-for-end / --no-wait-for-end | Aguardar fim |
--restrict-immediate | Restringir imediato |
--restrict-wait-for-start | Restringir waitForStart |
--restrict-wait-for-end | Restringir waitForEnd |
--allowed-output-dirs <dirs> | Diretórios nos quais as ferramentas de escrita de arquivos podem gravar (separados por vírgula; não definido = sem restrição) |
--disable-tools <tools> | Desabilitar ferramentas (nomes de ferramentas separados por vírgula) |
--disable-groups <groups> | Desabilitar grupos de ferramentas: player, dictionary, file, apps |
--auto-play / --no-auto-play | Reprodução automática no player de UI |
--player-export / --no-player-export | Habilitar/desabilitar exportação de faixas (download) no player de UI |
--player-export-dir <dir> | Diretório de saída padrão para faixas exportadas |
--player-cache-dir <dir> | Diretório de cache do player |
--player-state-file <path> | Caminho do arquivo de estado persistido do player |
--player-audio-cache / --no-player-audio-cache | Habilitar/desabilitar cache de áudio em disco para o player |
--player-audio-cache-ttl-days <days> | Dias de retenção do cache de áudio (0: desabilitar, -1: sem limpeza por TTL) |
--player-audio-cache-max-mb <mb> | Limite de tamanho do cache de áudio em MB (0: desabilitar, -1: ilimitado) |
--http | Modo HTTP |
--port <value> | Porta HTTP |
--host <value> | Host HTTP |
--allowed-hosts <hosts> | Hosts permitidos (separados por vírgula) |
--allowed-origins <origins> | Origens permitidas (separadas por vírgula) |
--api-key <key> | Chave de API obrigatória para /mcp |
Arquivo de Configuração (.voicevoxrc.json)
Você pode usar um arquivo de configuração JSON em vez de (ou em adição a) variáveis de ambiente e argumentos de CLI. Isso é útil quando você tem muitas configurações para definir.
Ordem de prioridade: Argumentos de CLI > Variáveis de ambiente > Arquivo de configuração > Padrões
Gerar um arquivo de configuração
npx @kajidog/mcp-tts-voicevox --init
Isso cria .voicevoxrc.json no diretório atual com todas as configurações padrão. Edite conforme necessário.
Usar um caminho personalizado para o arquivo de configuração
npx @kajidog/mcp-tts-voicevox --config ./my-config.json
Ou via variável de ambiente:
VOICEVOX_CONFIG=./my-config.json npx @kajidog/mcp-tts-voicevox
Exemplo 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"]
}
As chaves podem ser escritas em kebab-case (use-streaming), camelCase (useStreaming) ou nomes internos de chaves (defaultSpeaker). Se .voicevoxrc.json existir no diretório atual, ele é carregado automaticamente.
Modo HTTP
Para conexões 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
Configuração do Claude Desktop (usando mcp-remote):
{
"mcpServers": {
"tts-mcp-proxy": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
}
}
}
Configurações de Locutor por Projeto
Com o Claude Code, você pode configurar diferentes locutores padrão por projeto usando cabeçalhos personalizados em .mcp.json:
| Cabeçalho | Descrição |
|---|---|
X-Voicevox-Speaker | ID do locutor padrão para este projeto |
X-API-Key | Chave de API quando MCP_API_KEY está configurado |
Exemplo de .mcp.json:
{
"mcpServers": {
"tts": {
"type": "http",
"url": "http://localhost:3000/mcp",
"headers": {
"X-Voicevox-Speaker": "113",
"X-API-Key": "your-api-key"
}
}
}
}
Isso permite que cada projeto use um personagem de voz diferente automaticamente.
Ordem de prioridade:
- Parâmetro explícito
speakerna chamada da ferramenta (maior) - Padrão do projeto do cabeçalho
X-Voicevox-Speaker - Configuração global
VOICEVOX_DEFAULT_SPEAKER(menor)
Conexão WSL para Host Windows
Conectando do WSL a um servidor MCP em execução no Windows:
1. Obter o IP do Host Windows a partir do 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 o Servidor no Windows
Adicione o IP do gateway WSL a MCP_ALLOWED_HOSTS para permitir acesso a partir do WSL:
$env:MCP_HTTP_MODE='true'
$env:MCP_ALLOWED_HOSTS='localhost,127.0.0.1,172.29.176.1'
npx @kajidog/mcp-tts-voicevox
Ou com argumentos de CLI:
npx @kajidog/mcp-tts-voicevox --http --allowed-hosts "localhost,127.0.0.1,172.29.176.1"
3. Configuração do WSL (.mcp.json)
{
"mcpServers": {
"tts": {
"type": "http",
"url": "http://172.29.176.1:3000/mcp"
}
}
}
⚠️ Dentro do WSL,
localhostrefere-se ao próprio WSL. Use o IP do gateway WSL para acessar o host Windows.
Usando com ChatGPT
Para usar com o ChatGPT, implante o servidor MCP em modo HTTP na nuvem com acesso a um VOICEVOX Engine.
1. Implantar na Nuvem
Implante com Docker no Render, Railway, etc. (Dockerfile incluído).
2. Configurar o VOICEVOX Engine
Execute o VOICEVOX Engine localmente e exponha-o via ngrok, ou implante-o junto com o servidor MCP.
3. Configurar Variáveis de Ambiente
| Variável | Exemplo | Descrição |
|---|---|---|
VOICEVOX_URL | https://xxxx.ngrok-free.app | URL do VOICEVOX Engine |
MCP_HTTP_MODE | true | Habilitar modo HTTP |
MCP_ALLOWED_HOSTS | your-app.onrender.com | Hostname implantado |
VOICEVOX_PLAYER_DOMAIN | https://your-app.onrender.com | Domínio do widget para o player de UI (obrigatório para ChatGPT) |
VOICEVOX_DISABLED_TOOLS | speak | Desabilitar reprodução no servidor (sem dispositivo de áudio) |
VOICEVOX_PLAYER_EXPORT_ENABLED | false | Desabilitar recurso de exportação (arquivos não podem ser baixados da nuvem) |
4. Adicionar Conector no ChatGPT
Vá para Configurações do ChatGPT → Conectores → Adicionar URL do servidor MCP (https://your-app.onrender.com/mcp).
Usando com Claude Web
Os passos básicos são os mesmos do ChatGPT, mas o valor de VOICEVOX_PLAYER_DOMAIN é diferente.
O Claude Web exige que ui.domain seja um domínio dedicado baseado em hash. Calcule-o com o seguinte comando:
node -e "console.log(require('crypto').createHash('sha256').update('Your MCP server URL').digest('hex').slice(0,32)+'.claudemcpcontent.com')"
Exemplo: Se a URL do seu servidor MCP é 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
Defina esse valor de saída como VOICEVOX_PLAYER_DOMAIN.
Nota: Como o ChatGPT e o Claude Web exigem valores diferentes de
VOICEVOX_PLAYER_DOMAIN, uma única instância não pode atender ambos os clientes simultaneamente. Implante instâncias separadas para cada um, ou alterne a variável de ambiente dependendo do cliente alvo.
Solução de Problemas
O áudio não está reproduzindo
1. Verifique se o VOICEVOX Engine está em execução
curl http://localhost:50021/speakers
2. Verifique as ferramentas de reprodução específicas da plataforma
| SO | Ferramenta Necessária |
|---|---|
| Linux | Uma de aplay, paplay, play, ffplay |
| macOS | afplay (pré-instalado) |
| Windows | PowerShell (pré-instalado) |
Não reconhecido pelo cliente MCP
- Verifique a instalação do pacote:
npm list -g @kajidog/mcp-tts-voicevox - Verifique a sintaxe JSON no arquivo de configuração
- Reinicie o cliente
Estrutura do Pacote
| Pacote | Descrição |
|---|---|
@kajidog/mcp-tts-voicevox | Servidor MCP (apps/mcp-tts) |
@kajidog/voicevox-client | Biblioteca cliente VOICEVOX de uso geral (pode ser usada de forma independente) |
@kajidog/mcp-core | Infraestrutura MCP compartilhada (esquema de configuração, inicializador HTTP/stdio). Não publicada — empacotada no servidor |
@kajidog/player-ui | Interface de player de áudio baseada em React, empacotada em um único arquivo HTML. Não publicada |
Informações para Desenvolvedores
Configuração
git clone https://github.com/kajidog/mcp-tts-voicevox.git
cd mcp-tts-voicevox
pnpm install
Comandos
O gerenciador de pacotes é pnpm (npm / yarn não são suportados).
| Comando | Descrição |
|---|---|
pnpm build | Compilar todos os pacotes |
pnpm test | Executar testes |
pnpm lint | Executar lint (uma única passada do Biome em todo o workspace) |
pnpm typecheck | Verificação de tipos em todos os pacotes |
pnpm changeset | Adicionar um changeset para uma alteração visível ao usuário |
Os servidores de desenvolvimento ficam no pacote do servidor, então execute-os com um filtro:
| Comando | Descrição |
|---|---|
pnpm --filter @kajidog/mcp-tts-voicevox dev | Iniciar servidor de desenvolvimento (stdio) |
pnpm --filter @kajidog/mcp-tts-voicevox dev:http | Iniciar servidor de desenvolvimento em modo HTTP |
pnpm --filter @kajidog/mcp-tts-voicevox dev:bun | Iniciar servidor de desenvolvimento com Bun |
pnpm --filter @kajidog/mcp-tts-voicevox dev:bun:http | Iniciar servidor de desenvolvimento HTTP com Bun |
Licença
ISC





