Comparison

Subtitles King vs Self-hosted MCP

Same tools. Same protocol. Different tradeoffs.

TL;DR

At a glance.

FeatureSubtitles KingSelf-hosted MCP
Setup time1 line~5 minutes
CostFree tierYour hardware
PrivacySent to our backend100% your network
Rate limitsYes (free tier)None
UpdatesAutoManual
MCP tools exposedSame 4Same 4
Air-gap possible
Hardware neededNoneCPU + (GPU)

When Self-hosted MCP wins

  • Videos never leave your network — full data residency control.
  • No rate limits — process as many videos as your hardware allows.
  • Customize the pipeline (different Whisper model, different ffmpeg flags).
  • Works behind a corporate firewall.

When Subtitles King wins

  • No hardware to provision, no ffmpeg or Whisper to install.
  • Always running the latest version.
  • Lower latency for occasional/bursty workloads (no cold starts).
  • Free tier covers most individual developer needs.

Code

Setup, side by side.

Subtitles King
# Hosted: register one URL
claude mcp add --transport http subtitlesking \
  https://brains.subtitlesking.com/mcp
Self-hosted MCP
# Self-host: install the bridge, point at your backend
curl -L https://github.com/kirillzubovsky/subtitlesking-mcp/releases/latest/download/subtitlesking-mcp-darwin-arm64.tar.gz \
  | tar -xz
sudo mv subtitlesking-mcp /usr/local/bin/

SUBTITLESKING_URL=http://your-server:8080 \
claude mcp add subtitlesking $(which subtitlesking-mcp)

FAQ

Common questions.

Can I switch from hosted to self-host later?+

Yes — it's the same MCP tools either way. Your agents and prompts don't change. Just swap the URL or binary.

Is the protocol the same?+

Yes. Both flavors expose the same four tools (start_upload, get_video_status, get_transcript, get_download_url) over JSON-RPC 2.0. Bytes never travel through the LLM context — start_upload returns a presigned URL the agent uploads to with curl.

What about a hybrid — local MCP binary, hosted backend?+

That's actually the default. The MCP binary defaults to forwarding to brains.subtitlesking.com. Useful if your client doesn't support streamable-HTTP yet.

Try it. Three lines, free.