GUIA

Um servidor MCP de texto para fala: deixe seu agente de IA falar

Agentes de código e assistentes de IA trabalham por minutos, e você fica olhando a janela para ver se terminaram. Com um pequeno servidor MCP, o agente simplesmente diz: «O build terminou, dois testes falharam».

O Model Context Protocol (MCP) é o padrão aberto que Claude Code, Claude Desktop, Cursor e outros clientes usam para chamar ferramentas. Este guia cria uma ferramenta speak em cerca de 30 linhas de Python. Ela gera a voz offline com o motor gratuito da SuperClonica e qualquer uma das suas vozes, ou pela API de voz da SuperClonica numa máquina onde você prefere não rodar um modelo.

Instalação

Você precisa de Python 3.10 ou mais novo. Instale o SDK de MCP para Python e o motor:

pip install mcp superclonica-cpu

Na primeira execução o motor baixa o modelo Supertonic 3, cerca de 400 MB, e depois roda offline num processador comum. No Linux o servidor toca o som com aplay do alsa-utils; Windows e macOS não precisam de mais nada.

O servidor

Salve como tts_mcp.py. Ele registra uma ferramenta, speak, que gera a voz, toca nos seus alto-falantes e avisa o agente que terminou:

import os, subprocess, sys, tempfile
from mcp.server.mcpserver import MCPServer
from superclonica import Superclonica

VOICE = os.environ.get("TTS_VOICE", "F1")  # M1..M5, F1..F5 or a voice file from the catalog
server = MCPServer("speak")
tts = None

def play(path):
    if sys.platform == "win32":
        import winsound
        winsound.PlaySound(path, winsound.SND_FILENAME)
    elif sys.platform == "darwin":
        subprocess.run(["afplay", path], check=True)
    else:
        subprocess.run(["aplay", "-q", path], check=True)

@server.tool()
def speak(text: str, language: str = "en") -> str:
    """Say a short message out loud to the user, for example when a long task is done."""
    global tts
    tts = tts or Superclonica()
    audio, _ = tts.synthesize(text[:500], voice=VOICE, lang=language)
    path = os.path.join(tempfile.gettempdir(), "mcp-speak.wav")
    tts.save(path, audio)
    play(path)
    return "spoken"

if __name__ == "__main__":
    server.run()

O modelo carrega na primeira chamada, então o agente inicia rápido e só a primeira frase demora alguns segundos a mais. O código é para a versão 2 do pacote mcp, em que FastMCP passou a se chamar MCPServer; na versão 1, importe FastMCP de mcp.server.fastmcp. O agente decide quando chamar a ferramenta pela docstring, então descreva ali o uso que você quer.

Conecte ao Claude Code, Claude Desktop ou Cursor

No Claude Code, adicione o servidor com um comando:

claude mcp add speak -- python /full/path/to/tts_mcp.py

No Claude Desktop, adicione em claude_desktop_config.json; o Cursor lê o mesmo bloco mcpServers do seu mcp.json. Use o caminho completo do Python que tem os pacotes instalados:

{
  "mcpServers": {
    "speak": {
      "command": "/full/path/to/python",
      "args": ["/full/path/to/tts_mcp.py"],
      "env": {"TTS_VOICE": "F1"}
    }
  }
}

Depois diga ao agente quando falar, por exemplo nas instruções do projeto: «Quando terminar uma tarefa ou precisar da minha resposta, chame speak com uma frase curta».

A mesma ferramenta pela API

Num notebook onde você prefere não guardar um modelo de 400 MB, gere a voz pela API da SuperClonica: em speak, troque as duas linhas de síntese por uma chamada a esta função e defina SUPERCLONICA_KEY e VOICE_ID.

import os, requests

API = "https://superclonica.com/api/v1/speech"
VOICE_ID = os.environ["VOICE_ID"]  # the ID on the page of a catalog voice

def voice_to_file(text, language, path):
    answer = requests.post(API, timeout=120,
                           headers={"Authorization": "Bearer " + os.environ["SUPERCLONICA_KEY"]},
                           json={"text": text, "voice": VOICE_ID, "language": language, "format": "wav"})
    answer.raise_for_status()
    with open(path, "wb") as file:
        file.write(answer.content)

Toda voz do catálogo funciona pelo ID da página dela, em qualquer plano. A chave gratuita dá um minuto de áudio por dia, de sobra para mensagens de status de uma frase.

Escolha a voz

TTS_VOICE aceita uma das dez vozes padrão, M1 a M5 e F1 a F5, ou o caminho de um arquivo de voz do catálogo da SuperClonica: um narrador calmo, o computador de uma nave ou um personagem de jogo. As vozes gratuitas do catálogo são baixadas sem conta. Ouça uma voz e gere uma frase de teste na página dela antes.