MCP YouTube摘录
](https://badge.fury.io/py/mcp-youtube-extract)   
用于YouTube操作的模型上下文协议(MCP)服务器,演示了MCP的核心概念,包括工具和日志记录。
✨ 不需要API密钥! 使用yt-info提取视频元数据和yt-ts提取转录本即可开箱即用。
特性
- MCP服务器:功能齐全的MCP服务器,具有:
- 工具:从YouTube视频中提取信息,包括元数据和文字记录 - 综合录井:整个应用程序的详细日志记录 - 错误处理:采用回退逻辑对成绩单进行稳健的错误处理
- YouTube集成:使用yt-info extract和yt-ts-extract内置YouTube功能:
- 提取视频信息(标题、描述、频道、发布日期、观看次数) - 使用智能回退逻辑获取视频转录 - 支持手动创建和自动生成的成绩单 - 基本功能不需要API密钥
📦 在PyPI上可用
此软件包现在可以在PyPI上使用!您可以通过以下方式直接安装:
pip install mcp-youtube-extract访问套餐页面: PyPI上的mcp youtube摘录
安装
快速入门(推荐)
最简单的入门方法是从PyPI安装:
pip install mcp-youtube-extract或者使用pipx(推荐用于命令行工具):
pipx install mcp-youtube-extract这将安装所有依赖项的最新版本。然后,您可以直接运行MCP服务器:
mcp_youtube_extract使用紫外线(显影)
对于开发或如果您喜欢紫外线:
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and install the project
git clone https://github.com/sinjab/mcp_youtube_extract.git
cd mcp_youtube_extract
# Install dependencies (including dev dependencies)
uv sync --dev
# Set up your API key for development
cp .env.example .env
# Edit .env and add your YouTube API key来源
- 克隆存储库:
git clone https://github.com/sinjab/mcp_youtube_extract.git
cd mcp_youtube_extract- 在开发模式下安装:
uv sync --dev配置
环境变量
无需配置! 服务器使用yt-info extract进行元数据提取,开箱即用。
可选: 为了增强功能,您可以选择设置YouTube API密钥:
# Optional YouTube API Configuration
YOUTUBE_API_KEY=your_youtube_api_key_here可选:
YOUTUBE_API_KEY:您的YouTube数据API密钥(可选,为元数据提取提供额外的回退)
获取YouTube API密钥(可选)
虽然不是必需的,但您可以选择设置YouTube数据API密钥以增强功能。以下是如何获得一个:
第一步:创建谷歌云项目
- 转到 谷歌云控制台
- 点击页面顶部的“选择项目”
- 点击“新建项目”并为其命名(例如,“MCP YouTube摘录”)
- 点击“创建”
步骤2:启用YouTube数据API
- 在您的新项目中,请转到 API库
- 搜索“YouTube数据API v3”
- 点击它,然后点击“启用”
步骤3:创建API凭据
- 转到 凭证页面
- 单击“创建凭据”并选择“API密钥”
- 将显示您的新API密钥-立即复制它
- 点击“限制密钥”以保护它(推荐)
步骤4:限制您的API密钥(推荐)
- 在API密钥设置中,单击“限制密钥”
- 在“API限制”下,选择“限制密钥”
- 从下拉列表中选择“YouTube Data API v3”
- 点击“保存”
步骤5:设置账单(必填)
- 转到 账单页面
- 将账单帐户链接到您的项目
- 备注:YouTube Data API每天有10000个单元的免费层,这通常足以满足大多数用例
API密钥使用限制
- 免费等级:每天10000个单位
- 成本:免费等级后每1000单位5美元
- 备注:API密钥仅在yt-info-extract失败时用作回退
- 大多数用户不需要API密钥,因为yt-info-extract处理大多数请求
安全最佳实践
- 永远不要提交API密钥 到版本控制
- 使用环境变量 如配置部分所示
- 限制API密钥 仅限于YouTube数据API
- 监控使用情况 在Google Cloud控制台中
用法
运行MCP服务器
使用PyPI安装(推荐)
# Install from PyPI
pip install mcp-youtube-extract
# Run the server
mcp_youtube_extract使用开发设置
# Using uv
uv run mcp_youtube_extract
# Or directly
python -m mcp_youtube_extract.server运行测试
# Run all pytest tests
uv run pytest
# Run specific pytest test
uv run pytest tests/test_with_api_key.py
# Run tests with coverage
uv run pytest --cov=src/mcp_youtube_extract --cov-report=term-missing备注:The tests/ 目录包含4个文件:
test_context_fix.py-上下文API回退功能的Pytest测试test_with_api_key.py-使用API密钥进行完整功能的Pytest测试test_youtube_unit.py- 单元测试 YouTube核心功能test_inspector.py- 独立检查脚本 (不是pytest测试)
测试覆盖率:该项目目前总体覆盖率为62%,核心功能覆盖率很高:
youtube.py:81%的覆盖率(核心业务逻辑)logger.py:73%的覆盖率(测井工具)server.py:22%的覆盖率(MCP协议处理)__init__.py:100%覆盖率(包初始化)
运行检查脚本
这 test_inspector.py file是一个独立的脚本,它连接到MCP服务器并验证其功能:
# Run the inspection script to test server connectivity and functionality
uv run python tests/test_inspector.py此脚本将:
- 连接到MCP服务器
- 列出可用的工具、资源和提示
- 测试
get_yt_video_info带有示例视频的工具 - 验证服务器是否正常工作
使用YouTube工具
服务器提供了一个主要工具: get_yt_video_info
此工具获取YouTube视频ID并返回:
- 通过yt信息提取视频元数据(标题、描述、频道、发布日期、观看次数)
- 通过yt-ts提取视频转录(具有不同转录类型的回退逻辑)
示例用法:
# Extract video ID from YouTube URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
video_id = "dQw4w9WgXcQ"
result = get_yt_video_info(video_id)客户端配置
要将此MCP服务器与客户端一起使用,请将以下配置添加到客户端的设置中:
使用PyPI安装(推荐)
{
"mcpServers": {
"mcp_youtube_extract": {
"command": "mcp_youtube_extract"
}
}
}带可选API密钥:
{
"mcpServers": {
"mcp_youtube_extract": {
"command": "mcp_youtube_extract",
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key"
}
}
}
}使用开发设置
{
"mcpServers": {
"mcp_youtube_extract": {
"command": "uv",
"args": [
"--directory",
"",
"run",
"mcp_youtube_extract"
]
}
}
}带可选API密钥:
{
"mcpServers": {
"mcp_youtube_extract": {
"command": "uv",
"args": [
"--directory",
"",
"run",
"mcp_youtube_extract"
],
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key"
}
}
}
}发展
项目结构
mcp_youtube_extract/
├── src/
│ └── mcp_youtube_extract/
│ ├── __init__.py
│ ├── server.py # MCP server implementation
│ ├── google_api.py # yt-info-extract integration
│ ├── transcript_api.py # yt-ts-extract integration
│ ├── youtube.py # Unified API facade
│ └── logger.py # Logging configuration
├── tests/
│ ├── __init__.py
│ ├── test_context_fix.py # Context API fallback tests
│ ├── test_inspector.py # Server inspection tests
│ ├── test_with_api_key.py # Full functionality tests
│ └── test_youtube_unit.py # Unit tests for core functionality
├── logs/ # Application logs
├── .env # Environment variables (create from .env.example)
├── .gitignore # Git ignore rules (includes coverage files)
├── pyproject.toml
├── LICENSE # MIT License
└── README.md测试策略
该项目采用了一种全面的测试方法:
- 单元测试 (
test_youtube_unit.py):使用模拟的yt信息提取测试YouTube核心功能 - 集成测试 (
test_context_fix.py,test_with_api_key.py):测试服务器的完整功能 - 手动验证 (
test_inspector.py):交互式服务器检查工具
错误处理
该项目包括稳健的错误处理:
- 优雅的提取失败:返回适当的错误消息,而不是崩溃
- 多种回退策略:yt-info-extract提供YouTube数据API、yt-dlp和pytubefix之间的自动回退
- 转录回退逻辑:通过yt-ts提取实现转录检索的多种策略
- 一致的错误响应:标准化错误消息格式
- 综合录井:调试和监控的详细日志
建筑
# Install build dependencies
uv add --dev hatch
# Build the package
uv run hatch build许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
贡献
欢迎投稿!请随时提交拉取请求。
入门指南
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
支持
如果您遇到任何问题或有疑问,请:
- 检查 现有问题
- 使用有关您问题的详细信息创建新问题
- 在适用的情况下,包括日志和错误消息
