YouTube内容浏览和摘要服务器

一个基于YouTube Data API v3的MCP服务器,用于浏览和摘要YouTube内容,支持视频搜索、详情获取、转录提取等功能。

  • by anirudhyadavMS
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 anirudhyadavMS/youtube_mcp

使用说明

YouTube MCP服务器

一种MCP(模型上下文协议)服务器,使用YouTube数据API v3实现YouTube内容浏览和摘要。

特性

  • 🔍 视频搜索:按关键字搜索YouTube视频,并可自定义排序
  • 📊 视频详细信息:获取有关任何视频的全面元数据(观看次数、点赞、持续时间、标签)
  • 📝 视频记录:获取视频转录/字幕以进行总结和分析
  • 👤 信道信息:获取频道统计数据、订阅者数量和最近的视频
  • 🎬 频道视频:列出特定频道的所有视频,并提供排序选项
  • 📋 播放列表信息:获取播放列表元数据和视频计数
  • 🎵 播放列表视频:列出播放列表中的所有视频及其位置

为什么使用这个?

  • AI驱动的分析:非常适合像Claude这样的人工智能助手分析YouTube内容
  • 交叉平台的:适用于任何兼容MCP的客户端(Claude Code、Cline等)
  • 全面的:将YouTube Data API v3与成绩单抓取相结合
  • 免费层友好:针对Google的免费API配额进行了优化(10000个单位/天)
  • 类型安全:使用TypeScript构建以提高可靠性

目录

先决条件

安装

选项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密钥(无需信用卡)。

分步指南

  1. 首选 谷歌云控制台

    • 使用您的Gmail帐户登录
  2. 创建一个新项目

    • 点击“选择项目”→ “新项目”
    • 命名它(例如,“YouTube MCP服务器”)
    • 点击“创建”
  3. 启用YouTube数据API v3

    • 使用搜索栏查找“YouTube Data API v3”
    • 点击它并按“启用”
  4. 创建API密钥

    • 转到“API和服务”→ “凭据”
    • 点击“创建凭据”→ “API密钥”
    • 复制生成的API密钥
  5. 限制您的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个单位 无限制(网络抓取)

节约配额的技巧

  1. 尽可能使用成绩单 -他们不使用API配额
  2. 缓存结果 -在本地存储频繁访问的数据
  3. 海陆空三军联合作战 -在一次通话中通过视频获取频道信息
  4. 监控使用情况 -在Google Cloud控制台中检查配额
  5. 请求配额增加 -如果您需要更多信息,请联系谷歌

检查您的配额

访问 谷歌云控制台 → 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无效 用户友好错误
成绩单不可用 “此视频没有可用的成绩单”
网络错误 自动错误报告

技术栈

局限性

  • API配额限制(免费层每天10000个单位)
  • 成绩单仅适用于启用字幕的视频
  • 某些私人或受限视频可能无法访问
  • 不支持纯OAuth功能(评论、评级、个人数据)
  • 每个请求最多50个结果(YouTube API限制)

路线图

正在考虑未来的增强功能:

  • []缓存层可减少API配额的使用
  • []支持YouTube短片元数据
  • []多个视频的批处理操作
  • []直播流检测和元数据
  • []评论获取(需要OAuth)
  • []视频类别查找
  • []按地区分类的视频趋势
  • []单元和集成测试

贡献

欢迎投稿!请参阅 贡献.md 作为指导方针。

快速贡献步骤

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

安全

请参阅 安全.md 了解安全最佳实践以及如何报告漏洞。

关键安全提示:

  • 永远不要将API密钥提交到版本控制
  • 仅将API密钥限制为YouTube Data API v3
  • 定期监控您的API使用情况
  • 定期旋转API密钥

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢

支持

相关项目


制作❤️ 对于MCP社区

如果你觉得这个仓库有用,就把它标上! ⭐