MCP Server Whisper
MCP Server Whisper is an audio processing server that enables transcription, audio chat, format conversion, and text-to-speech generation using OpenAI's Whisper and GPT-4o models.
List & Search Audio Files (
list_audio_files): Browse audio files with filtering by regex pattern, size, duration, modification time, and format; sort by name, size, duration, modified time, or format.Get Latest Audio File (
get_latest_audio): Retrieve the most recently modified audio file with metadata and model compatibility info.Convert Audio (
convert_audio): Convert audio files to MP3 or WAV for GPT-4o compatibility.Compress Audio (
compress_audio): Automatically compress audio files exceeding 25MB to meet API size limits.Transcribe Audio (
transcribe_audio): Transcribe usingwhisper-1,gpt-4o-transcribe,gpt-4o-mini-transcribe, orgpt-4o-transcribe-diarize, with custom prompts, word/segment timestamps, and multiple output formats (text, json, srt, vtt, verbose_json, diarized_json).Enhanced Transcription (
transcribe_with_enhancement): Transcribe with specialized templates —detailed(tone/emotion/background),storytelling(narrative form),professional(formal/business), oranalytical(speech patterns/key points).Chat with Audio (
chat_with_audio): Interactively analyze audio content using GPT-4o audio preview models (gpt-4o-audio-preview, etc.) with custom system and user prompts.Text-to-Speech Generation (
create_audio): Generate speech from text usinggpt-4o-mini-tts,tts-1, ortts-1-hd, with a choice of voices (alloy, ash, ballad, coral, echo, shimmer, verse, and more), adjustable speed, custom style instructions, and automatic splitting for long texts.
Provides audio transcription using OpenAI's Whisper and GPT-4o transcription models, interactive audio chat with GPT-4o audio models, and text-to-speech generation using OpenAI's TTS API with multiple voice options and customizable parameters.
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., "@MCP Server Whisper transcribe the latest meeting recording and include timestamps"
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.
MCP Server Whisper
A Model Context Protocol (MCP) server for advanced audio transcription and processing using OpenAI's Whisper and GPT-4o models.
This project has moved. Active development has migrated to TJC-LP/sanzaru. This repository is no longer maintained and will be archived. Please update your dependencies and issues to the new repo.
Overview
MCP Server Whisper provides a standardized way to process audio files through OpenAI's latest transcription and speech services. By implementing the Model Context Protocol, it enables AI assistants like Claude to seamlessly interact with audio processing capabilities.
Key features:
🔍 Advanced file searching with regex patterns, file metadata filtering, and sorting capabilities
⚡ MCP-native parallel processing - call multiple tools simultaneously
🔄 Format conversion between supported audio types
📦 Automatic compression for oversized files
🎯 Multi-model transcription with support for all OpenAI audio models
🗣️ Interactive audio chat with GPT-4o audio models
✏️ Enhanced transcription with specialized prompts and timestamp support
🎙️ Text-to-speech generation with customizable voices, instructions, and speed
📊 Comprehensive metadata including duration, file size, and format support
🚀 High-performance caching for repeated operations
🔒 Type-safe responses with Pydantic models for all tool outputs
Note: This project is unofficial and not affiliated with, endorsed by, or sponsored by OpenAI. It provides a Model Context Protocol interface to OpenAI's publicly available APIs.
Related MCP server: ttsstt-mcp-server
Installation
# Clone the repository
git clone https://github.com/arcaputo3/mcp-server-whisper.git
cd mcp-server-whisper
# Using uv
uv sync
# Set up pre-commit hooks
uv run pre-commit installEnvironment Setup
Create a .env file based on the provided .env.example:
cp .env.example .envEdit .env with your actual values:
OPENAI_API_KEY=your_openai_api_key
AUDIO_FILES_PATH=/path/to/your/audio/filesNote: Environment variables must be available at runtime. For local development with Claude, use a tool like dotenv-cli to load them (see Usage section below).
Usage
Local Development with Claude
The project includes a .mcp.json configuration file for local development with Claude. To use it:
Ensure your
.envfile is configured with the required environment variablesLaunch Claude with environment variables loaded:
bunx dotenv-cli -- claudeThis will:
Load environment variables from your
.envfileLaunch Claude with the MCP server configured per
.mcp.jsonEnable hot-reloading during development
The .mcp.json configuration:
{
"mcpServers": {
"whisper": {
"command": "uv",
"args": ["run", "mcp-server-whisper"],
"env": {
"OPENAI_API_KEY": "${OPENAI_API_KEY}",
"AUDIO_FILES_PATH": "${AUDIO_FILES_PATH}"
}
}
}
}Exposed MCP Tools
Audio File Management
list_audio_files- Lists audio files with comprehensive filtering and sorting options:Filter by regex pattern matching on filenames
Filter by file size, duration, modification time, or format
Sort by name, size, duration, modification time, or format
Returns type-safe
FilePathSupportParamswith full metadata
get_latest_audio- Gets the most recently modified audio file with model support info
Audio Processing
convert_audio- Converts audio files to supported formats (mp3 or wav)Returns
AudioProcessingResultwith output path
compress_audio- Compresses audio files that exceed size limitsReturns
AudioProcessingResultwith output path
Transcription
transcribe_audio- Advanced transcription using OpenAI's models:Supports
whisper-1,gpt-4o-transcribe, andgpt-4o-mini-transcribeCustom prompts for guided transcription
Optional timestamp granularities for word and segment-level timing
JSON response format option
Returns
TranscriptionResultwith text, usage data, and optional timestamps
chat_with_audio- Interactive audio analysis using GPT-4o audio models:Supports
gpt-4o-audio-preview(recommended) and dated versionsNote:
gpt-4o-mini-audio-previewhas limitations with audio chat and is not recommendedCustom system and user prompts
Provides conversational responses to audio content
Returns
ChatResultwith response text
transcribe_with_enhancement- Enhanced transcription with specialized templates:detailed- Includes tone, emotion, and background detailsstorytelling- Transforms the transcript into a narrative formprofessional- Creates formal, business-appropriate transcriptionsanalytical- Adds analysis of speech patterns and key pointsReturns
TranscriptionResultwith enhanced output
Text-to-Speech
create_audio- Generate text-to-speech audio using OpenAI's TTS API:Supports
gpt-4o-mini-tts(preferred) and other speech modelsMultiple voice options (alloy, ash, ballad, coral, echo, sage, shimmer, verse, marin, cedar)
Speed adjustment and custom instructions
Customizable output file paths
Handles texts of any length by automatically splitting and joining audio segments
Returns
TTSResultwith output path
Supported Audio Formats
Model | Supported Formats |
Transcribe | flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, webm |
Chat | mp3, wav |
Note: Files larger than 25MB are automatically compressed to meet API limits.
Example Usage with Claude
Claude, please transcribe my latest audio file with detailed insights.Claude will automatically:
Find the latest audio file using
get_latest_audioDetermine the appropriate transcription method
Process the file with
transcribe_with_enhancementusing the "detailed" templateReturn the enhanced transcription
Claude, list all my audio files that are longer than 5 minutes and were created after January 1st, 2024, sorted by size.Claude will:
Convert the date to a timestamp
Use
list_audio_fileswith appropriate filters:min_duration_seconds: 300(5 minutes)min_modified_time: <timestamp for Jan 1, 2024>sort_by: "size"
Return a sorted list of matching audio files with comprehensive metadata
Claude, find all MP3 files with "interview" in the filename and create professional transcripts for each one.Claude will:
Search for files using
list_audio_fileswith pattern and format filtersMake multiple parallel
transcribe_with_enhancementtool calls (MCP handles parallelism natively)Each call uses
enhancement_type: "professional"and returns a typedTranscriptionResultReturn all transcriptions with full metadata in a well-formatted output
Claude, create audio with this script: "Welcome to our podcast! Today we'll be discussing artificial intelligence trends in 2025." Use the shimmer voice.Claude will:
Use the
create_audiotool with:text_promptcontaining the scriptvoice: "shimmer"model: "gpt-4o-mini-tts"(default high-quality model)instructions: "Speak in an enthusiastic, podcast host style"(optional)speed: 1.0(default, can be adjusted)
Generate the audio file and save it to the configured audio directory
Provide the path to the generated audio file
Configuration with Claude Desktop
For production use with Claude Desktop (as opposed to local development), add this to your claude_desktop_config.json:
UVX
{
"mcpServers": {
"whisper": {
"command": "uvx",
"args": ["mcp-server-whisper"],
"env": {
"OPENAI_API_KEY": "your_openai_api_key",
"AUDIO_FILES_PATH": "/path/to/your/audio/files"
}
}
}
}Recommendation (Mac OS Only)
Install Screen Recorder By Omi (free)
Set
AUDIO_FILES_PATHto/Users/<user>/Movies/Omi Screen Recorderand replace<user>with your usernameAs you record audio with the app, you can transcribe multiple files in parallel with Claude
Development
This project uses modern Python development tools including uv, pytest, ruff, and mypy.
# Run tests
uv run pytest
# Run with coverage
uv run pytest --cov=src
# Format code
uv run ruff format src
# Lint code
uv run ruff check src
# Run type checking (strict mode)
uv run mypy --strict src
# Run the pre-commit hooks
pre-commit run --all-filesCI/CD Workflow
The project uses GitHub Actions for CI/CD:
Lint & Type Check: Ensures code quality with ruff and strict mypy type checking
Tests: Runs tests on multiple Python versions (3.10, 3.11, 3.12, 3.13, 3.14, 3.14t)
Release & Publish: Dual-trigger workflow for flexible release management
Note: Python 3.14t is the free-threaded build (without GIL) for testing true parallelism.
Creating a New Release
The release workflow supports two approaches:
Option 1: Automated Release (Recommended)
Push a tag to automatically create a release and publish to PyPI:
# 1. Update version in pyproject.toml
# Edit the version field manually, e.g., "1.0.0" -> "1.1.0"
# 2. Update __version__ in src/mcp_server_whisper/__init__.py to match
# 3. Update the lock file
uv lock
# 4. Commit the version bump
git add pyproject.toml src/mcp_server_whisper/__init__.py uv.lock
git commit -m "chore: bump version to 1.1.0"
# 5. Create and push the version tag
git tag v1.1.0
git push origin main
git push origin v1.1.0This will:
Verify the tag version matches pyproject.toml
Build the package
Create a GitHub release with auto-generated notes
Automatically publish to PyPI
Option 2: Manual Release
Create a release manually via GitHub UI, then publish optionally:
Go to Releases on GitHub
Click "Draft a new release"
Create a new tag or select an existing one
Fill in release details
Click "Publish release"
When you publish the release, the workflow will automatically publish to PyPI. You can also create a draft release to delay publishing.
API Design Philosophy
MCP Server Whisper follows a flat, type-safe API design optimized for MCP clients:
Flat Arguments: All tools accept flat parameters instead of nested objects for simpler, more intuitive calls
Type-Safe Responses: Every tool returns a strongly-typed Pydantic model (
TranscriptionResult,ChatResult,AudioProcessingResult,TTSResult)Single-Item Operations: One call processes one file, with MCP protocol handling parallelism natively
Per-File Error Handling: Failures are isolated to individual operations, not entire batches
Self-Documenting: Type hints provide autocomplete and validation in IDEs and AI models
This design makes it significantly easier for AI assistants to use the tools correctly and handle results reliably.
How It Works
For detailed architecture information, see Architecture Documentation.
MCP Server Whisper is built on the Model Context Protocol, which standardizes how AI models interact with external tools and data sources. The server:
Exposes Audio Processing Capabilities: Through standardized MCP tool interfaces with flat, type-safe APIs
Implements Parallel Processing: Using anyio structured concurrency; MCP clients handle parallelism natively
Manages File Operations: Handles detection, validation, conversion, and compression
Provides Rich Transcription: Via different OpenAI models and enhancement templates
Optimizes Performance: With caching mechanisms for repeated operations
Ensures Type Safety: All responses use Pydantic models for validation and IDE support
Under the hood, it uses:
pydubfor audio file manipulation (withaudioop-ltsfor Python 3.13+)anyiofor structured concurrency and task group managementaioresultfor collecting results from parallel task groupsOpenAI's latest transcription models (including gpt-4o-transcribe)
OpenAI's GPT-4o audio models for enhanced understanding
OpenAI's gpt-4o-mini-tts for high-quality speech synthesis
FastMCP for simplified MCP server implementation
Type hints and strict mypy validation throughout the codebase
Contributing
Contributions are welcome! Please follow these steps:
Fork the repository
Create a new branch for your feature (
git checkout -b feature/amazing-feature)Make your changes
Run the tests and linting (
uv run pytest && uv run ruff check src && uv run mypy --strict src)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Model Context Protocol (MCP) - For the protocol specification
pydub - For audio processing
OpenAI Whisper - For audio transcription
FastMCP - For MCP server implementation
Anthropic Claude - For natural language interaction
MCP Review - This MCP Server is certified by MCP Review
Available Tools
8 toolschat_with_audioC
A tool used to chat with audio files. The response will be a response to the audio file sent. It is recommended to use gpt-4o-audio-preview by default for best results. Note: gpt-4o-mini-audio-preview has limitations with audio chat and may not process audio correctly.
Inputs: input_file_name (required), model, system_prompt, user_prompt. Returns: Result from chat_with_audio operation.
compress_audioA
A tool used to compress audio files which are >25mb. ONLY USE THIS IF THE USER REQUESTS COMPRESSION OR IF OTHER TOOLS FAIL DUE TO FILES BEING TOO LARGE.
Inputs: input_file_name (required), max_mb, output_file_name. Returns: Result from audio processing operations (convert, compress).
convert_audioB
A tool used to convert audio files to mp3 or wav which are gpt-4o compatible.
Inputs: input_file_name (required), target_format, output_file_name. Returns: Result from audio processing operations (convert, compress).
create_audioC
Create text-to-speech audio using OpenAI's TTS API with model and voice selection.
Inputs: text_prompt (required), model, voice, instructions, +2 more. Returns: Result from text-to-speech operations.
get_latest_audioA
Get the most recent audio file from the audio path. ONLY USE THIS IF THE USER ASKS FOR THE LATEST FILE.
Inputs: no named parameters. Returns: Params for checking if a file supports transcription.
list_audio_filesC
List, filter, and sort audio files from the audio path. Supports regex pattern matching, filtering by metadata (size, duration, date, format), and sorting.
Inputs: pattern, min_size_bytes, max_size_bytes, min_duration_seconds, +6 more. Returns: result
transcribe_audioC
A tool used to transcribe audio files. It is recommended to use gpt-4o-mini-transcribe by default. If the user wants maximum performance, use gpt-4o-transcribe. Rarely should you use whisper-1 as it is least performant, but it is available if needed. You can use prompts to guide the transcription process based on the users preference.
Inputs: input_file_name (required), model, response_format, prompt, +1 more. Returns: Result from transcription operations. Includes all fields that OpenAI's transcr…
transcribe_with_enhancementB
Transcribe audio with GPT-4 using specific enhancement prompts.
Enhancement types:
- detailed: Provides detailed description including tone, emotion, and background
- storytelling: Transforms the transcription into a narrative
- professional: Formats the transcription in a formal, business-appropriate way
- analytical: Includes analysis of speech patterns, key points, and structure
Args:
input_file_name: Name of the input audio file to process
enhancement_type: Type of enhancement to apply to the transcription
model: The transcription model to use
response_format: The response format
timestamp_granularities: Optional timestamp granularities
Returns:
-------
TranscriptionResult with enhanced transcriptionInputs: input_file_name (required), enhancement_type, model, response_format, +1 more. Returns: Result from transcription operations. Includes all fields that OpenAI's transcr…
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Most tools have clear single-action purposes (convert, compress, chat, create, list, get-latest), but transcribe_audio and transcribe_with_enhancement are very similar in function and could be easily confused, despite the enhancement descriptor. Descriptions and usage clues help, but the overlapping transcription surface creates some misselection risk.
Tool names generally follow a verb_noun pattern in lowercase snake_case (list_audio_files, convert_audio, compress_audio, create_audio). Slight deviations exist with get_latest_audio, chat_with_audio, and transcribe_with_enhancement, which break the clean noun-object structure, but the pattern remains readable and predictable.
Eight tools cover the full audio processing workflow—file access, format preparation, size handling, transcription, enhanced transcription, chat, and TTS—without unnecessary redundancy. Each tool earns its place and the count is well within the ideal range for a focused MCP server.
The surface is quite complete for a Whisper/audio media server: it supports listing, retrieving, converting, compressing, transcribing, enhanced transcription, audio chat, and TTS synthesis. Minor gaps such as no audio preview or batch processing exist, but agents can work around them with available tools.
Maintenance
Related MCP Connectors
Audio for your agent: transcribe, speak, translate, summarise, plus sound effects and music.
Audio and video tools for your AI assistant: remove noise, enhance voices, transcribe, and more.
Transcribe, subtitle, dub and lip-sync media; create speech, voices, images and thumbnails.
Speech denoise, transcripts (SRT/VTT), embeddings, reranking, entities and translation.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables high-performance audio transcription using Faster Whisper with CUDA acceleration, supporting single and batch audio file processing with multiple output formats (VTT, SRT, JSON).-
- AlicenseNot gradedqualityDmaintenanceEnables speech-to-text and text-to-speech conversion using OpenAI-compatible APIs. Supports customizable models, voices, and output directories.GPL 3.0
- AlicenseNot gradedqualityDmaintenanceProvides audio inspection, conversion, processing, and generation capabilities via SoX, enabling AI agents to 'hear' and manipulate audio files through structured JSON interfaces.MIT

jackai-stt-mcpofficial
AlicenseAqualityDmaintenanceTranscribes audio files by referencing them in chat, using OpenAI's speech-to-text models locally without uploading audio, and supports speaker diarization.1MIT