使用说明
YouTube MCP服务器
一种MCP(模型上下文协议)服务器,使用YouTube数据API v3实现YouTube内容浏览和摘要。
特性
- 🔍 视频搜索:按关键字搜索YouTube视频,并可自定义排序
- 📊 视频详细信息:获取有关任何视频的全面元数据(观看次数、点赞、持续时间、标签)
- 📝 视频记录:获取视频转录/字幕以进行总结和分析
- 👤 信道信息:获取频道统计数据、订阅者数量和最近的视频
- 🎬 频道视频:列出特定频道的所有视频,并提供排序选项
- 📋 播放列表信息:获取播放列表元数据和视频计数
- 🎵 播放列表视频:列出播放列表中的所有视频及其位置
为什么使用这个?
- AI驱动的分析:非常适合像Claude这样的人工智能助手分析YouTube内容
- 交叉平台的:适用于任何兼容MCP的客户端(Claude Code、Cline等)
- 全面的:将YouTube Data API v3与成绩单抓取相结合
- 免费层友好:针对Google的免费API配额进行了优化(10000个单位/天)
- 类型安全:使用TypeScript构建以提高可靠性
目录
先决条件
- Node.js v18或更高版本(下载)
- YouTube数据API v3密钥 (免费,请参阅 获取YouTube API密钥)
- MCP兼容客户端 (例如。, 克劳德代码)
安装
选项1:从npm安装(即将推出)
npm install -g youtube-mcp-server
选项2:从源代码安装
# Clone the repository
git clone https://github.com/anirudhyadavMS/youtube_mcp.git
cd youtube-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
获取YouTube API密钥
您可以使用任何Gmail帐户获得免费的YouTube数据API密钥(无需信用卡)。
分步指南
-
首选 谷歌云控制台
- 使用您的Gmail帐户登录
-
创建一个新项目
- 点击“选择项目”→ “新项目”
- 命名它(例如,“YouTube MCP服务器”)
- 点击“创建”
-
启用YouTube数据API v3
- 使用搜索栏查找“YouTube Data API v3”
- 点击它并按“启用”
-
创建API密钥
- 转到“API和服务”→ “凭据”
- 点击“创建凭据”→ “API密钥”
- 复制生成的API密钥
-
限制您的API密钥 (建议用于安全)
- 单击您刚才创建的API密钥
- 在“API限制”下,选择“限制密钥”
- 仅选择“YouTube数据API v3”
- 点击“保存”
免费等级限制
- 每日配额:每天10000个单位
- 搜索:每次请求100个单位(每天约100次搜索)
- 视频详细信息:每个请求1个单位(约10000个请求/天)
- 文字记录:使用网络抓取(无配额成本)
配置
克劳德代码
将以下内容添加到MCP配置文件中:
macOS/Linux: ~/.config/claude-code/mcp_config.json 或 ~/.mcp.json
视窗: C:\Users\YOUR-USERNAME\.config\claude-code\mcp_config.json 或 C:\Users\YOUR-USERNAME\.mcp.json
{
"mcpServers": {
"youtube": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/youtube-mcp-server/dist/server.js"],
"env": {
"YOUTUBE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
对于其他MCP客户端
使用stdio传输配置:
- 命令:
node - 参数:路径
dist/server.js - 环境:
YOUTUBE_API_KEY使用API密钥
环境变量
或者,创建一个 .env 项目根目录中的文件:
YOUTUBE_API_KEY=your_api_key_here
用法
配置后,重新启动MCP客户端(例如Claude Code)。YouTube工具将自动可用。
快速入门示例
问你的AI助手:
"Search YouTube for 'python tutorial' and show me the top 5 videos"
"Get the transcript for video dQw4w9WgXcQ and summarize it"
"Find the most popular videos from the Fireship channel"
"What are the videos in the 'Learn Python' playlist?"
可用工具
1. search_youtube
按关键字在YouTube上搜索视频。
参数:
{
query: string // Required: Search term
maxResults?: number // Optional: 1-50, default 10
order?: string // Optional: "relevance" | "date" | "viewCount" | "rating"
}
退货: 带有ID、标题、频道、缩略图、描述、视图、发布日期的视频数组
2. get_video_details
获取特定视频的全面元数据。
参数:
{
videoId: string // Required: YouTube video ID (e.g., "dQw4w9WgXcQ")
}
退货: 详细的视频对象,包括标题、描述、持续时间、视图、点赞、标签、类别、缩略图
3. get_video_transcript
获取YouTube视频的文字记录/字幕。
参数:
{
videoId: string // Required: YouTube video ID
language?: string // Optional: Language code, default "en"
includeTimestamps?: boolean // Optional: Include timestamps, default true
}
退货: 带可选时间戳的完整成绩单文本
注: 仅适用于启用字幕的视频。
4. get_channel_info
获取有关YouTube频道的详细信息。
参数:
{
channelId: string // Required: YouTube channel ID
includeVideos?: boolean // Optional: Include recent videos, default false
}
退货: 频道名称、描述、订阅者数量、观看次数、视频数量、最近视频
5. get_channel_videos
列出特定YouTube频道的视频。
参数:
{
channelId: string // Required: YouTube channel ID
maxResults?: number // Optional: 1-50, default 25
order?: string // Optional: "date" | "viewCount" | "title"
}
退货: 通道中的视频对象数组
6. get_playlist_info
获取有关YouTube播放列表的信息。
参数:
{
playlistId: string // Required: YouTube playlist ID
}
退货: 播放列表标题、描述、视频计数、频道、缩略图
7. get_playlist_videos
列出YouTube播放列表中的所有视频。
参数:
{
playlistId: string // Required: YouTube playlist ID
maxResults?: number // Optional: 1-50, default 50
}
退货: 具有播放列表位置的视频对象数组
示例
示例1:查找热门视频
User: "Search for 'AI news' on YouTube, sorted by view count, show me 10 results"
AI uses: search_youtube
{
"query": "AI news",
"maxResults": 10,
"order": "viewCount"
}
示例2:视频分析
User: "Get the transcript for video dQw4w9WgXcQ and summarize the main topics"
AI uses: get_video_transcript
{
"videoId": "dQw4w9WgXcQ",
"language": "en",
"includeTimestamps": false
}
AI then summarizes the transcript content.
示例3:通道深潜
User: "Tell me about the Fireship channel and show me their recent videos"
AI uses: get_channel_info
{
"channelId": "UCsBjURrPoezykLs9EqgamOA",
"includeVideos": true
}
示例4:播放列表探索
User: "What videos are in this playlist: PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf"
AI uses: get_playlist_videos
{
"playlistId": "PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf",
"maxResults": 50
}
API配额管理
YouTube数据API有每日配额限制。以下是如何管理它:
配额成本
| 操作 | 配额成本 | 请求/天(10000限制) |
|---|---|---|
| 搜索 | 100个单位 | ~100次搜索 |
| 视频详细信息 | 1个单元 | ~10000个请求 |
| 通道信息 | 1个单元 | ~10000个请求 |
| 播放列表信息 | 1个单位 | ~10000个请求 |
| 成绩单 | 0个单位 | 无限制(网络抓取) |
节约配额的技巧
- 尽可能使用成绩单 -他们不使用API配额
- 缓存结果 -在本地存储频繁访问的数据
- 海陆空三军联合作战 -在一次通话中通过视频获取频道信息
- 监控使用情况 -在Google Cloud控制台中检查配额
- 请求配额增加 -如果您需要更多信息,请联系谷歌
检查您的配额
访问 谷歌云控制台 → API和服务→ 仪表盘→ YouTube数据API v3
项目结构
youtube-mcp-server/
├── src/
│ ├── server.ts # Main MCP server implementation
│ ├── youtube-api.ts # YouTube Data API wrapper
│ ├── transcript.ts # Transcript fetching (web scraping)
│ └── types.ts # TypeScript type definitions
├── dist/ # Compiled JavaScript (generated)
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── .env.example # API key template
├── LICENSE # MIT License
├── CONTRIBUTING.md # Contribution guidelines
├── SECURITY.md # Security best practices
└── README.md # This file
发展
构建
npm run build
监视模式(更改后自动重建)
npm run dev
手动启动服务器
npm start
错误处理
服务器优雅地处理常见错误:
| 错误 | 消息 |
|---|---|
| 缺少API密钥 | 清除设置说明 |
| 超出配额 | 关于每日限额的有用消息 |
| 视频/频道/播放列表ID无效 | 用户友好错误 |
| 成绩单不可用 | “此视频没有可用的成绩单” |
| 网络错误 | 自动错误报告 |
技术栈
- @模型上下文协议/sdk -MCP协议实现
- 谷歌蜜蜂 -官方YouTube数据API v3客户端
- youtube文字记录 -公共成绩单的网络抓取
- TypeScript -类型安全开发
- Node.js -运行时环境
局限性
- API配额限制(免费层每天10000个单位)
- 成绩单仅适用于启用字幕的视频
- 某些私人或受限视频可能无法访问
- 不支持纯OAuth功能(评论、评级、个人数据)
- 每个请求最多50个结果(YouTube API限制)
路线图
正在考虑未来的增强功能:
- []缓存层可减少API配额的使用
- []支持YouTube短片元数据
- []多个视频的批处理操作
- []直播流检测和元数据
- []评论获取(需要OAuth)
- []视频类别查找
- []按地区分类的视频趋势
- []单元和集成测试
贡献
欢迎投稿!请参阅 贡献.md 作为指导方针。
快速贡献步骤
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
安全
请参阅 安全.md 了解安全最佳实践以及如何报告漏洞。
关键安全提示:
- 永远不要将API密钥提交到版本控制
- 仅将API密钥限制为YouTube Data API v3
- 定期监控您的API使用情况
- 定期旋转API密钥
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- 与 模型上下文协议 通过Anthropic
- 使用 YouTube数据API v3 通过谷歌
- 受到MCP社区的启发
支持
- 问题: GitHub问题
- 讨论: GitHub讨论
- MCP文件: 模型上下文协议.io
相关项目
制作❤️ 对于MCP社区
如果你觉得这个仓库有用,就把它标上! ⭐