TTS MCP

From text.To ready-made speech.

Give your agent Arabic or English text and get back a link to an mp3, ogg or wav file, ready to publish or use in a video.

Each bar is one letter of the Arabic headline, right to left, the way it is read.
  • 5 MCP tools
  • Piper on CPU
  • Multilingual ElevenLabs voices
  • Long texts tracked as jobs

Written text.Speech by link.

  • MSA Arabic, Egyptian and English
  • Fast local or high-quality voices
  • Pauses, speed and automatic diacritics

Local voices run on our server without sending the text to any third party; the more natural hq voices go through the ZAD gateway.

All your texts,as speech.

Short texts return immediately; long ones (up to 20,000 characters) are tracked with a job id, and the file is deleted automatically after a few days.

Synthesis

synthesize: text, voice, format and speed, and it returns a download link for the file.

Voices

list_voices: local Arabic and English voices, and hq voices that speak Egyptian, MSA and English.

Jobs

tts_get_job and tts_cancel_job: track or stop long-text synthesis.

How it works.

  1. Connect an MCP client

    Use the service URL and your key.

  2. Ask for the audio

    “Turn this paragraph into Egyptian speech, mp3”

  3. Get the link

    A direct link to the audio file, valid for several days.

Connect

Transport
Streamable HTTP
URL
https://tts-mcp.marsaplatform.com/mcp
Authorization
Bearer YOUR_API_KEY

Every request needs Authorization: Bearer YOUR_API_KEY.

URLhttps://tts-mcp.marsaplatform.com/mcp
Claude Code (CLI)
Terminal
claude mcp add --transport http tts https://tts-mcp.marsaplatform.com/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"
Cursor ~/.cursor/mcp.json
mcp.json
{
  "mcpServers": {
    "tts": {
      "url": "https://tts-mcp.marsaplatform.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
VS Code .vscode/mcp.json
mcp.json
{
  "servers": {
    "tts": {
      "type": "http",
      "url": "https://tts-mcp.marsaplatform.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:tts-key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "tts-key",
      "description": "TTS MCP API key",
      "password": true
    }
  ]
}

VS Code asks for the key once and stores it securely.

Claude Desktop claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "tts": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://tts-mcp.marsaplatform.com/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Claude Desktop reaches remote servers through mcp-remote, which needs Node.js. Restart the app after editing.

Quick test with curl
Terminal
curl -s -X POST https://tts-mcp.marsaplatform.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}'

With a valid key you get the initialize result. Without a key you get 401.

Tools

The original page states: “5 MCP tools”. The full list is generated from tools/list once a read key is configured for this site; until then any MCP client shows it after you connect.

FAQ

What is the difference between a read and a write key?

read covers status, voices and jobs only; write adds synthesis and job cancellation.

Maximum length?

Up to 20,000 characters per request; up to 1,500 characters return in the same response.

How do I get a key?

Request an access key from the key request page (Arabic form).

401 Unauthorized

The real response for a request without a key:

HTTP/2 401 · application/json
WWW-Authenticate: Bearer realm="tts-mcp", error="invalid_token"

{"error": "unauthorized"}

Send the header exactly as Authorization: Bearer YOUR_API_KEY.