Un serveur MCP de synthèse vocale : faites parler votre agent IA
Les agents de code et les assistants IA travaillent pendant des minutes, et vous finissez par surveiller la fenêtre pour voir s’ils ont fini. Avec un petit serveur MCP, l’agent le dit simplement : « Le build est terminé, deux tests échouent. »
Le Model Context Protocol (MCP) est le standard ouvert par lequel Claude Code, Claude Desktop, Cursor et d’autres clients appellent des outils. Ce guide crée un outil speak en une trentaine de lignes de Python. Il lit le texte hors ligne avec le moteur gratuit SuperClonica et n’importe laquelle de ses voix, ou via l’API vocale de SuperClonica sur une machine où vous préférez ne pas faire tourner de modèle.
Installation
Il faut Python 3.10 ou plus récent. Installez le SDK Python de MCP et le moteur :
pip install mcp superclonica-cpu
Au premier lancement, le moteur télécharge le modèle Supertonic 3, environ 400 Mo, puis fonctionne hors ligne sur un processeur ordinaire. Sous Linux, le serveur joue le son avec aplay d’alsa-utils ; Windows et macOS n’ont besoin de rien de plus.
Le serveur
Enregistrez ceci sous tts_mcp.py. Il déclare un outil, speak, qui lit le texte, le joue sur vos haut-parleurs et indique à l’agent que c’est fait :
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()Le modèle se charge au premier appel : l’agent démarre vite et seule la première phrase prend quelques secondes de plus. Le code vise la version 2 du paquet mcp, où FastMCP a été renommé MCPServer ; en version 1, importez plutôt FastMCP depuis mcp.server.fastmcp. L’agent décide quand appeler l’outil d’après sa docstring, décrivez-y donc l’usage voulu.
Le brancher à Claude Code, Claude Desktop ou Cursor
Dans Claude Code, ajoutez le serveur en une commande :
claude mcp add speak -- python /full/path/to/tts_mcp.py
Dans Claude Desktop, ajoutez-le à claude_desktop_config.json ; Cursor lit le même bloc mcpServers dans son mcp.json. Indiquez le chemin complet du Python où les paquets sont installés :
{
"mcpServers": {
"speak": {
"command": "/full/path/to/python",
"args": ["/full/path/to/tts_mcp.py"],
"env": {"TTS_VOICE": "F1"}
}
}
}Dites ensuite à l’agent quand parler, par exemple dans les instructions du projet : « Quand tu termines une tâche ou as besoin de ma réponse, appelle speak avec une phrase courte. »
Le même outil via l’API
Sur un portable où vous préférez ne pas garder un modèle de 400 Mo, faites lire le texte par l’API vocale de SuperClonica : dans speak, remplacez les deux lignes de synthèse par un appel à cette fonction et définissez SUPERCLONICA_KEY et 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)Chaque voix du catalogue fonctionne avec l’ID de sa page, dans toute offre. La clé gratuite donne une minute d’audio par jour, largement assez pour des messages d’état d’une phrase.
Choisir la voix
TTS_VOICE accepte l’une des dix voix de base, M1 à M5 et F1 à F5, ou le chemin d’un fichier de voix du catalogue SuperClonica : un narrateur posé, l’ordinateur d’un vaisseau ou un personnage de jeu. Les voix gratuites du catalogue se téléchargent sans compte. Écoutez d’abord une voix et faites lire une phrase test sur sa page.