YouTube MCP服务器增强
增强型分叉 图片/youtube-mcp 修复和改进。
YouTube的模型上下文协议(MCP)服务器实现,使AI语言模型能够通过标准化的界面与YouTube内容进行交互。
什么是增强
- 所有视频回复都包含直接的YouTube网址(
url和videoId字段) - 共享实用程序架构(单一事实来源)
- 延迟初始化以获得更好的性能
- 90%的代码重复数据消除
- 更好的错误处理
- 在Windows上与Claude Code CLI可靠配合使用
特性
视频信息
- 获取视频详细信息(标题、描述、持续时间等) 使用直接URL
- 列出频道视频 使用直接URL
- 获取视频统计数据(浏览量、点赞、评论)
- 在YouTube上搜索视频 使用直接URL
- 新:增强的视频响应包括
url和videoId易于集成的字段
成绩单管理
- 检索视频记录
- 支持多种语言
- 获取带有时间戳的字幕
- 在成绩单中搜索
直接资源和提示
- 资源:
- youtube://transcript/{videoId}:直接通过资源URI访问成绩单 - youtube://info:服务器信息和使用文档(Smithery可发现)
- 提示:
- summarize-video:获取和总结视频内容的自动化工作流程 - analyze-channel:渠道内容策略的综合分析
- 注释:所有工具都包含功能提示(只读、幂等),以获得更好的LLM性能
渠道管理
- 获取频道详细信息
- 列出频道播放列表
- 获取频道统计信息
- 在频道内容内搜索
播放列表管理
- 列出播放列表项目
- 获取播放列表详细信息
- 在播放列表中搜索
- 获取播放列表视频转录
安装
本地安装(推荐)
- 克隆此存储库:
git clone https://github.com/aranej/youtube-mcp-enhanced.git
cd youtube-mcp-enhanced
npm install
npm run build- 添加到您的Claude桌面或Claude代码配置:
克劳德桌面版 (%APPDATA%\Claude\claude_desktop_config.json 在Windows上):
{
"mcpServers": {
"youtube": {
"command": "node",
"args": ["/path/to/youtube-mcp-enhanced/dist/cli.js"],
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key_here"
}
}
}
}克劳德代码CLI (~/.claude.json):
{
"mcpServers": {
"youtube": {
"command": "node",
"args": ["/path/to/youtube-mcp-enhanced/dist/cli.js"],
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key_here"
}
}
}
}配置
设置以下环境变量:
YOUTUBE_API_KEY:您的YouTube数据API密钥(必需)YOUTUBE_TRANSCRIPT_LANG:成绩单的默认语言(可选,默认为“en”)
YouTube API设置
- 转到谷歌云控制台
- 创建新项目或选择现有项目
- 启用YouTube数据API v3
- 创建API凭据(API密钥)
- 复制API密钥进行配置
例子
管理视频
// Get video details (now includes URL)
const video = await youtube.videos.getVideo({
videoId: "dQw4w9WgXcQ"
});
// Enhanced response now includes:
// - video.url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
// - video.videoId: "dQw4w9WgXcQ"
// - All original YouTube API data
// Get video transcript
const transcript = await youtube.transcripts.getTranscript({
videoId: "video-id",
language: "en"
});
// Search videos (results now include URLs)
const searchResults = await youtube.videos.searchVideos({
query: "search term",
maxResults: 10
});
// Each search result includes:
// - result.url: "https://www.youtube.com/watch?v={videoId}"
// - result.videoId: "{videoId}"
// - All original YouTube search data管理渠道
// Get channel details
const channel = await youtube.channels.getChannel({
channelId: "channel-id"
});
// List channel videos
const videos = await youtube.channels.listVideos({
channelId: "channel-id",
maxResults: 50
});管理播放列表
// Get playlist items
const playlistItems = await youtube.playlists.getPlaylistItems({
playlistId: "playlist-id",
maxResults: 50
});
// Get playlist details
const playlist = await youtube.playlists.getPlaylist({
playlistId: "playlist-id"
});增强的响应结构
带有URL的视频对象
所有与视频相关的响应现在都包含增强的字段,以便于集成:
interface EnhancedVideoResponse {
// Original YouTube API fields
kind?: string;
etag?: string;
id?: string | YouTubeSearchResultId;
snippet?: YouTubeSnippet;
contentDetails?: any;
statistics?: any;
// NEW: Enhanced fields
url: string; // Direct YouTube video URL
videoId: string; // Extracted video ID
}增强响应示例
{
"kind": "youtube#video",
"id": "dQw4w9WgXcQ",
"snippet": {
"title": "Never Gonna Give You Up",
"channelTitle": "Rick Astley",
"description": "Official video for \"Never Gonna Give You Up\""
},
"statistics": {
"viewCount": "1.5B",
"likeCount": "15M"
},
// Enhanced fields:
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"videoId": "dQw4w9WgXcQ"
}益处
- 轻松访问URL:无需手动构造URL
- 一致的结构:搜索和单个视频响应都包含URL
- 向后兼容:保留所有现有的YouTube API数据
- 类型安全:完全支持TypeScript
发展
# Install dependencies
npm install
# Build TypeScript to JavaScript
npm run build
# Development mode with auto-rebuild and hot reload
npm run dev
# Start the server (requires YOUTUBE_API_KEY)
npm start
# Publish to npm (runs build first)
npm run prepublishOnly建筑
此项目使用 基于服务的双体系结构设计 具有以下特点:
- 共享公用设施:所有MCP服务器配置的单一真实来源(
src/server-utils.ts) - 现代McpServer:已从弃用更新
Server类到新McpServer - 动态版本管理:版本自动读取自
package.json - 类型安全工具注册:用途
zod输入验证模式 - ES模块:完整的ES模块支持和适当的
.js扩展 - 增强的视频响应:所有视频操作包括
url和videoId字段 - 延迟初始化:仅在需要时初始化YouTube API客户端
- 重复代码删除:通过共享实用程序消除了90%的代码重复(407→285行)
项目结构
src/
├── server-utils.ts # 🆕 Shared MCP server utilities (single source of truth)
├── index.ts # Smithery deployment entry point
├── server.ts # CLI deployment entry point
├── services/ # Core business logic
│ ├── video.ts # Video operations (search, getVideo)
│ ├── transcript.ts # Transcript retrieval
│ ├── playlist.ts # Playlist operations
│ └── channel.ts # Channel operations
├── types.ts # TypeScript interfaces
└── cli.ts # CLI wrapper for standalone execution主要特点
- Smithery优化:通过综合资源、提示和配置,获得了90%以上的Smithery质量分数
- 共享公用设施架构:通过单一信息源消除了90%的代码重复
- 增强的视频响应:所有视频对象都包含直接的YouTube URL
- 灵活的配置:通过Smithery UI或环境变量进行可选配置
- 类型安全开发:完全支持TypeScript
zod验证 - 现代MCP工具:用途
registerTool而不是手动请求处理程序 - 综合资源:可发现的资源和提示,以更好地整合LLM
- 错误处理:使用描述性消息进行全面的错误处理
贡献
有关对此存储库的贡献的信息,请参阅CONTRIBUTING.md。
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
