Give Claude direct access to subtitle videos with one MCP install

There is a specific kind of workflow that breaks the "ask Claude, copy output, paste somewhere else" loop. Subtitling video is one of them. You have a file. You want it back with subtitles burned in. Anything in between is friction.

With one install, Claude can do the whole round trip itself. It uploads the video, watches the job, and hands you back the URL when the subtitled file is ready. You stay in the chat.

What gets installed

The Subtitles King MCP server exposes four tools to the model:

  • start_upload — reserve a slot. Returns a presigned upload URL the agent uploads to with curl. Bytes never enter the LLM context.
  • get_video_status — poll the job until it is done.
  • get_transcript — return the raw SRT transcript inline (it's small).
  • get_download_url — return a presigned URL for the burned-in video. The agent fetches it with curl.

Behind those tools, the actual pipeline runs ffmpeg to compress the input, sends the audio to OpenAI Whisper (large model), then runs ffmpeg again to burn the subtitles back into the video. The model does not need to know any of that. It calls the tool and waits.

One-line install for Claude Code

claude mcp add --transport http subtitlesking https://brains.subtitlesking.com/mcp

That is the full install. The hosted MCP at brains.subtitlesking.com speaks streamable-HTTP, which Claude Code supports natively. Restart the session and the four tools show up in the tool list.

If you would rather run the server locally — no network round trip, no shared backend — the open-source binary is at github.com/kirillzubovsky/subtitlesking-mcp. Build it once, point Claude at the executable, and you get the same tool surface over stdio.

Claude Desktop

Open claude_desktop_config.json and add the server:

{
  "mcpServers": {
    "subtitlesking": {
      "url": "https://brains.subtitlesking.com/mcp"
    }
  }
}

Restart Claude Desktop. The tools appear in the MCP indicator.

Full install matrix for Cursor, Zed, and the rest is in the MCP docs.

What a real conversation looks like

Once the server is registered, you talk to Claude the way you always do. Here is the kind of exchange the install enables:

You: I have a 40 MB MP4 at /Users/me/talk.mp4. Burn English subtitles into it and send me the link.

Claude: Reserving an upload slot. (calls start_upload with filename="talk.mp4", gets back an upload_url and an 8-digit auth_token)

Uploading the file out-of-band so it doesn't go through the chat. (runs curl -F file=@/Users/me/talk.mp4 'https://...')

Watching the job. (calls get_video_status until status=subtitles_burned)

Done. (calls get_download_url, runs curl -o talk-subtitled.mp4 …)

Four tool calls plus two curl invocations the agent runs itself. The video bytes never travel through the conversation. You can layer real work on top: ask Claude to first inspect the transcript with get_transcript, edit the timing, then re-run with the corrected captions. It is a single agent loop instead of a five-tab workflow.

Practical notes

A few things worth knowing before you start:

  • Free tier. The hosted MCP runs on the same backend as the web product. Free accounts get videos up to 100 MB and 24 hour file retention. That is enough for most ad hoc clips and conversation testing. Heavier workloads need a paid plan, see /pricing.
  • Whisper does the work. The transcription quality is OpenAI Whisper large. If you do not like Whisper output for your domain, you will not like ours either. Bring vocabulary fixes via prompt-side editing of the transcript before re-burning.
  • Languages. Whisper handles 90+ languages out of the box. Pass the ISO code as the language argument. Auto-detect works too if you leave it off.
  • Local files. When using stdio transport with the open-source binary, the server can read local paths directly. With the hosted MCP you need a URL. A short-lived signed URL from S3 or R2 is the cleanest pattern.

Why this matters

Most AI tools you bolt onto Claude are read-only. They fetch a thing, they search a thing, they look something up. Subtitling is one of the first practical write workflows: the agent produces a real artifact you were going to make anyway, and it does it during the conversation instead of after it.

If you build agentic workflows, this is the floor for what "file in, file out" looks like through MCP. Install it once and the behavior compounds — every future conversation can subtitle a video without you doing anything but asking.

The fastest way to verify it works is to install the server and ask Claude to subtitle a public video URL. If you want to see it without installing first, the same pipeline is available on the web at /try. The MCP details and tool reference live at /mcp and /docs/mcp.