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

MCP Youtube Transcript Pro

MCP Server

ts-node

一个生产就绪的MCP服务器,用于获取YouTube视频字幕及相关元数据,支持多种输出格式和预处理选项。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
多格式支持TypeScriptClaudeClaude DesktopClaudeVS Code

安装说明

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

作者 / 组织

thisis-romar

提供方

thisis-romar

最后核验

2026/5/17 20:21

运行时

Node.js

快速接入

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

命令预览

npx ts-node test-mcp-tools.ts

详细介绍

MCP YouTube字幕专业版

一个可投入生产的模型上下文协议(MCP)服务器,用于获取带有元数据的YouTube视频字幕。

🎯 特点

  • 4 MCP 工具完整实现 list_tracks、get_transcript、get_timed_transcript、get_video_info 功能
  • 混合架构YouTube数据API v3用于元数据 + yt-dlp用于稳健的内容提取
  • 完全符合MCP(可能指某种标准、协议或规范,具体需根据上下文确定)通过stdin/stdout使用的JSON-RPC 2.0协议
  • 经过实战检验全面的测试套件,成功率100%
  • 生产质量使用严格类型的TypeScript,完善的错误处理,详细的日志记录
  • 无需OAuth使用API密钥获取元数据,使用yt-dlp获取字幕内容(无需OAuth 2.0的复杂性)

📋 先决条件

  1. Node.js 20多个版本 (用于运行MCP服务器)
  2. YouTube数据API密钥 (提供免费套餐)
  3. yt-dlp (用于提取转录本)

安装 yt-dlp

Windows(winget)

winget install yt-dlp

macOS(使用Homebrew)

brew install yt-dlp

Linux(curl):

sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp

获取YouTube API密钥

  1. 首选 Google Cloud 控制台
  2. 创建一个新项目(或选择现有项目)
  3. 启用“YouTube Data API v3”
  4. 创建凭据 → API密钥
  5. 复制API密钥

🚀 快速入门

安装

# Clone or navigate to the project directory
cd mcp-youtube-transcript-pro

# Install dependencies
npm install

# Create .env file with your API key
echo "YOUTUBE_API_KEY=your_api_key_here" > .env

# Build the project
npm run build

运行测试

# Test all four MCP tools directly
npx ts-node test-mcp-tools.ts

# Test the JSON-RPC protocol implementation
npx ts-node test-mcp-protocol.ts

启动服务器

# Start the MCP server (listens on stdin/stdout)
npm run start

🔧 与Claude桌面版的使用

添加到您的Claude桌面配置中(claude_desktop_config.json):

{
  "mcpServers": {
    "youtube-transcript": {
      "command": "node",
      "args": [
        "H:\\-EMBLEM-PROJECT(s)-\\Tools\\packages\\mcp-youtube-transcript-pro\\dist\\index.js"
      ],
      "env": {
        "YOUTUBE_API_KEY": "your_api_key_here"
      }
    }
  }
}

将路径替换为您实际的安装目录。

📚 MCP 工具

1. 列出音轨

列出YouTube视频可用的字幕轨道。

输入:

{
  "url": "https://www.youtube.com/watch?v=lxRAj1Gijic"
}

输出

[
  {
    "lang": "en",
    "source": "youtube_api_manual"
  }
]

2. 获取成绩单

返回合并后的纯文本转录稿。

输入

{
  "url": "lxRAj1Gijic",
  "lang": "en"
}

输出

"today we're going to enhance your vs code to ensure that you've got the most efficient workspace..."

3. 获取定时转录文本

返回带有时间戳的转录片段,支持多种格式。

输入:

{
  "url": "https://youtu.be/lxRAj1Gijic",
  "lang": "en",
  "format": "json"
}

输出 (格式: json(默认):

[
  {
    "start": 0.08,
    "end": 0.32,
    "text": "today",
    "lang": "en",
    "source": "web_extraction"
  },
  ...
]

支持的格式

  • json (默认):TranscriptSegment 对象的数组
  • srtSubRip 字幕格式
  • vttWebVTT网络字幕格式
  • csv电子表格格式,共7列
  • txt纯文本格式

格式支持 以下是详细示例。

4. 获取视频信息

返回视频元数据,包括标题、频道、时长以及可用的字幕。

输入

{
  "url": "https://www.youtube.com/watch?v=lxRAj1Gijic"
}

输出

{
  "title": "The ULTIMATE VS Code Setup - Extensions & Settings 2025",
  "channelId": "UCRVtCne4XmwFLot1FHMfhuw",
  "duration": "PT15M23S",
  "captionsAvailable": [
    { "lang": "en", "source": "youtube_api_manual" }
  ]
}

📤 格式支持

这个(或:该) get_timed_transcript 该工具支持5种针对不同使用场景优化的输出格式:

JSON(默认)

结构化数据格式,非常适合程序化处理。

[
  {
    "start": 0.08,
    "end": 4.359,
    "text": "today I'm going to be showing you the best extensions",
    "lang": "en",
    "source": "web_extraction"
  }
]

SRT(SubRip,字幕复制工具)

视频编辑软件(Adobe Premiere、Final Cut Pro、DaVinci Resolve)的标准字幕格式。

1
00:00:00,080 --> 00:00:04,359
today I'm going to be showing you the best extensions

2
00:00:04,359 --> 00:00:07,000
and settings for VS Code in 2025

VTT(WebVTT)

适用于HTML5视频播放器和浏览器的网页原生字幕格式。

WEBVTT

00:00:00.080 --> 00:00:04.359
today I'm going to be showing you the best extensions

00:00:04.359 --> 00:00:07.000
and settings for VS Code in 2025

CSV(逗号分隔值)

用于数据分析的电子表格格式(Excel、Google Sheets、Python pandas)。

Sequence,Start,End,Duration,Text,Language,Source
1,00:00:00.080,00:00:04.359,00:00:04.279,"today I'm going to be showing you the best extensions",en,web_extraction
2,00:00:04.359,00:00:07.000,00:00:02.641,"and settings for VS Code in 2025",en,web_extraction

TXT(纯文本)

用于文档或简单文本提取的人类可读格式。

today I'm going to be showing you the best extensions and settings for VS Code in 2025

使用示例

{
  "url": "https://youtu.be/lxRAj1Gijic",
  "format": "srt"
}

格式对比

格式文件大小\*最佳用途MIME 类型
JSON289 KB数据处理,APIsapplication/json
SRT144 KB视频编辑(Premiere,Final Cut)application/x-subrip
VTT127 KB网页字幕,HTML5 视频text/vtt
CSV175 KB电子表格分析,Exceltext/csv
TXT17.5 KB文档,纯文本text/plain

\*基于一段15分钟的视频,包含3,624个转录片段。

如需了解详细的格式规范、兼容性信息以及决策树,请参阅 FORMATS.md(文件名,可译为“格式说明.md”或保持原样,根据上下文决定是否需要翻译文件名)

🔧 预处理选项

这个(或“它”) get_timed_transcript 该工具包含可选的预处理参数,用于在格式化之前清理和优化转录本数据。出于向后兼容的考虑,默认情况下所有选项均为禁用状态。

过滤空值

移除文本为空或仅包含空白字符的段落。

用例清理自动生成的字幕,其中包含静音时段的计时标记。

示例

{
  "url": "https://youtu.be/lxRAj1Gijic",
  "filterEmpty": true
}

之前 (1,089个片段):

[
  { "start": 0.08, "end": 0.32, "text": "today", ... },
  { "start": 0.32, "end": 0.56, "text": "", ... },
  { "start": 0.56, "end": 1.12, "text": "  ", ... },
  { "start": 1.12, "end": 1.44, "text": "we're", ... }
]

之后 (987个片段,已删除102个):

[
  { "start": 0.08, "end": 0.32, "text": "today", ... },
  { "start": 1.12, "end": 1.44, "text": "we're", ... }
]

合并重叠部分

合并时间戳重叠的片段。

用例修复自动生成字幕中的单词级时间同步问题,其中 end[n] > start[n+1]

示例:

{
  "url": "https://youtu.be/lxRAj1Gijic",
  "mergeOverlaps": true
}

之前 (时间戳重叠)

[
  { "start": 0.08, "end": 1.50, "text": "Hello", ... },
  { "start": 1.20, "end": 2.50, "text": "world", ... }
]

之后 (合并后):

[
  { "start": 0.08, "end": 2.50, "text": "Hello world", ... }
]

去除静音

从字幕中删除静音和暂停标记。

用例创建清晰易读的转录文本,无需(额外步骤/工具等,根据上下文补充完整) [silence][pause][Music] 标记物。

示例

{
  "url": "https://youtu.be/lxRAj1Gijic",
  "removeSilence": true
}

移除的图案 不区分大小写

  • [silence]
  • [pause]
  • [Music]
  • 单周期: .
  • 单破折号: -
  • 空文本/仅包含空白字符的文本

之前:

[
  { "start": 0.08, "end": 0.32, "text": "Hello", ... },
  { "start": 0.32, "end": 1.50, "text": "[silence]", ... },
  { "start": 1.50, "end": 2.80, "text": "[Music]", ... },
  { "start": 2.80, "end": 3.20, "text": "world", ... }
]

之后 (已删除2段):

[
  { "start": 0.08, "end": 0.32, "text": "Hello", ... },
  { "start": 2.80, "end": 3.20, "text": "world", ... }
]

组合期权

所有三种预处理选项可以一起使用。它们的应用顺序如下:

  1. 去除静音 - 移除静音/暂停标记
  2. 过滤空值 - 移除空段落
  3. 合并重叠部分 - 合并重叠的时间戳

示例 (所有选项均启用):

{
  "url": "https://youtu.be/lxRAj1Gijic",
  "filterEmpty": true,
  "mergeOverlaps": true,
  "removeSilence": true,
  "format": "srt"
}

结果

  • 1,089个片段
  • 去除静音后:1,012个片段(移除77个)
  • 过滤后(filterEmpty):987个片段(移除25个)
  • 合并重叠后:342个片段(645个已合并)
  • 决赛342个已清理并合并的SRT格式片段

TypeScript 使用方法

import { get_timed_transcript } from './tools';

// Clean transcript for reading
const cleanTranscript = await get_timed_transcript({
  url: 'https://youtu.be/lxRAj1Gijic',
  filterEmpty: true,
  removeSilence: true,
  format: 'txt'
});

// Optimized subtitle file
const subtitles = await get_timed_transcript({
  url: 'https://youtu.be/lxRAj1Gijic',
  mergeOverlaps: true,
  filterEmpty: true,
  format: 'srt'
});

🏗️ 建筑学

MCP Client (e.g., Claude Desktop)
    ↓ JSON-RPC 2.0 over stdin
MCP Server (index.ts)
    ↓
Tool Router (tools.ts)
    ↓
┌──────────────────────┬─────────────────────────┐
│ YouTube Data API v3  │  yt-dlp (web extraction)│
│ (youtube_api.ts)     │  (web_extraction.ts)    │
├──────────────────────┼─────────────────────────┤
│ • List captions      │ • Get transcript content│
│ • Get video metadata │ • Timestamped segments  │
│ • API key auth       │ • No auth required      │
│ • Quota limits       │ • No quota limits       │
└──────────────────────┴─────────────────────────┘

为何选择混合动力?

  1. YouTube API快速元数据检索,可靠的标题列表

- 局限性\captions.download()\ 需要 OAuth 2.0 认证(不适合自动化服务器使用)

  1. yt-dlp(一种用于从YouTube等网站下载视频的命令行工具)无需认证,积极维护,处理边缘情况

- 优势下载转录内容,无需OAuth复杂性

  1. 两者之优,集于一身元数据API,yt-dlp用于内容提取

📁 项目结构

mcp-youtube-transcript-pro/
├── src/
│   ├── index.ts                 # MCP server entry point (JSON-RPC handler)
│   ├── tools.ts                 # MCP tool implementations
│   ├── types.ts                 # TypeScript interfaces
│   └── adapters/
│       ├── youtube_api.ts       # YouTube Data API v3 integration
│       └── web_extraction.ts    # yt-dlp integration
├── test-mcp-tools.ts            # Direct tool tests
├── test-mcp-protocol.ts         # End-to-end protocol tests
├── package.json
├── tsconfig.json
├── .env                         # YOUTUBE_API_KEY
└── dist/                        # Compiled JavaScript

🧪 测试结果

所有测试均通过,成功率100%:

=== MCP YouTube Transcript Pro - Tool Tests ===
✅ list_tracks passed
✅ get_video_info passed  
✅ get_timed_transcript passed (3624 segments, 15.39 minutes)
✅ get_transcript passed (17917 characters, 3624 words)

=== MCP JSON-RPC Protocol Tests ===
✅ initialize passed
✅ tools/list passed (4 tools)
✅ tools/call (all 4 tools) passed
✅ ping passed

🛠️ 开发

可用脚本

npm run build        # Compile TypeScript to dist/
npm run start        # Start the MCP server
npm run dev          # Start in development mode with auto-reload
npm run lint         # Run ESLint
npm test             # Run Jest tests

VS Code 任务

使用 Ctrl+Shift+B(或在 macOS 上使用 Cmd+Shift+B)来访问预配置的任务:

  • 构建编译TypeScript
  • 开始运行服务器
  • Dev(开发人员/开发者)使用 ts-node 的开发模式
  • Lint(在编程或软件开发中,通常指代码中的无用字符、空格、注释或其他不需要的文本片段,用于清理或优化代码)检查代码质量
  • 测试运行测试套件
  • 安装依赖项npm install

📝 环境变量

创建一个 .env 项目根目录下的文件:

YOUTUBE_API_KEY=your_youtube_data_api_v3_key_here

🔍 故障排除

“未找到 yt-dlp”

  • 解决方案使用包管理器安装 yt-dlp(参见前提条件)
  • 验证yt-dlp --version 在终端(中)

“YOUTUBE_API_KEY”环境变量未设置

  • 解决方案创建 .env 包含您的API密钥的文件
  • 验证检查一下 .env 存在并且包含 YOUTUBE_API_KEY=...

“找不到模块 '../types'”

  • 解决方案使用(指定工具或方法)重新构建项目 npm run build
  • 验证检查一下 dist/ 目录存在且包含编译后的 .js 文件

API配额已超出

  • 问题YouTube Data API 有每日配额限制(免费层级:10,000 单位/天)
  • 解决方案每个API调用使用约3个单位,yt-dlp没有配额限制
  • 权宜之计;变通方法服务器使用yt-dlp获取字幕内容(不会影响API配额)

📄 许可证

MIT 许可证 - 详情请参阅 LICENSE 文件

🤝 贡献/参与

这个项目是在AI辅助下(使用GitHub Copilot - Claude Sonnet 4.5)完成的。欢迎贡献!

IMPLEMENTATION_COMPLETE.md 翻译为中文是:“实施完成.md”(其中,“.md”通常表示Markdown文件格式,但在此处作为文件名的一部分,直接保留原样) 以获取详细的实施说明和经验教训。

🙏 致谢

  • yt-dlp(一个用于从YouTube等网站下载视频的命令行工具)YouTube内容提取的金标准
  • 谷歌YouTube数据API可靠的元数据和标题列表
  • 模型上下文协议人工智能工具集成的标准化协议

______________________________________________________________________

状态✅ 可投入生产 最后更新时间2025年10月17日 测试视频https://www.youtube.com/watch?v=lxRAj1Gijic(视频链接,中文表述为:“YouTube上的视频链接,观看地址为lxRAj1Gijic”)

运行容器:

docker run -i mcp-youtube-transcript-pro

注:版本1.1.0增加了预处理选项(filterEmpty、mergeOverlaps、removeSilence)以及CSV/TXT输出格式。

目录标签

目录标签

多格式支持TypeScriptClaude视频字幕提取本地部署元数据获取预处理选项JSON-RPC协议

支持客户端

Claude DesktopClaudeVS Code

接入字段

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

stdio

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

oauth

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

ts-node

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiooauth部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP