Token导航 LogoToken导航TokenDH.com
Ironbeard MCP Youtube logo
音视频未说明官方级别未说明来源级核验

Ironbeard MCP Youtube

MCP Server

一个用于抓取YouTube视频字幕的Rust服务器工具,支持多种输出格式和语言解析,适用于内容分析和字幕处理场景。

工具数

1

提示词数

0

GitHub Stars

5

资源数

0
内容分析RustClaudeClaude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Alatar86

提供方

Alatar86

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

铁胡子mcp youtube

用于提取YouTube视频转录的MCP服务器。单一Rust二进制文件。不需要Python、Node或yt-dlp。

特性

  • 从任何有字幕的YouTube视频中抓取文字记录
  • 四种输出格式:纯文本、带时间戳、SRT字幕、JSON
  • 具有前缀匹配和自动回退功能的语言解析
  • 基于文件的缓存,具有7天TTL(SHA-256哈希密钥)
  • 网络错误指数回退的重试
  • 使用YAML frontmatter将成绩单保存为markdown
  • 适用于Linux、macOS和Windows
  • 插入Claude Desktop、Cursor或任何MCP客户端

安装

git clone https://github.com/Alatar86/ironbeard-mcp-youtube.git
cd ironbeard-mcp-youtube
cargo build --release

Binary登陆 target/release/ironbeard-mcp-youtube.

用法

MCP服务器设置

服务器通过stdio运行。将MCP客户端指向二进制文件。

克劳德桌面 (~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "youtube-transcript": {
      "command": "/path/to/ironbeard-mcp-youtube"
    }
  }
}

光标 (.cursor/mcp.json 在工作区根目录中):

{
  "mcpServers": {
    "youtube-transcript": {
      "command": "/path/to/ironbeard-mcp-youtube"
    }
  }
}

工具: get_youtube_transcript

参数类型必填说明
urlstringYouTube视频URL或11个字符的视频ID
languagestringBCP-47语言代码(例如。, en, es, ja).默认为视频的主要语言。
formatstring输出格式: plain (默认), timestamped, srt, json

接受的URL格式:

  • https://www.youtube.com/watch?v=VIDEO_ID
  • https://youtu.be/VIDEO_ID
  • https://youtube.com/embed/VIDEO_ID
  • 原始11个字符的视频ID(例如。, dQw4w9WgXcQ)

命令行选项

标志描述默认值
`--transcript-dir
`在哪里保存成绩单 .md 文件~/Documents/youtube-transcripts
`--cache-dir
`在哪里存储缓存的转录JSON平台缓存目录(见下文)

作为Rust库

use ironbeard_mcp_youtube::{TranscriptService, OutputFormat, SaveOutcome};

#[tokio::main]
async fn main() -> anyhow::Result {
    let service = TranscriptService::new()?;

    let result = service
        .get_transcript("dQw4w9WgXcQ", Some("en"), OutputFormat::Plain)
        .await?;

    println!("{}", result.formatted_text);
    match &result.save_outcome {
        SaveOutcome::Saved(path) => println!("Saved to: {}", path.display()),
        SaveOutcome::Failed(err) => eprintln!("Save failed: {}", err),
        SaveOutcome::NotAttempted => {}
    }
    Ok(())
}

输出格式

平原

所有用空格连接的标题文本:

We're no strangers to love You know the rules and so do I...

时间戳

每段前缀为 [HH:MM:SS]:

[00:00:18] We're no strangers to love
[00:00:22] You know the rules and so do I

字幕

标准字幕格式:

1
00:00:18,000 --> 00:00:22,000
We're no strangers to love

2
00:00:22,000 --> 00:00:27,000
You know the rules and so do I

JSON

结构化数组:

[
  {"start": 18.0, "duration": 4.0, "text": "We're no strangers to love"},
  {"start": 22.0, "duration": 5.0, "text": "You know the rules and so do I"}
]

保存的成绩单

每个成绩单都保存为一个名为的markdown文件 {title} - {author}.md 使用YAML frontmatter:

---
title: "Never Gonna Give You Up"
author: "Rick Astley"
video_id: "dQw4w9WgXcQ"
url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
language: "en"
duration: "00:03:33"
duration_seconds: 213
date_saved: "2026-02-17"
---

# Never Gonna Give You Up

We're no strangers to love You know the rules and so do I...

配置

环境变量描述默认值
TRANSCRIPT_DIR在哪里 .md 转录文件已保存~/Documents/youtube-transcripts

您可以在MCP客户端配置中进行设置:

{
  "mcpServers": {
    "youtube-transcript": {
      "command": "/path/to/ironbeard-mcp-youtube",
      "env": {
        "TRANSCRIPT_DIR": "/path/to/my/transcripts"
      }
    }
  }
}

--transcript-dir CLI标志优先于环境变量。

缓存

转录作为JSON文件缓存在平台缓存目录中:

平台目录
Linux~/.cache/ironbeard-mcp-youtube/
macOS~/Library/Caches/ironbeard-mcp-youtube/
窗户%LOCALAPPDATA%\ironbeard-mcp-youtube\

缓存密钥是SHA-256哈希值 video_id + language。参赛作品将在7天后过期,并在访问时进行清理。

运作原理

  1. 从URL或原始ID解析视频ID
  2. 检查文件缓存中的有效条目
  3. 在错过时,点击YouTube的内胎 /player 用于元数据和字幕轨道URL的API
  4. 从解析的字幕轨道中获取timedtext XML
  5. 将XML解析为转录行,解码HTML实体
  6. 将结果缓存为JSON
  7. 使用YAML frontmatter将成绩单另存为markdown
  8. 以请求的输出格式格式化并返回成绩单

语言解析首先尝试精确匹配,然后尝试前缀匹配(en 火柴 en-US),然后回落到第一个可用曲目。网络请求最多重试3次,采用指数回退(1s、2s、4s)。

建筑

src/
  main.rs           - Entry point, CLI args, starts MCP server on stdio
  lib.rs            - Public API exports
  server.rs         - MCP server (rmcp 0.15), tool definitions
  service.rs        - TranscriptService: fetch, cache, format, save
  config.rs         - Configuration (directories, env vars, defaults)
  youtube/
    mod.rs          - Video ID parsing, module exports
    api.rs          - Transcript fetching with retry logic
    client.rs       - HTTP client with cookie/consent handling
    parser.rs       - Player API JSON, timedtext XML, and json3 parsing
    proto.rs        - Manual protobuf encoding for innertube params
    types.rs        - Data structures (TranscriptLine, VideoMetadata, etc.)
    error.rs        - Error types (VideoNotFound, NoCaptions, RateLimited, etc.)
  processing/
    mod.rs          - Output formatters (plain, timestamped, SRT, JSON)
  cache/
    mod.rs          - File-based transcript cache with SHA-256 keys and TTL
tests/
  integration_test.rs - End-to-end tests against live YouTube

依赖项

板条箱用途
rmcpMCP服务器框架(stdio传输)
tokio异步运行时
reqwest支持cookie的HTTP客户端
serde / serde_json序列化
schemarsMCP工具输入的JSON模式生成
regexURL解析、XML提取
sha2缓存密钥哈希
dirs特定于平台的目录解析
clapCLI参数解析
chrono封面的日期格式
anyhow应用程序错误处理
thiserror错误类型推导
tracing / tracing-subscriber结构化日志记录
base64 / urlencoding用于内胎API的Protobuf参数编码
slug非拉丁标题的文件名屏蔽
lazy_static静态正则表达式编译

发展

# Unit tests (offline)
cargo test --lib

# All tests including integration (hits YouTube)
cargo test

# Check formatting
cargo fmt --check

# Lint
cargo clippy

# Build release
cargo build --release

局限性

  • 视频需要字幕(人工或自动生成)
  • 视频必须公开
  • 语言可用性取决于YouTube的内容
  • 快速请求可能会受到速率限制(服务器会自动重试)

许可证

麻省理工学院

联系

Bug报告: 或Ironbeardai@gmail.com

目录标签

目录标签

内容分析RustClaude字幕抓取本地部署多语言支持Rust工具YouTubeAPI

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP