Add Kurdish Voice to Claude
Claude cannot speak Kurdish out of the box. The KurdishTTS MCP server fixes that: once connected, Claude (and any MCP-capable AI tool) can turn Sorani, Kurmanji or Badini text into speech in any of 891 voices, and transcribe Sorani or Kurmanji audio back to text. Three of its six tools need no API key at all, so you can connect and browse the voice catalog before signing up. Setup takes about five minutes.
Step 1 — Get your API key (free)
Create a free account at kurdishtts.com and open Settings → API. Generate a TTS key (for speech) and an STT key (for transcription) — they are separate keys. The free tier includes 20,000 characters of speech and 120 minutes of transcription per month.
In the configs below, join the two keys with a colon: Bearer YOUR_TTS_KEY:YOUR_STT_KEY. If you only need speech, a single TTS key works too: Bearer YOUR_TTS_KEY.
Step 2 — Connect the MCP server
Claude Code (terminal) — one command:
claude mcp add --transport http kurdish-tts \
https://www.kurdishtts.com/api/mcp \
--header "Authorization: Bearer YOUR_TTS_KEY:YOUR_STT_KEY"Claude Desktop — add this to claude_desktop_config.json (Settings → Developer → Edit Config). Desktop config runs local commands, so the remote server is bridged with mcp-remote:
{
"mcpServers": {
"kurdish-tts": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://www.kurdishtts.com/api/mcp",
"--header", "Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer YOUR_TTS_KEY:YOUR_STT_KEY"
}
}
}
}Cursor — add to .cursor/mcp.json (supports remote URLs directly):
{
"mcpServers": {
"kurdish-tts": {
"url": "https://www.kurdishtts.com/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_TTS_KEY:YOUR_STT_KEY"
}
}
}
}Step 3 — Ask Claude to speak Kurdish
Restart your client, then try:
- “Use kurdish-tts to say سڵاو، چۆنی؟ in a Sorani voice.”
- “List the available Kurmanji voices.”
- “Transcribe this Kurdish audio file and translate it to English.”
Claude picks the right tool automatically: synthesize_speech, transcribe_audio, start_streaming_transcription, list_voices, list_dialects or get_plan.
list_dialects, list_voices and get_plan work without an API key, so you can browse the catalog and the plan ladder before signing up. Only the three billed tools need a key.
Good to know
- Usage is billed to your plan exactly like the website and HTTP API — the free tier is enough to evaluate; paid plans raise the limits.
- A voice id belongs to one catalog. Pass the same
model_versiontolist_voicesandsynthesize_speech— both default tov3— and never invent an id. - On the free tier, use the v3 catalog voices
sorani_85,sorani_214,kurmanji_6orkurmanji_12(on v4:sorani_1,sorani_986,kurmanji_236,kurmanji_233), plusbadini_story_mandbadini_narrator_fonv5— the rest ofv5, the other four Badini voices and the Cast and Studio voices require a paid plan. Ask Claude to runget_planto see exactly what your key may use. - If you don’t know which dialect a recording is in, ask for
dialect: "auto". Nothing detects the dialect for you, and transcribing Sorani audio as Kurmanji returns fluent but wrong text with no error.autoruns both and returns both so Claude can pick the right one — it bills the audio twice. Free plans also cut the returned transcript at 500 characters; the full audio is still transcribed and billed. - Audio comes back as
mp3by default. That is deliberate — tool-result audio is base64 inside the conversation, and mp3 is about 7.5× smaller than wav (opus ~11.5×), which is what allows 4,000 characters per call instead of 600. Ask forformat: "wav"only if you need uncompressed audio. - MCP calls are capped at 4,000 characters per synthesis (600 with
format: "wav", 500 on free plans) and 3MB of decoded audio per transcription — that’s ~90s of 16kHz WAV but ~25 minutes of 64kbps MP3, so send compressed audio. For longer jobs use the HTTP API directly. - Building a live voice agent? MCP can’t stream — a tool result is one message, so Claude waits for the whole clip. For real-time speech call
POST /api/tts-streamdirectly withstream_format: "sse"(first audio in about a second). And notestart_streaming_transcriptionis for listening (live mic → text), not for speaking. - The server is listed in the official MCP registry as
com.kurdishtts/kurdish-tts-stt.
Next: call the TTS API from Python or JavaScript or transcribe Kurdish audio programmatically.