Un servidor MCP de texto a voz: que tu agente de IA hable en voz alta
Los agentes de código y los asistentes de IA trabajan durante minutos y acabas vigilando la ventana para ver si han terminado. Con un pequeño servidor MCP, el agente simplemente lo dice: «La compilación terminó, fallan dos pruebas».
El Model Context Protocol (MCP) es el estándar abierto con el que Claude Code, Claude Desktop, Cursor y otros clientes llaman a herramientas. Esta guía crea una herramienta speak en unas 30 líneas de Python. Pone voz al texto sin conexión con el motor gratuito de SuperClonica y cualquiera de sus voces, o mediante la API de voz de SuperClonica en un equipo donde prefieras no ejecutar un modelo.
Instalación
Necesitas Python 3.10 o posterior. Instala el SDK de MCP para Python y el motor:
pip install mcp superclonica-cpu
En el primer arranque el motor descarga el modelo Supertonic 3, unos 400 MB, y después funciona sin conexión en una CPU normal. En Linux el servidor reproduce el sonido con aplay de alsa-utils; Windows y macOS no necesitan nada más.
El servidor
Guárdalo como tts_mcp.py. Registra una herramienta, speak, que genera la voz, la reproduce por tus altavoces y avisa al agente de que ha terminado:
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()El modelo se carga en la primera llamada, así que el agente arranca rápido y solo la primera frase tarda unos segundos más. El código es para la versión 2 del paquete mcp, donde FastMCP pasó a llamarse MCPServer; en la versión 1 importa FastMCP desde mcp.server.fastmcp. El agente decide cuándo llamar a la herramienta por su docstring, así que describe ahí el uso que quieres.
Conéctalo a Claude Code, Claude Desktop o Cursor
En Claude Code, añade el servidor con un comando:
claude mcp add speak -- python /full/path/to/tts_mcp.py
En Claude Desktop, añádelo a claude_desktop_config.json; Cursor lee el mismo bloque mcpServers de su mcp.json. Usa la ruta completa al Python que tiene los paquetes instalados:
{
"mcpServers": {
"speak": {
"command": "/full/path/to/python",
"args": ["/full/path/to/tts_mcp.py"],
"env": {"TTS_VOICE": "F1"}
}
}
}Después dile al agente cuándo hablar, por ejemplo en las instrucciones del proyecto: «Cuando termines una tarea o necesites mi respuesta, llama a speak con una frase corta».
La misma herramienta por la API
En un portátil donde prefieras no guardar un modelo de 400 MB, genera la voz con la API de SuperClonica: en speak, sustituye las dos líneas de síntesis por una llamada a esta función y define SUPERCLONICA_KEY y 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)Todas las voces del catálogo funcionan con el ID de su página, en cualquier plan. La clave gratuita da un minuto de audio al día, de sobra para mensajes de estado de una frase.
Elige la voz
TTS_VOICE admite una de las diez voces de serie, M1 a M5 y F1 a F5, o la ruta de un archivo de voz del catálogo de SuperClonica: un narrador sereno, el ordenador de una nave o un personaje de videojuego. Las voces gratuitas del catálogo se descargan sin cuenta. Escucha una voz y genera una frase de prueba en su página primero.