JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 31
  • Score
    100M100P100Q65821F
  • License MIT

MCP server for ripping YouTube transcripts. Saves each transcript to disk and returns a resource link — persistent artifacts, not ephemeral context. Built for AI agents, RAG pipelines, and LLM workflows.

Package Exports

  • rippr-mcp
  • rippr-mcp/build/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (rippr-mcp) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

rippr-mcp

MCP Badge rippr MCP server

YouTube transcript extraction for AI agents. MCP server for Claude, Cursor, and any MCP-compatible client.

Saves each transcript as a file and returns the path. Model context stays clean.

No API keys. No signup. Runs locally.

Website · Chrome Extension · npm

Requires a desktop client

rippr runs as a local stdio process. Works with Claude Desktop, Claude Code CLI, Cursor, and any client that can spawn local processes.

It does not work with cloud-hosted clients: claude.ai on the web, the Claude mobile app, or Claude Code on phone / web. Those environments can't launch local Node processes, so stdio MCPs like rippr can't be reached from them. Run it from a desktop.

Install

npx rippr-mcp

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "rippr": {
      "command": "npx",
      "args": ["-y", "rippr-mcp"]
    }
  }
}

Claude Code

claude mcp add rippr -- npx -y rippr-mcp

How it behaves

When you ask Claude to rip a YouTube video:

  1. Claude calls rip_transcript with the URL.
  2. rippr writes the transcript to ~/rippr/transcripts/<slug>_<videoId>.md and returns a resource_link plus metadata (title, channel, language, duration, word count, saved path, preview). The full transcript text is not returned by default.
  3. Claude tells you where the file was saved.
  4. Follow-ups ("summarize it", "find the part about X") read the saved resource instead of re-ripping.

Tools

rip_transcript

Extract and save a YouTube transcript.

Parameter Type Required Default Description
url string yes Any YouTube URL format
format string no "text" "text" → Markdown with frontmatter. "segments" → JSON with timestamped segments.
save_path string no ~/rippr/transcripts/ Override save location. Accepts absolute paths, ~/-relative paths, directories, or full file paths.
return_text boolean no false Include the full transcript text inline in the tool response. Use for short clips or when the text is needed inline.

Response shape:

  • A resource_link pointing at the saved file (file://…), with mime type text/markdown or application/json.
  • A text summary: title, channel, language, duration, word count, segment count, URL, 240-char preview, and the saved path.
  • Optionally, the full transcript text (when return_text: true).

Saved Markdown file:

---
title: "Video Title"
channel: "Channel Name"
language: en (auto-generated)
videoId: abc123XYZ45
videoUrl: https://www.youtube.com/watch?v=abc123XYZ45
durationSeconds: 1289
rippedAt: 2026-04-17T14:22:00.000Z
---

# Video Title

> by Channel Name

Full transcript text as a single continuous block…

Saved JSON file (when format: "segments"):

{
  "title": "Video Title",
  "channel": "Channel Name",
  "language": "en",
  "isAutoGenerated": true,
  "videoId": "abc123XYZ45",
  "videoUrl": "https://www.youtube.com/watch?v=abc123XYZ45",
  "segmentCount": 142,
  "segments": [
    { "start": 0.5, "duration": 2.1, "text": "Hello world" }
  ],
  "rippedAt": "2026-04-17T14:22:00.000Z"
}

Prompts

Prompt Description
get_transcript Rip a video. Saves to disk.
summarize_video Rip, read the saved file, summarize.
extract_quotes Rip, read the saved file, pull quotes. Optional topic.
compare_videos Rip two videos, compare.
research_topic Rip and extract info about a specific topic.

Resources

Resource URI Description
Output Formats rippr://formats Format reference (text vs segments) and the default save dir
Saved transcripts file:// URIs under ~/rippr/transcripts/ Every previously ripped transcript, surfaced as a readable resource

Saved transcripts are listed dynamically. The client can enumerate them via resources/list and read any one via resources/read without re-ripping the video.

Example queries

Rip this video: https://www.youtube.com/watch?v=fpETS6q1Hww
Summarize the key points from this talk: https://youtu.be/abc123
What does this video say about machine learning? https://www.youtube.com/watch?v=xyz
Compare these two videos: [url1] [url2]

How it works

  1. Tries YouTube's InnerTube API (Android client) first
  2. Falls back to HTML scraping if InnerTube fails
  3. Parses caption XML in multiple formats (srv3, timedtext, classic)
  4. Retries with exponential backoff on transient failures
  5. Writes Markdown or JSON to ~/rippr/transcripts/ (or the path you pass)

No API keys required. Runs entirely on your machine.

Privacy

Runs locally. Talks to YouTube's own APIs to fetch caption data, and writes transcript files to your filesystem. No telemetry, no analytics, no tracking. Resource reads are restricted to the default save directory.

License

MIT