Skip to main content

gnani-mcp

Official Gnani AI MCP server. Exposes Gnani Speech-to-Text (Prisma v2.5 / v3.0), Text-to-Speech (Timbre v2.5 / v3.0), and Voice Clone APIs as first-class MCP tools, so any MCP-aware client (Claude Desktop, Claude Code, Cursor, Windsurf, Zed) can call them with zero boilerplate.

Cross-platform Python package: macOS, Windows, and Linux (Python 3.10+).


Quickstart

1. Get your API key

Sign up or log in at dashboard.gnani.ai and copy your API key.

2. Add to your MCP client

Paste this into your MCP config JSON:

{
  "mcpServers": {
    "gnani": {
      "command": "uvx",
      "args": ["gnani-mcp"],
      "env": {
        "GNANI_API_KEY": "your-api-key"
      }
    }
  }
}

Replace your-api-key with your actual API key.

If you have installed via pip install gnani-mcp, use the console script directly:

{
  "mcpServers": {
    "gnani": {
      "command": "gnani-mcp",
      "env": {
        "GNANI_API_KEY": "your-api-key"
      }
    }
  }
}

3. Config file locations

Client Config path
Cursor ~/.cursor/mcp.json (macOS/Linux) · %USERPROFILE%\.cursor\mcp.json (Windows)
Claude Desktop ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Claude Code claude mcp add gnani -- uvx gnani-mcp (then set GNANI_API_KEY env var)
Windsurf Cascade settings → MCP servers
Zed settings.json → context_servers

Alternative: credentials file

Instead of setting GNANI_API_KEY in the JSON config, you can store it in ~/.gnani/credentials:

api_key = your-api-key

The server checks GNANI_API_KEY env var first, then falls back to ~/.gnani/credentials.


Install

# Option A: run directly (no install needed)
uvx gnani-mcp

# Option B: install globally
pip install gnani-mcp

Tools

Tool What it does
gnani_stt_transcribe Transcribe a short clip (≤ 30 s) in 10 Indian languages — WAV, MP3, OGG, FLAC, AAC, M4A. model: prisma-v2.5 (default) or prisma-v3.0
gnani_stt_batch_transcribe Transcribe long (up to 4 h) or remote audio: create → start → poll → fetch, in one call. Supports both models
gnani_stt_batch_list_jobs List Batch STT jobs (status filter + cursor pagination)
gnani_stt_batch_status / _get_transcripts / _cancel Check, download, or cancel an existing Batch job
gnani_tts_synthesize Synthesize speech. model: timbre-v2.5 (default, 42 voices) or timbre-v3.0 (13 voices, all 10 languages, inline audio tags)
gnani_tts_list_voices Browse the voice catalog for either TTS model (language, gender, persona, description)
gnani_vc_generate_embedding Extract a speaker embedding from a reference audio clip (step 1 of voice cloning)
gnani_vc_synthesize Synthesize speech in a cloned voice using a speaker embedding (step 2)

Choosing a model

Both new models are opt-in — omit model and behaviour is unchanged (Prisma v2.5 / Timbre v2.5).

Prisma v3.0 (model="prisma-v3.0") on gnani_stt_transcribe and gnani_stt_batch_transcribe:

  • language_code="indic-auto" lets the model identify the language, or pass 1–4 comma-separated codes ("hi-IN,en-IN") as hints. REST results include detected_language_code.
  • format adds codemix (English words stay Latin) and, on REST only, transliterate (Latin-letter output). When format is omitted v3.0 picks a style per request (digits for a single hi-IN/en-IN) — pass format explicitly to keep v2.5-style output.
  • Context hints: keyterms, topic, speaker_names, and (REST only) previous_text. On Batch only one of keyterms, topic, topic + keyterms, or speaker_names is accepted, and topic must be 30–1,600 characters.

Timbre v3.0 (model="timbre-v3.0") on gnani_tts_synthesize:

  • Voices are not shared between models: Shivani, Lakshmi, Kalpana, Chetana, Vasudha, Riyaa, Tarika (F); Avinash, Shubham, Prakash, Devansh, Yashraj, Harshad (M). Every voice speaks all 10 languages.
  • Inline audio tags in text: <laugh>, <giggle>, <sigh>, <exhales>, <sniffles>, <yawns>, <coughs>, <clears throat>, <whispers>, <shouting>, <excited>, <slow>, <pauses> (silence, never spoken). A tag applies until the next tag; tags are billed as characters. With v2.5 they are stripped, and the tool returns a warning.

Configuration

Env var Default Description
GNANI_API_KEY — Required. Your Gnani API key.
GNANI_API_BASE_URL https://api.vachana.ai Override for testing / staging.
GNANI_MCP_BASE_PATH ~/Desktop Directory where audio output files are saved.
GNANI_AUDIO_OUTPUT_MODE files files · resources · both

Supported Languages

STT (Prisma v2.5 / v3.0)

Language Code
Bengali bn-IN
English (India) en-IN
Gujarati gu-IN
Hindi hi-IN
Kannada kn-IN
Malayalam ml-IN
Marathi mr-IN
Punjabi pa-IN
Tamil ta-IN
Telugu te-IN

TTS (Timbre v2.5 / v3.0) — also supports Hinglish (hi-en) and auto

Timbre v2.5: 42 voices across all 10 Indian languages plus Hinglish, one preferred language each. Timbre v3.0: 13 voices that each speak all 10 languages. Use gnani_tts_list_voices (with model) to browse.


Voice Clone Workflow

# Step 1 — generate embedding from reference audio (do this once per voice)
embedding_result = gnani_vc_generate_embedding(audio_path="/path/to/reference.wav")
speaker_embedding = embedding_result["speaker_embedding"]

# Step 2 — synthesize with the cloned voice (reuse embedding as many times as needed)
audio_result = gnani_vc_synthesize(
    text="नमस्ते, आप कैसे हैं?",
    speaker_embedding=speaker_embedding,
)
print(audio_result["audio_file"])  # path to saved WAV file

Development

# Clone and set up
git clone https://github.com/Gnani-AI-Mintlify/gnani-mcp.git
cd gnani-mcp

uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"

# Run tests
pytest -q

# Run the MCP server locally
gnani-mcp

# Print client config JSON
gnani-mcp --print
gnani-mcp --api-key=your-key --print

License

MIT

Metadata

Release files for gnani-mcp 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gnani-mcp 0.2.0
File Size Uploaded Provenance Actions
gnani_mcp-0.2.0.tar.gz 40.2 kB With provenance Details for gnani_mcp-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for gnani-mcp 0.2.0
File Interpreter ABI Platform Actions
gnani_mcp-0.2.0-py3-none-any.whl Python 3 none any Details for gnani_mcp-0.2.0-py3-none-any.whl

Total release size: 86.8 kB

Release files / gnani_mcp-0.2.0.tar.gz

Download URL gnani_mcp-0.2.0.tar.gz
Size 40.2 kB
Tags Source
SHA-256 checksum
How to use checksums
ec41c4208c871edfdf57a47a9210ebcc0fc710d86ebcca7a7cf0f8316ec9e259
BLAKE2b-256 checksum
How to use checksums
0187dd8cefe9b374b3dcc583ad04fcf6f333049603cb1189d76301b1811dc8fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Release files / gnani_mcp-0.2.0-py3-none-any.whl

Download URL gnani_mcp-0.2.0-py3-none-any.whl
Size 46.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5db97c4f4850d2f3cbce0d9f7013c1db863e082a16bfbd6706b3797f2de8de91
BLAKE2b-256 checksum
How to use checksums
1aa3ba29371ad853a4eb9f58e6afe09ac2e9ad04919f864b801da096b94160ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Security for gnani-mcp 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for gnani_mcp-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page