Skip to main content
Glama

whisper-mcp

로컬 Whisper 전사를 MCP 서버로 노출합니다 — 따라서 모든 MCP 클라이언트(Claude Desktop, Claude Code 등)가 도구 호출로 직접 오디오/비디오 파일을 전사하고, .srt 자막을 생성하며, 비디오에 캡션을 구울 수 있습니다. 클라우드 API가 없고, "스크립트를 실행하고 출력 파일을 읽는" 수동 단계도 없습니다.

추론은 faster-whisper를, 오디오 추출 및 캡션 번인은 ffmpeg를 기반으로 구축되었습니다.

Claude Code가 transcribe 도구를 호출하고 타임스탬프가 있는 대본을 반환하는 모습

아키텍처

MCP client (Claude, etc.) --stdio--> whisper-mcp server --> faster-whisper (Whisper model)
                                                        \--> ffmpeg (audio extract / burn-in)

서버는 로드된 Whisper 모델을 프로세스 수명 동안 메모리에 캐시하므로, 한 세션에서 반복된 도구 호출 시 모델 로드 시간을 다시 지불하지 않습니다.

Related MCP server: m4x

도구

도구

설명

transcribe(path, model_size="small", device="auto")

감지된 언어와 타임스탬프가 있는 세그먼트를 구조화된 데이터로 반환합니다.

generate_srt(path, output_path=None, model_size="small", device="auto")

전사하고 .srt 파일을 작성합니다.

burn_captions(video_path, srt_path, output_path=None)

ffmpeg를 통해 .srt를 비디오에 굽습니다.

요구 사항

  • Python 3.10+

  • PATH에 ffmpeg

  • 선택 사항: CUDA 지원 GPU (자동으로 CPU로 폴백)

설치 및 실행

pip install -e ".[dev]"
whisper-mcp

또는, 설치 없이:

uvx --from git+https://github.com/Chain-P/whisper-mcp whisper-mcp

MCP 클라이언트에서 구성

클라이언트의 MCP 구성에 추가하세요 (예: Claude Code의 .mcp.json 또는 Claude Desktop의 claude_desktop_config.json):

{
  "mcpServers": {
    "whisper": {
      "command": "whisper-mcp"
    }
  }
}

그런 다음 클라이언트에게 파일 전사를 요청하세요, 예: "samples/podcast_clip.mp4를 전사하고 SRT를 알려줘."

개발

pip install -e ".[dev]"
ruff check .
pytest                        # unit tests only
pytest -m integration         # + real transcription against a sample file

로드맵

  • SRT 출력에서 다중 화자 라벨링을 위한 화자 분리(pyannote.audio / whisperx).

  • 긴 전사를 위한 MCP 진행 알림.

  • 최근 전사 기록을 노출하는 resource.

라이선스

MIT

Available Tools

3 tools
burn_captionsA

Burn an existing .srt subtitle file into a video, producing a new video file.

Args: video_path: Path to the source video. srt_path: Path to the .srt subtitle file to burn in. output_path: Where to write the captioned video. Defaults to ".captioned".

NameRequiredDescriptionDefault
srt_pathYes
video_pathYes
output_pathNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/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 behavioral burden. It clearly states that a new video file is produced, implying the source and subtitle files are not modified, and gives the meaningful output default. However, it does not disclose failure behaviors, overwrite handling, or other side effects.

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 compact and front-loaded: the first sentence captures the entire operation, and the Args block provides parameter details without extra filler. Every sentence earns its place.

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

Completeness4/5

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

For a straightforward three-parameter operation, the description covers the core behavior, parameter semantics, and output default. It could mention side effects or exceptions, but nothing essential is missing for correct invocation.

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

Parameters5/5

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

Schema coverage is 0%, but the description documents all three parameters with clear definitions and even notes the default behavior for output_path. This fully compensates for the schema's bare string types.

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?

States a specific verb ('Burn'), a specific input resource (existing .srt subtitle file), and a clear outcome (producing a new video file). This clearly differentiates from siblings 'transcribe' and 'generate_srt', which handle audio-to-text and subtitle creation respectively.

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

Usage Guidelines4/5

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

Implicitly indicates the tool is for existing .srt files by saying 'existing', and the sibling names make the contrast clear: use generate_srt to create subtitles, burn_captions to overlay them. It does not explicitly exclude alternatives, but the context is strong enough.

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

generate_srtA

Transcribe a file and write an .srt subtitle file next to it (or at output_path).

Args: path: Path to the input audio/video file. output_path: Where to write the .srt file. Defaults to the input path with a .srt suffix. model_size: Whisper model size (tiny/base/small/medium/large-v3). device: Inference device: "auto", "cpu", or "cuda".

NameRequiredDescriptionDefault
pathYes
deviceNoauto
model_sizeNosmall
output_pathNo

TDQS

A3.5/5.0
Behavior2/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 of disclosing behavior. It does state the primary side effect (writing an .srt file) and default output location, but it omits other important behaviors: whether existing files are overwritten, whether models are downloaded over the network, runtime expectations, dependencies like ffmpeg, and what the tool returns (if anything). These are significant gaps for an unannotated tool.

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 compact and well-structured: a single-sentence summary followed by a tight Args list. Every line provides useful information, and the main purpose is front-loaded. There is no redundancy or filler.

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

Completeness4/5

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

All parameters are documented, the primary output (the .srt file) and its location are stated, and defaults are clear. Minor gaps remain: no mention of return value, overwrite behavior, or runtime prerequisites, but for a straightforward file-generation tool these are relatively minor. The absence of usage guidance relative to siblings is not critical for invoking the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, but the description's Args section fully compensates. It explains each of the four parameters in plain language, lists allowed values for model_size and device, and clarifies the default behavior of output_path. This adds substantial meaning beyond the bare input schema.

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

Purpose4/5

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

The description opens with a specific action and result: 'Transcribe a file and write an .srt subtitle file next to it.' This clearly identifies the tool's purpose and the resource it produces. It does not explicitly name sibling tools, but the .srt output distinguishes it from transcribe and burn_captions.

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

Usage Guidelines2/5

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

There is no guidance on when to use generate_srt instead of the sibling tools transcribe or burn_captions. The only context is implied by the description itself: if an .srt file is needed, this tool does that. No explicit conditions, exclusions, or alternatives are given.

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

transcribeA

Transcribe an audio or video file and return language info + timestamped segments.

Args: path: Path to the input audio/video file. model_size: Whisper model size (tiny/base/small/medium/large-v3). device: Inference device: "auto", "cpu", or "cuda".

NameRequiredDescriptionDefault
pathYes
deviceNoauto
model_sizeNosmall

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the core behavior—transcribing an input media file and returning language info plus timestamped segments—but does not mention possible side effects like model downloads, runtime/GPU cost, or the exact structure of the returned segments. This is adequate but not fully transparent for an ML-heavy operation.

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

Conciseness4/5

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

The description is compact, front-loaded, and free of filler: one clear purpose sentence followed by a focused Args block. It earns its place, though a short return-shape example would make it even stronger.

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?

Given there is no output schema and no annotations, the description provides enough to make a basic call (path is required, model/device optional) but leaves ambiguity about the exact shape of 'language info' and 'timestamped segments.' It also does not explain how the output feeds into sibling tools generate_srt or burn_captions, which matters for an agent selecting downstream actions.

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 0%, so the Args section compensates well: it defines path as the input file, enumerates Whisper model sizes (tiny/base/small/medium/large-v3), and lists device choices (auto/cpu/cuda). This adds real meaning beyond the schema's bare titles and defaults, though it does not go into path format or file-type restrictions.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Transcribe an audio or video file' and clearly states the output: 'return language info + timestamped segments.' It does not explicitly contrast with sibling tools generate_srt or burn_captions, but the action and output type largely make the tool's role clear.

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 when to use the tool: when a raw transcription with language metadata and timestamped segments is needed, rather than SRT generation or caption burning. However, it does not explicitly state when to prefer this tool over the sibling tools, nor does it provide exclusions or workflow positioning.

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.

  1. 3 tool updatesv0.1.0
    • First observedburn_captions
    • First observedgenerate_srt
    • First observedtranscribe

TDQS

A3.9/5.0

Scored across 3 tools

Disambiguation4/5

transcribe and generate_srt both involve transcription, but their output types are clearly different: one returns structured segments while the other writes an SRT file. burn_captions is completely distinct, focusing on video rendering rather than audio processing.

Naming Consistency4/5

generate_srt and burn_captions follow a clear verb_noun pattern. transcribe is a bare verb, which is a minor deviation, but it is still short, predictable, and fits the domain.

Tool Count5/5

Three tools is well-scoped for a whisper-focused server. Each tool covers a meaningful step in the transcription/subtitling workflow without unnecessary redundancy.

Completeness4/5

The core workflow of transcribing audio, generating subtitles, and burning them into video is fully covered. Minor gaps like explicit plain-text transcript export or translation are absent, but they can be worked around from the timestamped segments.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers