Open Router Audio Transcription MCP
Transcribes audio files using Google's Gemini models via OpenRouter, with verbatim, cleaned, and custom prompt modes.
Transcribes audio files using OpenAI's GPT audio models via OpenRouter, with verbatim, cleaned, and custom prompt modes.
Transcribes audio files using Xiaomi's Mimo model via OpenRouter, with verbatim, cleaned, and custom prompt modes.
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., "@Open Router Audio Transcription MCPtranscribe recording.mp3 verbatim"
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.
Open Router Audio Transcription MCP
An MCP server that transcribes audio files using OpenRouter's audio-capable language models.
Features
Verbatim transcription — exact word-for-word output including filler words, false starts, and repetitions
Cleaned transcription — lightly edited for readability: removes fillers, adds punctuation, sentence boundaries, and paragraph breaks; omits content not intended for transcription
Custom prompt transcription — direct the transcription with your own prompt for specialized use cases
Related MCP server: audio-transcription-mcp
Supported Models
Model | Provider |
| |
| |
| Xiaomi |
| OpenAI |
| OpenAI |
| Mistral |
| OpenAI |
Supported Audio Formats
mp3, wav, ogg, flac, m4a, aac, webm, wma, opus
Setup
1. Get an OpenRouter API key
Sign up at openrouter.ai and create an API key at openrouter.ai/keys.
2. Add to Claude Code
Run the following command to add the MCP server to Claude Code:
claude mcp add audio-transcription -e OPENROUTER_API_KEY=your-api-key-here -- npx -y or-audio-transcription-mcp
Or add it manually to your Claude Code MCP settings (~/.claude/settings.json or project .mcp.json):
{
"mcpServers": {
"audio-transcription": {
"command": "npx",
"args": ["-y", "or-audio-transcription-mcp"],
"env": {
"OPENROUTER_API_KEY": "your-api-key-here"
}
}
}
}Alternative: Install from source
git clone https://github.com/danielrosehill/OR-Audio-Transcription-MCP.git
cd OR-Audio-Transcription-MCP
npm install
npm run buildThen configure with a direct path:
claude mcp add audio-transcription -e OPENROUTER_API_KEY=your-api-key-here -- node /path/to/OR-Audio-Transcription-MCP/dist/index.js
Tools
transcribe_audio
Transcribe an audio file.
Parameter | Type | Required | Description |
| string | Yes | Absolute path to the audio file |
|
| Yes | Transcription mode |
| string | When mode=custom | Custom prompt to direct the transcription |
| string | No | OpenRouter model ID (defaults to |
| boolean | No | Use budget model ( |
list_transcription_models
Lists all available audio transcription models.
License
MIT
Available Tools
2 toolslist_transcription_modelsA
List available OpenRouter models that support audio transcription.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral load, and 'List' implies a read-only, non-destructive operation, which is reasonable. However, it says nothing about authentication requirements, whether a live API key is needed, pagination, or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. The scope qualifier ('that support audio transcription') is the one piece of information that distinguishes this list from a generic model listing, and it is stated directly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only listing tool with no output schema, the description is close to sufficient. The only real gap is that it doesn't hint at what the returned entries contain (e.g., model identifiers usable in transcribe_audio), which an agent would need to chain the two calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty, so there are no parameter semantics to document. The baseline for a zero-parameter tool is a 4; the description adds nothing here because nothing is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (OpenRouter models) with a scope qualifier (support audio transcription). An agent can tell it apart from the sibling transcribe_audio, which performs transcription rather than discovery, though the description never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no mention of the transcribe_audio sibling as an alternative. Usage is only weakly implied by the fact that a preceding model-discovery step would logically precede a call to transcribe_audio.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_audioB
Transcribe an audio file using OpenRouter. Supports verbatim, cleaned, or custom prompt modes.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Transcription mode. 'verbatim': exact word-for-word transcription including filler words. 'cleaned': lightly edited for readability (removes fillers, adds punctuation, paragraph breaks). 'custom': use a custom prompt to direct the transcription. | |
| model | No | OpenRouter model to use for transcription. Defaults to 'google/gemini-3-flash-preview'. Available models: xiaomi/mimo-v2-omni, google/gemini-3.1-flash-lite-preview, google/gemini-3-flash-preview, openai/gpt-audio, openai/gpt-audio-mini, mistralai/voxtral-small-24b-2507, openai/gpt-4o-audio-preview | |
| budget | No | Use the default budget model instead of the standard model. Budget model: 'google/gemini-3.1-flash-lite-preview'. Ignored if 'model' is explicitly set. | |
| file_path | Yes | Absolute path to the audio file to transcribe. Supported formats: mp3, wav, ogg, flac, m4a, aac, webm, wma, opus | |
| custom_prompt | No | Custom prompt to direct the transcription (required when mode is 'custom'). This replaces the default system prompt entirely. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It states the operation is a transcription and mentions modes but does not disclose whether it's synchronous (likely, given no job id), what format the output takes, whether it consumes tokens/budget, or error conditions (unsupported format, missing file). For a call to an external paid AI service, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the verb+resource. It's efficiently sized and wastes no words, though the second sentence only echoes enum values already in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A tool that hits an external AI service with a freeform custom_prompt path, budget/model selection, and no output schema deserves more: expected return shape (raw transcript? JSON?), sync vs async, cost behavior. The description covers neither return values nor operational behavior, leaving material gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with rich enum descriptions for 'mode' and model lists for 'model', so the schema does the heavy lifting. The description's 'verbatim, cleaned, or custom prompt modes' repeats the enum values without adding semantics. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Transcribe an audio file'. The OpenRouter mention situates it as an external-service call, and the mode enumeration hints at behavior. It doesn't differentiate from the sibling list_transcription_models, but the sibling's name makes the boundary obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage via 'mode' options but never says when to choose this tool over alternatives, nor what prerequisites (audio access, file existence) exist. The sibling handles model listing, so the reader can infer a rough workflow but nothing is stated explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.0.0- First observed
list_transcription_models - First observed
transcribe_audio
TDQS
Scored across 2 tools
The two tools have completely distinct purposes: one discovers available transcription models, the other performs the transcription. There is no plausible way to confuse them.
Both names follow a consistent snake_case verb_noun pattern (list_transcription_models, transcribe_audio) and are predictable for the domain.
Two tools is on the thin side for a server, even a focused one; a discovery tool plus a single action tool leaves little room for variation. It is workable but borderline minimal.
The core workflow (find a model, then transcribe) is covered end to end. Some useful operations like batch transcription or job status are absent, but they are minor gaps an agent can work around.
Related MCP Connectors
MCP server for RiverScript, an AI transcription platform - fetches transcripts shared via a link.
MCP server for Speech-to-Text
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.
The OpenRouter MCP server plugs OpenRouter into the AI tools you already use. Once connected, your assistant can pull live OpenRouter data (models, prices, your credits, rankings, and docs) and send quick test messages, all without leaving your editor.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for audio transcription using local faster-whisper or OpenAI Whisper API, enabling multilingual transcription with optional GPT post-processing.3MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for audio transcription with speaker diarization. Transcribes MP3/WAV files using Faster-Whisper and pyannote.audio, outputs markdown with speaker labels, timestamps, summaries, and action items.1MIT
- AlicenseAqualityDmaintenanceAn MCP server for audio-to-text transcription using Google's Gemini API via OpenRouter, offering multiple tools for raw, cleaned, or formatted transcripts with support for local and remote deployment.69 npmMIT
- FlicenseAqualityDmaintenanceThis MCP server enables audio transcription using OpenAI Whisper, supporting various model sizes and base64-encoded audio input via stdio or HTTP transport.1-