YouTube视频集成服务

一个提供YouTube视频搜索、详细信息检索和字幕提取功能的模型上下文协议服务器。

  • by OriShmila
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 orishmila/youtube-mcp-server

使用说明

YouTube MCP服务器

一种模型上下文协议(MCP)服务器,提供全面的YouTube集成,包括视频搜索、详细的视频信息检索和转录提取功能。

特性

  • 🔍 视频搜索:搜索支持分页的YouTube视频
  • 📹 视频详细信息:获取全面的视频信息,包括统计数据、内容详细信息和元数据
  • 📝 获取成绩单:具有智能语言优先级的真实成绩单提取
  • 🌐 多语言支持:自动语言检测和成绩单回退
  • ⚡ 异步性能:内置async/await以获得最佳性能
  • 🔒 输入/输出验证:完成模式验证,并提供详细的错误报告

工具

1. search_videos

使用灵活的分页在YouTube上搜索视频。

参数:

  • query (字符串,必填):查找视频的搜索查询
  • pageToken (字符串,可选):用于分页以获取下一页/上一页结果的标记

例子:

{
  "query": "python programming tutorial",
  "pageToken": "CAUQAA"
}

退货: 带有视频片段和分页标记的搜索结果

2. get_videos

获取有关特定YouTube视频的详细信息。

参数:

  • ids (数组,必填):要检索的视频ID列表(最多50个)
  • parts (数组,可选):要检索的部分视频数据
    • 可用零件: snippet, contentDetails, statistics, status, player, recordingDetails, fileDetails, processingDetails, suggestions, liveStreamingDetails, localizations, topicDetails
    • 违约: ["snippet"]

例子:

{
  "ids": ["dQw4w9WgXcQ", "9bZkp7q19f0"],
  "parts": ["snippet", "contentDetails", "statistics"]
}

退货: 全面的视频数据,包括持续时间、观看次数、点赞次数、描述等

3. get_video_transcript

通过智能语言处理提取视频转录。

参数:

  • videoId (字符串,必填):YouTube视频ID
  • language (字符串,可选):首选语言代码(例如,'en'、'es'、'fr')

语言优先级:

  1. 要求的语言 (如有规定)
  2. 英语 (回退)
  3. 手工抄本 (优先于自动生成)
  4. 任何可用的成绩单

例子:

{
  "videoId": "dQw4w9WgXcQ",
  "language": "en"
}

退货: 带有文本段、精确时间戳和语言元数据的转录

安装

先决条件

  1. YouTube数据API v3密钥:
    • 访问 谷歌云控制台
    • 创建新项目或选择现有项目
    • 启用YouTube数据API v3
    • 创建凭据(API密钥)
    • 复制API密钥进行配置

设置

  1. 安装服务器:

    git clone <repository-url>
    cd youtube-mcp-server
    uv sync
    
  2. 配置环境:

    cp .env.example .env
    # Edit .env and add your YouTube API key:
    # YOUTUBE_API_KEY=your_actual_api_key_here
    
  3. 测试安装:

    uv run python test_server.py
    

Claude桌面集成

添加到您的Claude Desktop配置中:

{
  "mcpServers": {
    "youtube": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/yourusername/youtube-mcp-server",
        "youtube-mcp-server"
      ],
      "env": {
        "YOUTUBE_API_KEY": "your_youtube_api_key_here"
      }
    }
  }
}

使用示例

基本视频搜索

# Search for Python tutorials
result = await search_videos("python programming tutorial")

获取视频详细信息

# Get comprehensive video information
result = await get_videos(
    ids=["dQw4w9WgXcQ"], 
    parts=["snippet", "contentDetails", "statistics"]
)

获取成绩单

# Get transcript in preferred language
result = await get_video_transcript("dQw4w9WgXcQ", language="en")

API费率限制

YouTube Data API v3具有以下配额限制:

  • 默认配额:每天10000个单位
  • 搜索请求:每个100个单位
  • 视频详细信息:每个视频1个单位
  • 成绩单请求:无额外配额成本(使用单独的API)

典型用法:

  • 视频搜索+详细信息:约110个单位(允许约90次搜索/天)
  • 成绩单获取:不影响配额

发展

项目结构

youtube-mcp-server/
├── youtube_mcp_server/
│   ├── __init__.py
│   ├── __main__.py
│   ├── server.py          # MCP server implementation
│   ├── handlers.py        # Tool function implementations
│   └── tools.json         # Tool schema definitions
├── test_cases.json        # Comprehensive test cases
├── test_server.py         # Test suite with schema validation
├── main.py               # Development entry point
├── pyproject.toml        # Project configuration
└── README.md

运行测试

# Run comprehensive test suite
uv run python test_server.py

# Run the server locally
uv run python main.py

添加功能

  1. 定义工具模式 在……里面 youtube_mcp_server/tools.json
  2. 机具功能 在……里面 youtube_mcp_server/handlers.py
  3. 更新映射 在……里面 TOOL_FUNCTIONS
  4. 添加测试用例 在……里面 test_cases.json
  5. 运行测试 证实

错误处理

服务器提供全面的错误处理:

  • 🔑 API关键问题:清除YouTube API密钥丢失/无效的消息
  • 📊 配额管理:有关API配额限制的信息性消息
  • ✅ 输入验证:不正确参数的详细验证错误
  • 🌐 网络弹性:妥善处理连接问题
  • 🔍 架构验证:完整的输入/输出验证,并显示详细的错误消息

技术细节

依赖项

  • MCP框架: mcp>=1.6.0 用于模型上下文协议支持
  • Google API客户端: google-api-python-client>=2.0.0 用于YouTube数据API
  • API成绩单: youtube-transcript-api>=0.6.0 用于转录提取
  • 环境: python-dotenv>=1.0.0 用于配置管理
  • 验证: jsonschema>=4.0.0 用于模式验证

演出

  • 异步架构:所有操作都使用async/await以获得最佳性能
  • 连接池:高效的HTTP连接管理
  • 错误恢复:瞬态故障的自动重试逻辑
  • 架构缓存:启动时加载一次工具架构

安全

  • 环境变量:API密钥安全存储在环境中
  • 输入消毒:根据严格模式验证所有输入
  • 速率限制:对YouTube API费率限制的内置尊重
  • 错误隔离:详细的错误消息,不暴露内部

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 通过测试实现您的更改
  4. 确保所有测试通过: uv run python test_server.py
  5. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

支持

  • 文档:检查中的测试用例 test_cases.json 使用示例
  • 验证:运行 uv run python test_server.py 验证您的设置
  • api参考: YouTube数据API v3文档
  • 问题:打开GitHub问题以查找错误或功能请求

内置于❤️ 使用模型上下文协议框架。