Give Claude — or any MCP-compatible AI tool — the ability to transcribe, summarize and translate media, directly from the conversation.
TurnScribe's MCP (Model Context Protocol) server is an open standard, not a Claude-only integration — any MCP-compatible client that supports Streamable HTTP with custom headers can connect to it. We provide tested setup guides for Claude Code and Claude Desktop below, but the same server URL and API key work with any other MCP client too.
Transcribe any public URL — YouTube, TikTok, podcasts, direct media links
Transcribe an uploaded audio/video file
Check the status of a transcription job
Generate an AI summary of a transcript
Translate a transcript into 28 languages
The MCP server is available on the Premium plan, same account and API key as the REST API.
View Premium planYou'll need a Premium plan and an API key. Generate a key from your dashboard once you sign up or log in.
https://mcp.turnscribe.com/
TurnScribe's MCP server works with any MCP client that supports the Streamable HTTP transport with a
custom Authorization header — not just Claude. Below are step-by-step guides for Claude
Code and Claude Desktop, since those are the clients we've tested end to end, followed by the generic
connection details for every other MCP client (Cursor, Windsurf, Cline, VS Code's MCP support, or your
own custom client).
Add TurnScribe as a remote MCP server from the CLI, passing your API key as a Bearer token:
claude mcp add --transport http turnscribe https://mcp.turnscribe.com/ \
--header "Authorization: Bearer <API_KEY>"
Claude Desktop's connector UI doesn't have a field for custom headers, so authenticating with an API key
needs the mcp-remote bridge. Add this to your claude_desktop_config.json:
{
"mcpServers": {
"turnscribe": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.turnscribe.com/", "--header", "Authorization:Bearer <API_KEY>"]
}
}
}
Restart Claude Desktop after saving the config for it to pick up the new server.
Any MCP client that supports the Streamable HTTP transport with custom headers — Cursor, Windsurf, Cline, VS Code's MCP support, or your own code using an MCP SDK — can connect with just two pieces of information:
https://mcp.turnscribe.com/Authorization: Bearer <API_KEY>Check your client's own documentation for exactly where to enter a remote MCP server URL and a custom header — the config field names vary, but the URL and header above are all TurnScribe needs.
Note: claude.ai's web "Add custom connector" dialog does not work with this server — it only offers a URL field plus OAuth Client ID/Secret, with no field for a custom header, and TurnScribe's MCP server authenticates with a static API key, not OAuth. Use Claude Code, Claude Desktop, or any other MCP client that supports custom headers instead.
Transcribe audio/video from a public URL (YouTube, TikTok, podcast, direct media link, etc). Returns immediately with a PENDING status and a transcript_id to poll with get_transcription_status — unless this exact URL was already transcribed, in which case it returns COMPLETED instantly.
Parameters
url (string) — the media URL to transcribeReturns
{ "status": "PENDING", "transcript_id": "...", "task_id": "..." }
Transcribe an audio/video file uploaded as base64-encoded bytes. Returns a PENDING status and a transcript_id to poll with get_transcription_status.
Parameters
filename (string) — must include the real extension (e.g. "recording.mp3") so the format can be validatedfile_base64 (string) — the file content, base64-encoded. Note: base64 inflates payload size by about 33%, so very large files may be impractical over this transport even if under the account's normal upload size limit.Returns
{ "status": "PENDING", "transcript_id": "...", "task_id": "..." }
Poll the status of a transcription started with transcribe_url or transcribe_file.
Parameters
transcript_id (string) — the value returned by transcribe_url or transcribe_fileReturns
{ "status": "COMPLETED", "transcript_id": "...", "content": "...", "title": "..." }
Generate (or check) an AI summary of a completed transcript. Call once to trigger it, call again with the same transcript_id to check progress.
Parameters
transcript_id (string)Returns
{ "status": "COMPLETED", "summary": "..." }
Translate a completed transcript into another language. Rate-limited to once per day per transcript, regardless of target language, to control model cost.
Parameters
transcript_id (string)target_lang (string) — one of the 28 supported ISO codes: English, Spanish, French, German, Italian, Portuguese, Dutch, Russian, Chinese, Japanese, Korean, Arabic, Hindi, Turkish, Polish, Vietnamese, Thai, Indonesian, Swedish, Greek, Hebrew, Ukrainian, Czech, Romanian, Hungarian, Danish, Finnish, NorwegianReturns
{ "status": "COMPLETED", "translation": "...", "target_lang": "..." }
Possible errors
{"error": "Missing API key."}{"error": "This API key is not linked to an account. MCP access requires an account-linked API key."}{"error": "Your plan does not include MCP access."}{"error": "Transcript not found"}{"error": "AI summaries are not available for this transcription or plan."}{"error": "Translation is not available for this plan."}{"error": "You can only translate this transcription once per day. Please try again tomorrow."}Questions or need help setting it up? Reach out at [email protected].