LabscoMCP early access ↗
bnomeiMCP SERVER

Isimud

Lets an agent speak out loud on macOS: a menu bar app and local MCP server that resolves a named voice, synthesises through Apple, OpenAI or Google, and plays it through one serialized queue.

by bnomei ↗Speech Synthesis & TranscriptionCommunity

LABSCO SUMMARY

`default_voice` is a voice name, not a provider name.

That is the config mistake the project calls out explicitly, and it is worth knowing before you spend an evening on it: to make OpenAI your default you name a voice block whose provider is OpenAI, not the provider itself. Past that, the design is sensible — agents never see provider voice ids, and the local-only binding plus optional bearer token keeps the speaker on your desk from being addressable by anything else.

What it is

A macOS menu bar app that is also a Streamable HTTP MCP server. An agent sends text; isimud picks the provider behind the named voice, generates the audio and plays it — with a queue, so two agents talking at once do not talk over each other.

What you get

  • isimud.speak — text plus a voice name and rate; it returns immediately with a job id and the queue depth, or blocks until the utterance finishes if you ask it to wait
  • isimud.status — what the server is doing right now
  • isimud.list_voices — the voices available, including the built-in OpenAI voice ids
  • Named voices as the contract: agents ask for narrator or default, and the provider-specific voice id stays in your config
  • Three providers — Apple through the system say command with no credentials at all, OpenAI, and Google Cloud Text-to-Speech
  • Automatic fallback when a voice's provider is unavailable, and a failure event when none is
  • A menu bar indicator that pulses while something is being spoken, or --headless for server-only use

Requirements

macOS — the packaged app declares macOS 12.0 or newer — and Rust 1.89 or newer with Cargo to cargo install isimud-text-to-speech. Your MCP client must speak streamable HTTP; the server listens on http://127.0.0.1:3654/mcp and binds loopback only, rejecting any non-loopback address at startup. Apple voices need no key; OpenAI and Google read OPENAI_API_KEY and GOOGLE_API_KEY, or their keys from the config file. Setting ISIMUD_AUTH_TOKEN turns on bearer auth, and requests without the exact token are refused. MIT licensed.

Setup effort

One command — cargo install isimud-text-to-speech