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_version to list_voices and synthesize_speech — both default to v3 — and never invent an id.
  • On the free tier, use the v3 catalog voices sorani_85, sorani_214, kurmanji_6 or kurmanji_12 (on v4: sorani_1, sorani_986, kurmanji_236, kurmanji_233), plus badini_story_m and badini_narrator_f on v5 — the rest of v5, the other four Badini voices and the Cast and Studio voices require a paid plan. Ask Claude to run get_plan to 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. auto runs 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 mp3 by 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 for format: "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-stream directly with stream_format: "sse" (first audio in about a second). And note start_streaming_transcription is 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.