Skip to main content
Glama
jwulff

Whisper MCP Server

by jwulff

Whisper MCP Server

A lightweight MCP (Model Context Protocol) server for local audio transcription using whisper.cpp. There are several Whisper MCP implementations out there. This one is minimal and pairs with apple-voice-memo-mcp for a complete voice memo workflow.

Features

  • Local transcription - All processing happens on your machine

  • Multiple models - Choose from tiny, base, small, medium, or large models

  • Various formats - Supports wav, mp3, m4a, and other audio formats

  • Timestamps - Get transcriptions with or without timestamps

Related MCP server: whisper-telegram-mcp

Requirements

  • macOS (tested on Apple Silicon)

  • Node.js 18+

  • whisper-cpp: brew install whisper-cpp

  • ffmpeg: brew install ffmpeg

Installation

npm install -g whisper-mcp

Or run directly:

npx whisper-mcp

Configuration

Claude Desktop

Add to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "whisper-mcp": {
      "command": "npx",
      "args": ["-y", "whisper-mcp"]
    }
  }
}

After editing, restart Claude Desktop.

Claude Code (CLI)

For Claude Code, add to your project's .mcp.json file:

{
  "mcpServers": {
    "whisper-mcp": {
      "command": "npx",
      "args": ["-y", "whisper-mcp"]
    }
  }
}

Or for user-wide configuration, add to ~/.claude/settings.json:

{
  "mcpServers": {
    "whisper-mcp": {
      "command": "npx",
      "args": ["-y", "whisper-mcp"]
    }
  }
}

Tip: Use /mcp in Claude Code to verify the server is connected.

Local Development Setup

If running from source instead of npm:

{
  "mcpServers": {
    "whisper-mcp": {
      "command": "node",
      "args": ["/path/to/whisper-mcp/dist/index.js"]
    }
  }
}

With Apple Voice Memos MCP

For a complete voice memo workflow, use alongside apple-voice-memo-mcp:

{
  "mcpServers": {
    "apple-voice-memo-mcp": {
      "command": "npx",
      "args": ["-y", "apple-voice-memo-mcp"]
    },
    "whisper-mcp": {
      "command": "npx",
      "args": ["-y", "whisper-mcp"]
    }
  }
}

MCP Tools

transcribe_audio

Transcribe an audio file using Whisper.

Parameters:

  • file_path (required): Absolute path to the audio file

  • model (optional): Model to use (tiny.en, base.en, small.en, medium.en, large). Default: base.en

  • language (optional): Language code. Default: en

  • output_format (optional): text, timestamps, or json. Default: text

Example:

{
  "file_path": "/path/to/audio.m4a",
  "model": "medium.en",
  "output_format": "timestamps"
}

list_whisper_models

List available Whisper models and their download status.

Returns:

{
  "models": [
    {
      "name": "base.en",
      "size": "142 MB",
      "downloaded": true,
      "path": "/Users/you/.whisper/ggml-base.en.bin"
    }
  ]
}

download_whisper_model

Download a Whisper model for local use.

Parameters:

  • model (required): Model to download (tiny.en, base.en, small.en, medium.en, large)

Models

Model

Size

Speed

Quality

tiny.en

75 MB

Fastest

Basic

base.en

142 MB

Fast

Good

small.en

466 MB

Medium

Better

medium.en

1.5 GB

Slow

Great

large

2.9 GB

Slowest

Best

Models are stored in ~/.whisper/.

Workflow Example

  1. List your voice memos: list_voice_memos

  2. Get audio path: get_audio with memo ID

  3. Transcribe: transcribe_audio with the file path

  4. Save to your vault

Development

# Clone and install
git clone https://github.com/jwulff/whisper-mcp.git
cd whisper-mcp
npm install

# Build
npm run build

# Test with MCP inspector
npm run inspector

License

MIT

Available Tools

3 tools
download_whisper_modelA

Download a Whisper model for local transcription. Models are stored in ~/.whisper/

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel to download

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description mentions storage location but lacks details on idempotency, overwrite behavior, download time, or success/failure signals. Insufficient for a download operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no unnecessary words. Primary action and key detail (storage path) front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is simple with one parameter and no output schema. Description lacks return behavior, error handling, and whether download is conditional on existing files.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with enum description for 'model' parameter. Description adds storage context but no additional parameter meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states action (download), resource (Whisper model), purpose (local transcription), and storage location (~/.whisper/). Distinguishes from siblings: list_whisper_models and transcribe_audio.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs siblings. Implied that download is prerequisite for transcribe_audio, but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_whisper_modelsA

List available Whisper models and their download status. Shows which models are downloaded locally.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It describes the tool as a read-only listing operation with no mention of side effects or permissions. Adequate but minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action and result, with no wasted words. It efficiently conveys the essential purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and a simple listing operation, the description is complete. It clearly states what the tool does and what information it provides, sufficient for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, so baseline is 4. The description does not need to add parameter meaning, and it correctly focuses on the tool's purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'available Whisper models', and specifies that it shows download status. This distinguishes it from sibling tools download_whisper_model and transcribe_audio.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (listing models) but does not explicitly state when to use it versus alternatives. No when-not-to-use or exclusion guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcribe_audioA

Transcribe an audio file using Whisper. Supports various audio formats (wav, mp3, m4a, etc.). Returns the transcribed text.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the audio file to transcribe
modelNoWhisper model to use (tiny.en, base.en, small.en, medium.en, large). Default: base.en
languageNoLanguage code (e.g., en, es, fr). Default: en
output_formatNoOutput format: text (plain text), timestamps (with timestamps), json (structured). Default: text

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions format support but lacks details on size limits, processing time, model accuracy trade-offs, and output behavior per output_format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core purpose, no wasted words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so description should explain return values thoroughly. It minimally states 'returns the transcribed text' but doesn't clarify how output varies by output_format (text, timestamps, json), nor does it address potential errors or prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, baseline 3. The description adds value by listing supported audio formats (wav, mp3, m4a, etc.) which are not in the schema, providing useful context beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'transcribe' and the resource 'audio file', and it distinguishes itself from sibling tools (download_whisper_model, list_whisper_models) which are about model management, not transcription.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool vs alternatives or mention prerequisites like needing a downloaded model. Usage is implied but not guided with exclusions or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation5/5

Each tool has a distinct purpose: downloading models, listing models, and transcribing audio. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (download_whisper_model, list_whisper_models, transcribe_audio).

Tool Count5/5

With 3 tools, the server is well-scoped for its purpose—managing models and transcribing audio. The count is appropriate and avoids being too thin or heavy.

Completeness4/5

The tool set covers the core workflow (model download, listing, transcription) but lacks model deletion or advanced configuration. Still, it is sufficient for basic tasks.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jwulff/whisper-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server