Skip to main content
Glama

Gemini Transcription MCP

End of life (2026-11-02). No longer maintained. Succeeded by Transcription-Pipeline, agent skills that call the transcription APIs directly with no MCP server, plus preprocessing, cleanup, speaker labelling, reshaping, PDF and saving stages. What was carried over: docs/prior-art.md.

An MCP server for audio-to-text transcription using Google's Gemini multimodal API.

npm version

Quick Start

claude mcp add gemini-transcription -s user \
  -e OPENROUTER_API_KEY=your-key \
  -- npx -y gemini-transcription-mcp

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "gemini-transcription": {
      "command": "npx",
      "args": ["-y", "gemini-transcription-mcp"],
      "env": {
        "OPENROUTER_API_KEY": "your-key"
      }
    }
  }
}

MetaMCP

Add via the MetaMCP UI or import JSON:

{
  "mcpServers": {
    "gemini-transcription": {
      "command": "npx",
      "args": ["-y", "gemini-transcription-mcp"],
      "env": {
        "OPENROUTER_API_KEY": "your-key"
      },
      "description": "Audio transcription using Gemini models via OpenRouter"
    }
  }
}

Or fill in the Add Server form manually:

Field

Value

Command

npx

Arguments

-y gemini-transcription-mcp

Environment Variables

OPENROUTER_API_KEY=your-key

Remote Deployment (HTTP Transport)

For deployments that require HTTP transport:

# Using Docker (recommended for remote) - the container listens on 0.0.0.0, so a token is required
docker run -d \
  -p 3000:3000 \
  -e OPENROUTER_API_KEY=your-key \
  -e MCP_AUTH_TOKEN=a-long-random-string \
  ghcr.io/danielrosehill/gemini-transcription-mcp

# Or run directly with HTTP transport (binds to 127.0.0.1 by default)
OPENROUTER_API_KEY=your-key npx gemini-transcription-mcp --http 3000

The server exposes:

  • http://host:3000/mcp - MCP endpoint (streamable HTTP, one server instance per session)

  • http://host:3000/health - Health check (never requires auth)

HTTP mode binds to 127.0.0.1 unless MCP_HOST is set. It refuses to start on a non-loopback address without MCP_AUTH_TOKEN, because the tools write files (output_dir) and pull audio over SCP with the server's own SSH keys (ssh_host). With a token set, clients send Authorization: Bearer <token> on every request. Before 0.8.2, HTTP mode listened on all interfaces with no authentication and a second request crashed the process.

Related MCP server: whisper-telegram-mcp

Tools

Tool

Description

transcribe_audio

Lightly edited transcript (removes filler words, applies corrections)

transcribe_audio_raw

Verbatim transcript with no cleanup

transcribe_audio_vad

VAD preprocessing to strip silence before transcription

transcribe_audio_format

Transcribe and format as a document type (email, to-do list, etc.)

transcribe_audio_large

Compresses oversized files to Opus before transcribing

transcribe_audio_custom

Full control with your own prompt

transcribe_audio_devspec

Format as a development specification for AI coding agents

Input Methods

All tools accept audio via:

  • file_content: Base64-encoded audio

  • file_url: HTTP(S) URL to fetch

  • ssh_host + ssh_path: Pull via SCP (local deployment only)

Supported Formats

  • Native: MP3, WAV, OGG, FLAC, AAC, AIFF

  • Auto-converted: Opus, M4A, WebM, WMA, and others (converted to OGG/Opus)

Note: When manually converting audio, prefer MP3 over WAV. MP3 offers good compression with broad compatibility, while WAV files are unnecessarily large.

Configuration

Environment Variable

Description

OPENROUTER_API_KEY

Required. Your OpenRouter API key

OPENROUTER_MODEL

Optional. flash (default, google/gemini-3.8-flash), lite (google/gemini-3.5-flash-lite), latest (floating ~google/gemini-flash-latest), or any OpenRouter model ID. See models.md

TRANSCRIPT_OUTPUT_DIR

Optional. Auto-save location (default: ./transcripts). Set to empty string to disable.

MCP_TRANSPORT

Optional. Set to http for HTTP transport mode

MCP_PORT

Optional. Port for HTTP mode (default: 3000)

MCP_HOST

Optional. Bind address for HTTP mode (default: 127.0.0.1)

MCP_AUTH_TOKEN

Optional on loopback, required on any other MCP_HOST. Bearer token clients must send

Deployment Options

Local (Claude Code, Claude Desktop)

Uses stdio transport. All features available including SSH file retrieval.

# Via npx (recommended)
npx gemini-transcription-mcp

# Or install globally
npm install -g gemini-transcription-mcp
gemini-transcription-mcp

Remote/Docker (MetaMCP, Aggregators)

Uses HTTP transport. Requires container or server with ffmpeg installed.

Docker Compose:

# docker-compose.yml
services:
  gemini-transcription:
    image: ghcr.io/danielrosehill/gemini-transcription-mcp
    ports:
      - "3000:3000"
    environment:
      - OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
# Create .env file with your API key
echo "OPENROUTER_API_KEY=your-key" > .env

# Start the service
docker compose up -d

Feature Availability by Deployment Type

Feature

Local (stdio)

Remote (HTTP)

Base64 audio input

Yes

Yes

URL audio input

Yes

Yes

SSH file retrieval

Yes

No*

Transcript auto-save

Yes

Container volume

VAD preprocessing

Yes

Yes

Format conversion

Yes

Yes

* SSH retrieval requires local access to SSH keys and network.

Requirements

When using Docker, ffmpeg is included in the image.

Building from Source

git clone https://github.com/danielrosehill/Gemini-Transcription-MCP.git
cd Gemini-Transcription-MCP
npm install
npm run build

# Run locally
OPENROUTER_API_KEY=your-key npm start

# Run with HTTP transport
OPENROUTER_API_KEY=your-key MCP_TRANSPORT=http npm start

# Build Docker image
docker build -t gemini-transcription-mcp .

License

MIT

Available Tools

6 tools
list_transcription_presetsA

Lists available transcription presets from the Text-Transformation-Prompt-Library. Each preset is categorized as either a "style" (modifies tone/voice without changing structure) or a "format" (restructures content into a specific document type). Use these with the transcribe_with_preset tool.

Inputs: filter, category.

transcribe_audioA

Transcribes an audio file using Gemini via OpenRouter. Returns a lightly edited transcript with filler words removed, verbal corrections applied, punctuation added, and paragraph breaks inserted. Large files are automatically compressed. Supports MP3, WAV, OGG, FLAC, AAC, AIFF, and many more formats (auto-converted). This is the recommended default tool.

Inputs: vad, model, file_url, ssh_host, +6 more.

transcribe_audio_customA

Transcribes an audio file using Gemini via OpenRouter with a user-defined custom prompt. Provides full control over how the model processes and formats the transcription. Use this when you need specific transcription instructions not covered by other tools.

Inputs: custom_prompt (required), vad, model, file_url, +7 more.

transcribe_audio_formatA

Transcribes an audio file and formats the output as a specific document type. Accepts any freeform format description. Use this when you want a quick ad-hoc format without browsing presets. For curated, high-quality formatting, use transcribe_with_preset instead.

Inputs: format (required), vad, model, file_url, +7 more.

transcribe_audio_rawA

Transcribes an audio file using Gemini via OpenRouter. Returns a verbatim transcript with NO cleanup - preserves filler words, false starts, and repetitions exactly as spoken. Use this when you need exact speech-to-text without any editing.

Inputs: vad, model, file_url, ssh_host, +6 more.

transcribe_with_presetB

Transcribes audio and transforms the output using a curated preset. Presets are divided into two categories:

Styles (modify tone/voice): formal, informal, academic, business, journalistic, assertive, flamboyant, minimalist, dejargonizer, simplify, victorian, shakespearean, etc.

Formats (restructure into document type): blog_outline, business_email, meeting_minutes, note_to_self, to_do_list, tech_documentation, feature_request, bug_report, cover_letter, resume, newsletter, development_prompt, etc.

Use list_transcription_presets to browse all 200+ available presets with category filters.

Inputs: preset (required), vad, model, file_url, +7 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 6 tools

    Disambiguation4/5

    The transcription tools are mostly distinct: transcribe_audio gives cleaned output, transcribe_audio_raw gives verbatim, transcribe_audio_custom allows arbitrary prompts, and transcribe_audio_format handles ad-hoc formatting. The main overlap is between transcribe_audio_format and transcribe_with_preset, but the descriptions clearly separate curated presets from freeform formatting.

    Naming Consistency4/5

    Tool names follow a clear snake_case verb-first pattern, with strong consistency across the transcribe_audio_* variants. The only minor deviation is transcribe_with_preset, which uses a prepositional form rather than the transcribe_audio_* parallel used by the other formatting tool.

    Tool Count5/5

    Six tools is well-scoped for a transcription MCP server. Each tool fills a meaningful niche: listing presets, preset-based transcription, default cleaned transcription, raw transcription, custom-prompt transcription, and ad-hoc formatting.

    Completeness5/5

    The tool surface covers the full transcription workflow: discover presets, transcribe with presets, use default cleanup, get verbatim output, provide custom prompts, and apply ad-hoc formats. There are no obvious dead ends or missing core operations for the stated domain.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers