YouTube数据访问服务器

一个全面的模型上下文协议(MCP)服务器,通过YouTube Data API v3提供实时YouTube数据访问,使AI助手能够搜索、分析和检索有关YouTube视频、频道、播放列表等的详细信息。

  • by dannySubsense
  • Python
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 dannySubsense/youtube-mcp-server

使用说明

YouTube MCP服务器

一个全面的模型上下文协议(MCP)服务器,通过YouTube数据API v3提供实时YouTube数据访问。该服务器使AI助手能够搜索、分析和检索有关YouTube视频、频道、播放列表等的详细信息。

🚀 特性

14完整功能

  1. get_video_details -获取全面的视频信息,包括标题、描述、统计数据和元数据
  2. get_playlist_details -检索播放列表信息和元数据
  3. get_playlist_items -列出播放列表中的视频及其详细信息
  4. get_channel_details -获取频道信息,包括订户计数、视频计数和描述
  5. get_video_categories -列出特定地区的可用视频类别
  6. get_channel_videos -从YouTube频道获取最新视频
  7. search_videos -在YouTube上搜索具有可自定义参数的视频
  8. get_trending_videos -检索特定地区的热门视频
  9. get_video_comments -使用排序选项从视频中获取评论
  10. analyze_video_engagement -分析参与度指标并提供见解
  11. get_channel_playlists -列出YouTube频道的播放列表
  12. get_video_caption_info -获取可用的字幕/文字记录信息
  13. evaluate_video_for_knowledge_base -基于新鲜度评分的知识库管理智能内容评估
  14. get_video_transcript -从YouTube视频中提取实际转录内容

关键能力

  • ✅ 实时数据 来自YouTube数据API v3
  • ✅ 全面的错误处理 API配额管理
  • ✅ 支持多种URL格式 (youtube.com、youtu.be、@用户名、频道ID)
  • ✅ 智能内容评估 技术新鲜度评分
  • ✅ 灵活的搜索和过滤 选项
  • ✅ 啮合分析 符合行业基准
  • ✅ 区域内容支持 用于趋势和类别
  • ✅ MCP协议合规性 实现无缝的人工智能集成

📋 需求

  • Python 3.8+
  • YouTube数据API v3密钥
  • MCP兼容客户端(克劳德桌面、光标等)
  • youtube转录api(用于转录提取功能)

🛠️ 安装和设置

步骤1:克隆存储库

git clone https://github.com/dannySubsense/youtube-mcp-server.git
cd youtube-mcp-server

步骤2:安装依赖项

pip install -r requirements.txt

步骤3:获取YouTube API密钥

  1. 转到 谷歌云控制台
  2. 创建新项目或选择现有项目
  3. 启用YouTube数据API v3
  4. 创建凭据(API密钥)
  5. (可选)为安全起见,将API密钥限制为YouTube Data API v3

步骤4:配置API密钥

创建一个 credentials.yml 项目根目录中的文件:

youtube_api_key: "YOUR_YOUTUBE_API_KEY_HERE"

重要提示: 永远不要承诺你的 credentials.yml 文件到版本控制!

步骤5:测试服务器

python test_server.py

这将对所有14个功能进行全面测试,以确保一切正常工作。

🔧 集成指南

Claude桌面集成

  1. 安装服务器 按照上面的设置步骤

  2. 添加到Claude桌面配置 -编辑您的Claude Desktop配置文件:

窗户: %APPDATA%\Claude\claude_desktop_config.json 雨衣: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "youtube": {
      "command": "python",
      "args": ["/path/to/youtube-mcp-server/youtube_mcp_server.py"],
      "env": {
        "YOUTUBE_API_KEY": "your_youtube_api_key_here"
      }
    }
  }
}
  1. 重新启动克劳德桌面

  2. 验证集成 -问Claude:“你能在YouTube上搜索Python教程吗?”

光标集成

  1. 安装服务器 按照上面的设置步骤

  2. 在游标设置中配置:

    • 打开光标设置
    • 导航到MCP服务器
    • 使用python命令和参数添加新服务器
  3. 设置环境变量 为您的API密钥

  4. 使用游标进行测试 要求它搜索YouTube内容

自定义项目集成

对于自定义应用程序或其他MCP客户端:

from youtube_mcp_server import (
    get_video_details,
    search_videos,
    evaluate_video_for_knowledge_base
)

# Example usage
async def example():
    # Search for videos
    results = await search_videos("machine learning", max_results=5)
    print(results)

    # Evaluate video for knowledge base
    evaluation = await evaluate_video_for_knowledge_base("dQw4w9WgXcQ")
    print(evaluation)

环境变量设置

您还可以使用环境变量代替凭据文件:

export YOUTUBE_API_KEY="your_api_key_here"

📖 使用示例

基本视频信息

# Get detailed video information
result = await get_video_details("https://www.youtube.com/watch?v=dQw4w9WgXcQ")

# Also works with video IDs
result = await get_video_details("dQw4w9WgXcQ")

搜索和发现

# Search for recent Python tutorials
tutorials = await search_videos(
    query="Python tutorial",
    max_results=10,
    order="date"
)

# Get trending videos in the US
trending = await get_trending_videos(region_code="US", max_results=5)

通道分析

# Get channel information
channel_info = await get_channel_details("@3Blue1Brown")

# Get recent videos from a channel
recent_videos = await get_channel_videos("@3Blue1Brown", max_results=5)

# Get all playlists from a channel
playlists = await get_channel_playlists("@3Blue1Brown")

内容评估(专题)

# Evaluate if a video is worth adding to knowledge base
# Includes technology freshness scoring for educational content
evaluation = await evaluate_video_for_knowledge_base("Z6nkEZyS9nA")

# Example output:
# 🟢 HIGHLY RECOMMENDED - Strong indicators of valuable content
# ⏰ Content Freshness: Very Recent (2 days old)
# 🚀 Tech Currency: React 2025 content - framework evolves rapidly

转录提取(新增!)

# Extract full transcript content from a video
transcript = await get_video_transcript("Z6nkEZyS9nA")

# Also works with URLs and different languages
transcript_spanish = await get_video_transcript(
    "https://www.youtube.com/watch?v=Z6nkEZyS9nA", 
    language="es"
)

# Example output:
# 📝 Full Transcript: [Complete video transcript text]
# ⏰ Timestamped Segments: [00:15] Welcome to this tutorial...
# Word Count: ~2,847 words

啮合分析

# Analyze video engagement metrics
engagement = await analyze_video_engagement("dQw4w9WgXcQ")

# Get video comments
comments = await get_video_comments("dQw4w9WgXcQ", max_results=10, order="relevance")

🎯 函数参考

功能 用途 主要特点
get_video_details 完整的视频信息 观看次数、点赞、持续时间、描述
get_playlist_details 播放列表元数据 标题、描述、视频计数
get_playlist_items 播放列表中的视频 带元数据的有序列表
get_channel_details 频道信息 订阅者、总浏览量、描述
get_video_categories 可用类别 区域特定类别列表
get_channel_videos 最近的频道视频 最新上传的详细信息
search_videos 视频搜索 多个排序顺序、过滤器
get_trending_videos 趋势内容 特定地区的趋势视频
get_video_comments 视频评论 排序、回复计数
analyze_video_engagement 参与度指标 行业基准、见解
get_channel_playlists 频道播放列表 所有公共播放列表
get_video_caption_info 字幕可用性 语言,手动与自动
evaluate_video_for_knowledge_base 内容评价 科技内容的智能新鲜度评分
get_video_transcript 提取成绩单内容 全文提取、时间戳、多语言

🔥 特色:智能内容评估

这 evaluate_video_for_knowledge_base 功能包括高级内容评估:

技术新鲜度评分

  • 高波动性话题 (React、AWS、AI/ML):强烈偏好最新内容
  • 中等波动性主题 (Python,通用编程):中等新鲜度奖励
  • 稳定的话题 (算法、数学):最小年龄惩罚

质量指标

  • 查看计数和参与度指标
  • 手动与自动生成字幕
  • 内容类型检测(教程、评论等)
  • 持续时间适宜性
  • 技术货币指标(2024年、2025年,“最新”,版本号)

智能推荐

  • 🟢 强烈推荐 -卓越的品质+最新的技术含量
  • 🟡 适度推荐 -一些积极的指标
  • 🔴 有限推荐 -质量指标少

📊 API配额使用情况

功能 定额成本 备注
基本功能(get_video_details等) 1台 成本低
搜索功能 100+个单位 成本高
字幕功能 50+个 中高成本
评估功能 51台 中高成本

每日限额: 10000单位(默认) 监控使用情况 以避免配额耗尽。

🛡️ 错误处理

该服务器包括全面的错误处理功能,用于:

  • API密钥无效
  • 超出配额错误
  • 网络连接问题
  • 视频/频道ID无效
  • 区域限制
  • 禁用评论/标题

🧪 测试

运行综合测试套件:

python test_server.py

这将使用真实的YouTube内容测试所有14个功能,并提供详细的输出。

🚨 安全说明

  • 永不承诺 你的 credentials.yml 文件
  • 限制API密钥 仅限于YouTube Data API v3
  • 监控配额使用情况 防止意外成本
  • 使用环境变量 在生产环境中

🤝 贡献

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

📝 开发说明

该项目是使用以下工具开发的:

  • 增量方法 -一次一个功能
  • 测试驱动开发 -集成前测试每个功能
  • 用户协作 -持续的反馈和批准门
  • 备份协议 -具有回滚功能的安全开发

看 documents/testing.md 详细的开发和测试程序。

🐛 故障排除

常见问题

“找不到API密钥”错误:

  • 确保 credentials.yml 以正确格式存在
  • 检查文件权限
  • 验证API密钥是否有效且不受限制

“超出配额”错误:

  • 检查您的Google Cloud Console配额使用情况
  • 考虑升级配额或优化请求
  • 对频繁访问的数据使用缓存

“未找到视频”错误:

  • 验证视频ID或URL是否正确
  • 检查视频是私人的还是受限制的
  • 确保视频未被删除

MCP连接问题:

  • 验证配置中的Python路径
  • 检查是否安装了所有依赖项
  • 配置更改后重新启动MCP客户端

📄 许可证

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

🙏 致谢


准备好用YouTube功能增强你的人工智能助手了吗?今天就开始吧! 🚀