MCP server
Transcribe from Claude.ai, ChatGPT, Claude Code, Cursor, Codex, and Claude Desktop.
The MCP server exposes transcription as tools your AI agent can call directly. Two ways to
connect: a remote server (hosted, for Claude.ai / ChatGPT web and any HTTP client) and a
local server (runs over stdio via npx, for Claude Code / Cursor / Codex / Claude Desktop).
Remote server (Claude.ai / ChatGPT)
The hosted server lives at https://mcp.transcribevideototext.com/mcp and authenticates
with OAuth — you sign in once, no API key to paste.
- In Claude.ai: Settings → Connectors → Add custom connector (in ChatGPT: Settings → Connectors → Developer mode → Create).
- Enter the URL
https://mcp.transcribevideototext.com/mcp. - Connect and sign in. The transcription tools appear in your chat.
Remote from Claude Code (or any HTTP client)
Programmatic clients can use the same endpoint with an API-key header instead of OAuth:
claude mcp add vtt --transport http https://mcp.transcribevideototext.com/mcp --header "Authorization: Bearer vtt_your_key"The remote transcribe tool accepts a url or storagePath (no local file path) and returns
a job id immediately — poll it with get_transcription. The url is fetched server-side,
so use a direct media link (see Transcribe from a link).
Local server (stdio)
Runs locally over stdio and authenticates with your API key — no hosting needed.
Claude Code
claude mcp add vtt -e VTT_API_KEY=vtt_your_key -- npx -y @transcribevideototext/mcp-serverRestart Claude Code, then ask: "Transcribe ./interview.mp4 with speaker labels."
Cursor / Claude Desktop
Add to your MCP config:
{
"mcpServers": {
"vtt": {
"command": "npx",
"args": ["-y", "@transcribevideototext/mcp-server"],
"env": { "VTT_API_KEY": "vtt_your_key" }
}
}
}Codex
Add to ~/.codex/config.toml:
[mcp_servers.vtt]
command = "npx"
args = ["-y", "@transcribevideototext/mcp-server"]
env = { VTT_API_KEY = "vtt_your_key" }Transcribe from a link
Paste a url into transcribe and it's handled one of two ways:
- A direct media link — a URL ending in a media file like
.mp3or.mp4— is fetched server-side, with no download. This works on both the remote and local servers. - A page from a video or social site — YouTube, X, LinkedIn, TikTok, Vimeo, and hundreds of other sites — can't be read server-side (datacenter IPs get blocked). The local (stdio) server downloads these on your own machine first, so it uses your own IP, then uploads and transcribes. The downloader is fetched automatically on first use (~30 MB, cached); audio is preferred to keep downloads small.
Downloading from a page link works only on the local server — the hosted remote server
fetches every url server-side, so paste a direct media link there. Public content only:
gated, private, or age-restricted posts (which require a login) aren't supported.
Tools
| Tool | Description |
|---|---|
transcribe | Transcribe a url, local filePath, or storagePath. Waits for the transcript by default. |
get_transcription | Fetch a job's status and result by id. |
list_transcriptions | List the account's transcriptions. |
delete_transcription | Delete a job (refunds if in progress). |
create_upload_url | Advanced: sign an upload URL to PUT bytes yourself. |
Environment
| Var | Description |
|---|---|
VTT_API_KEY | Required. A key from Developers → API Keys. |