使用说明
YouTube转录MCP服务器
一种模型上下文协议(MCP)服务器,使用yt-dlp从YouTube视频中提取转录本。
特性
- 两个工具:
get_transcript-从YouTube视频中提取文字记录get_video_info-获取视频元数据,包括标题、描述、上传者等
- URL验证:在处理之前验证YouTube URL
- 自动清理:读取后删除下载的文件
- 错误处理:对命令失败和丢失的文件进行适当的错误处理
- TypeScript:具有全面测试的全类型代码库
先决条件
所需软件
-
Node.js (版本18或更高)
node --version # Should be 18.0.0 or higher -
yt-dlp -YouTube视频下载器
在Windows上:
winget install yt-dlp.yt-dlp在 macOS 上:
brew install yt-dlp在Linux/WSL上:
pip install yt-dlp验证安装:
yt-dlp --version
安装
-
克隆或下载此存储库
git clone <repository-url> cd yt-transcript-mcp -
安装依赖项
npm install -
构建项目
npm run build
用法
MCP检验员测试
测试服务器的最简单方法:
npx @modelcontextprotocol/inspector npm run dev
这将打开一个web界面,您可以在其中:
- 查看可用工具
- 测试
get_transcript带有YouTube URL的工具 - 查看实时响应
与Claude Desktop集成
添加到您的Claude Desktop MCP配置文件中:
地点:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json
配置:
{
"mcpServers": {
"yt-transcript": {
"command": "node",
"args": ["/path/to/yt-transcript-mcp/dist/index.js"]
}
}
}
替换 /path/to/yt-transcript-mcp/ 与这个项目的实际路径。
直接命令行使用
node dist/index.js
服务器通过stdio上的JSON-RPC进行通信。
api参考
get_transcript工具
说明: 使用yt-dlp从YouTube视频URL中提取文字记录
输入架构:
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "YouTube video URL to extract transcript from"
}
},
"required": ["url"]
}
示例用法:
{
"name": "get_transcript",
"arguments": {
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}
}
答复: 以WebVTT格式返回成绩单内容。
get_video_info工具
说明: 从YouTube视频URL获取视频元数据,包括标题、描述、上传者和其他详细信息
输入架构:
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "YouTube video URL to get information from"
}
},
"required": ["url"]
}
示例用法:
{
"name": "get_video_info",
"arguments": {
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}
}
答复: 返回一个包含视频元数据的JSON对象,包括:
title-视频标题description-视频描述uploader-频道/上传者名称upload_date-上传日期(YYYYMMDD格式)duration-视频持续时间(秒)view_count-浏览次数like_count-点赞数channel-频道名称tags-视频标签数组thumbnail-缩略图URLwebpage_url-原始视频URL
支持的URL格式(两种工具)
https://www.youtube.com/watch?v=VIDEO_IDhttps://youtu.be/VIDEO_IDhttp://youtube.com/watch?v=VIDEO_IDyoutube.com/watch?v=VIDEO_IDyoutu.be/VIDEO_ID
发展
脚本
npm run dev-使用热重载运行开发服务器npm run build-将TypeScript构建为JavaScriptnpm test-运行单元测试npm run test:watch-在监视模式下运行测试npm run typecheck-运行TypeScript类型检查npm run lint-运行ESLint(如果已配置)
项目结构
yt-transcript-mcp/
├── src/
│ ├── index.ts # Main MCP server implementation
│ ├── test-utils.ts # Utility functions for testing
│ └── index.test.ts # Unit tests
├── dist/ # Built JavaScript files
├── package.json
├── tsconfig.json
├── vitest.config.ts
└── README.md
运行测试
npm test
测试包括:
- 各种YouTube URL格式的URL验证
- 无效URL的错误处理
运作原理
get_transcript工具
- URL验证:服务器验证提供的URL是否为有效的YouTube URL
- 转录提取:用途
yt-dlp --write-auto-sub --skip-download <url>仅下载成绩单 - 文件处理:读取下载的.vtt转录文件
- 清理:读取后自动删除下载的文件
- 响应:将成绩单内容返回给MCP客户端
get_video_info工具
- URL验证:服务器验证提供的URL是否为有效的YouTube URL
- 元数据抽取:用途
yt-dlp --write-info-json --skip-download <url>下载视频元数据 - JSON处理:读取并解析下载的.info.json文件
- 数据筛选:提取相关元数据字段(标题、描述等)
- 清理:读取后自动删除下载的文件
- 响应:将格式化的元数据作为JSON返回给MCP客户端
错误处理
服务器处理各种错误情况:
- URL无效:非YouTube URL返回错误
- 命令失败:处理yt-dlp执行错误
- 缺少成绩单:未找到成绩单文件时报告
- 文件系统错误:处理文件读/写问题
故障排除
常见问题
-
“未找到yt-dlp”
- 确保yt-dlp已安装并在PATH中可用
- 试着跑步
yt-dlp --version验证安装
-
“未找到成绩单文件”
- 视频可能没有自动生成或手动字幕
- 尝试使用您知道有字幕的其他视频
-
“权限被拒绝”
- 确保服务器在当前目录中具有写入权限
- 检查文件系统权限
-
MCP连接问题
- 验证Node.js版本(需要18+)
- 检查构建文件是否存在于
dist/ - 确保MCP配置中的路径正确
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
