Gemini Transcription MCP
Summary: This server provides MCP tools for audio-to-text transcription via Gemini/OpenRouter, including cleaned, raw, custom, formatted, and preset-based outputs.
Transcribe audio from base64 content, HTTP(S) URLs, or SSH/SCP paths on local deployments.
Generate lightly edited transcripts with filler removal, corrections, punctuation, and paragraph breaks.
Generate verbatim transcripts with no cleanup.
Enable VAD preprocessing to strip silence and background noise.
Use custom prompts for full control over transcription and formatting.
Format transcripts into document types such as emails, meeting notes, and to-do lists.
Apply 200+ curated style/format presets, and list/filter available presets.
Automatically compress oversized audio and convert many formats; supports MP3, WAV, OGG, FLAC, AAC, AIFF, and more.
Save transcripts as markdown files to an output directory.
Run locally via stdio or remotely over authenticated HTTP/Docker with a health check.
Provides tools for audio-to-text transcription using Google's Gemini multimodal API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Gemini Transcription MCP Transcribe the audio file at https://example.com/meeting.mp3"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
Quick Start
Claude Code (Recommended)
claude mcp add gemini-transcription -s user \
-e OPENROUTER_API_KEY=your-key \
-- npx -y gemini-transcription-mcpClaude 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 |
|
Arguments |
|
Environment Variables |
|
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 3000The 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 |
| Lightly edited transcript (removes filler words, applies corrections) |
| Verbatim transcript with no cleanup |
| VAD preprocessing to strip silence before transcription |
| Transcribe and format as a document type (email, to-do list, etc.) |
| Compresses oversized files to Opus before transcribing |
| Full control with your own prompt |
| Format as a development specification for AI coding agents |
Input Methods
All tools accept audio via:
file_content: Base64-encoded audiofile_url: HTTP(S) URL to fetchssh_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 |
| Required. Your OpenRouter API key |
| Optional. |
| Optional. Auto-save location (default: |
| Optional. Set to |
| Optional. Port for HTTP mode (default: |
| Optional. Bind address for HTTP mode (default: |
| Optional on loopback, required on any other |
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-mcpRemote/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 -dFeature 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
Node.js 18+
ffmpeg (for format conversion and VAD preprocessing)
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 toolslist_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
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for RiverScript, an AI transcription platform - fetches transcripts shared via a link.
An MCP server that gives any LLM or agent clean YouTube transcripts on demand: a single video, a whole channel, or a playlist, plus AI cleanup of auto-generated captions. API-key auth, credit-based, same backend as the public v1 API. Get a free API key with 25 free credits at youtubetranscriptdownload.com/account.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
An MCP server that provides tools to discover and retrieve podcast episodes transcripts.
Related MCP Servers
- AlicenseBqualityDmaintenanceA MCP server that enables transcription of audio files using OpenAI's Speech-to-Text API, with support for multiple languages and file saving options.12 npm10MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables transcribing local audio files and Telegram voice messages using OpenAI's Whisper via local inference or cloud API. It supports multiple audio formats, automatic language detection, and optional word-level timestamps for AI-powered audio analysis.51MIT
- AlicenseAqualityBmaintenanceMCP server for audio transcription using local faster-whisper or OpenAI Whisper API, enabling multilingual transcription with optional GPT post-processing.3117 PyPIMIT
- AlicenseAqualityFmaintenanceMCP server for audio transcription using OpenRouter models, supporting verbatim, cleaned, and custom transcription modes.225 npm1MIT