Skip to main content
Glama

Why This MCP Server?

Connect Claude, Cursor, Windsurf, or any MCP client to YouTubeTranscript.dev — no custom code. Your AI assistant gets tools to extract transcripts, list history, and manage content at scale.

  • ⚡ Fast caption extraction — Manual or auto captions, returns in seconds

  • 📚 Transcript history — List, search, and paginate your transcripts

  • 🎯 Full control — Get stats, delete transcripts, fetch by video ID

  • 🔌 One config — Works with Claude, Cursor, Windsurf, VS Code, Cline

  • 🔒 User-owned keys — API key per connection, no server-side secrets

→ Get your free API key


Related MCP server: youtube-summarize

Quick Start

Remote MCP URL: https://mcp.youtubetranscript.dev

Claude, Cursor, and VS Code can add this as a remote MCP connector. ChatGPT users must enable Developer mode and create a custom app with this URL; availability depends on the workspace plan. OAuth-capable clients sign in once, so no API key is needed in the chat.

Client

One-click

Claude

Add custom connector

ChatGPT

Developer mode / custom MCP app setup or Custom GPT

Cursor

Install

VS Code

Install

Claude Code

claude mcp add --transport http youtubetranscript https://mcp.youtubetranscript.dev

Grok

grok mcp add --transport http youtubetranscript https://mcp.youtubetranscript.dev

Full walkthrough: youtubetranscript.dev/resources/mcp-server

API key clients (if the tool has no OAuth): send Authorization: Bearer YOUR_API_KEY. x-api-token still works. Get a key from the account page.

Run locally (optional): npm install && npm run build && npm run start:http — then connect to http://localhost:8080.


MCP Connection Settings

Claude Code

claude mcp add --transport http youtubetranscript https://mcp.youtubetranscript.dev

Claude Desktop

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "youtubetranscript": {
      "url": "https://mcp.youtubetranscript.dev",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

Cursor

.cursor/mcp.json:

{
  "mcpServers": {
    "youtubetranscript": {
      "url": "https://mcp.youtubetranscript.dev",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "youtubetranscript": {
      "serverUrl": "https://mcp.youtubetranscript.dev",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

VS Code + Copilot

settings.json:

{
  "mcp": {
    "servers": {
      "youtubetranscript": {
        "url": "https://mcp.youtubetranscript.dev",
        "headers": { "Authorization": "Bearer YOUR_API_KEY" }
      }
    }
  }
}

Cline

Add to your Cline MCP config (format may vary by Cline version):

{
  "youtubetranscript": {
    "url": "https://mcp.youtubetranscript.dev",
    "headers": { "Authorization": "Bearer YOUR_API_KEY" }
  }
}

Replace YOUR_API_KEY with your API key from youtubetranscript.dev/dashboard/account.


Configuration

Server Environment (for deployment)

Variable

Description

Default

YTSM_BASE_URL

Base URL of the API

https://www.youtubetranscript.dev

MCP_PUBLIC_URL

Public MCP origin

https://mcp.youtubetranscript.dev

YTSM_TIMEOUT_MS

Request timeout in ms

30000

PORT

HTTP server port

8080

DEBUG

Enable debug logging

false (set true to enable)

Note: HTTP mode uses OAuth where the client supports it, including compatible Claude, Cursor, VS Code, and Grok clients. ChatGPT requires Developer mode and a custom MCP app. API-key clients can send Authorization: Bearer / x-api-token from the client. Do not put user keys in server env. For stdio mode, set YTSM_API_KEY. Always set YTSM_BASE_URL to https://www.youtubetranscript.dev — the apex host 301s and breaks POST/auth.


Tools Reference

Tool

Best for

Returns

get_stats

Credits, transcripts count, plan

credits, transcripts_total, plan, rate_limit

transcribe_v2

Create/fetch transcript (fast)

Transcript JSON

list_transcripts

List user transcripts

History list with pagination

get_transcript

Get full transcript by video_id

Transcript detail

delete_transcript

Delete transcript(s)

Delete result

get_stats

Credits left, transcripts created, plan, rate limit. No parameters.

transcribe_v2

Fast caption-based transcript (no ASR). Uses manual or auto captions only.

Parameter

Required

Description

video

Yes

YouTube URL or 11-character video ID

language

No

Language tag (e.g. en, en-US)

source

No

auto (default) or manual

format

No

{ timestamp, paragraphs, words } booleans

list_transcripts

List transcript history for the authenticated user.

Parameter

Required

Description

search

No

Search by video id, title, or transcript text

limit

No

How many to return (default 10)

page

No

Page number (default 1)

status

No

all, queued, processing, succeeded, failed

language

No

Language filter (e.g. en)

include_segments

No

Include transcript segments in response

get_transcript

Get full transcript by video_id.

Parameter

Required

Description

video_id

Yes

YouTube video ID

id

No

Transcript record id for specific version

language

No

Language filter

source

No

auto, manual, or asr

include_timestamps

No

Include timestamps in response

delete_transcript

Delete transcript records.

Parameter

Required

Description

ids

No*

Array of transcript record ids to delete

video_id

No*

Convenience: delete by video id (resolves id)

*Provide at least one of ids or video_id.


Deployment (Optional)

For production, deploy to a service that supports long-lived connections (e.g. Cloud Run, Railway, Fly.io). Avoid serverless (Vercel, Lambda) for MCP — timeouts and concurrency limits cause issues.

docker build -f Dockerfile.cloudrun -t gcr.io/YOUR_PROJECT/youtube-transcript-mcp .
docker push gcr.io/YOUR_PROJECT/youtube-transcript-mcp
gcloud run deploy youtube-transcript-mcp --image gcr.io/YOUR_PROJECT/youtube-transcript-mcp ...

Stdio (Alternative)

Run as a subprocess instead of HTTP. Required: set YTSM_API_KEY in env (API key is not passed per-request for stdio).

{
  "mcpServers": {
    "youtubetranscript": {
      "command": "node",
      "args": ["dist/index.js"],
      "env": { "YTSM_API_KEY": "YOUR_API_KEY" }
    }
  }
}

Run from the project directory after npm run build. For globally installed package, use the path to dist/index.js in the package.


Development

npm install
npm run build
npm test
npm run start:http   # Local HTTP server (port 8080)

Quick test all tools (requires YTSM_API_KEY in env):

npm install && npm run build
export YTSM_API_KEY=your_key   # bash/mac
$env:YTSM_API_KEY="your_key"   # PowerShell
npm run test:all

See QUICK_TEST.md for full testing instructions.



License

MIT License — see LICENSE for details.

Available Tools

5 tools
delete_transcriptCInspect

POST /api/v1/transcripts/bulk-delete. Delete transcripts by ids or by video_id.

Inputs: ids, video_id.

get_statsBInspect

Get stats: credits left, transcripts created, plan, rate limit.

Inputs: no named parameters.

get_transcriptCInspect

GET /api/v1/transcripts/{video_id}. Get full transcript for a video.

Inputs: video_id (required), id, language, source, +1 more.

list_transcriptsBInspect

GET /api/v1/history. List or search user transcripts. Use search to find by video id, title, or transcript content.

Inputs: search, limit, page, status, +2 more.

transcribe_v2BInspect

POST /api/v2/transcribe. Fast caption-based transcript (no ASR). Use manual or auto captions only.

Inputs: video (required), language, source, format.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose with no overlap: get_transcript retrieves a single transcript, list_transcripts searches or lists multiple, transcribe_v2 creates new transcripts, delete_transcript removes them, and get_stats provides account metadata. An agent can easily distinguish these functions.

    Naming Consistency4/5

    Four tools follow a consistent verb_noun pattern (get_transcript, list_transcripts, delete_transcript, get_stats), but transcribe_v2 deviates slightly with a version suffix. This minor inconsistency doesn't hinder readability, though it breaks perfect uniformity.

    Tool Count5/5

    Five tools is well-scoped for a YouTube transcript server, covering core operations (create, read, list, delete) plus account stats. Each tool earns its place without bloat, fitting typical server sizes of 3-15 tools.

    Completeness5/5

    The toolset provides complete CRUD/lifecycle coverage for transcripts: transcribe_v2 (create), get_transcript (read), list_transcripts (list/search), delete_transcript (delete), and get_stats for monitoring. No obvious gaps exist for the domain.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers