ClaudeTube
MCP服务器将Claude连接到您的YouTube帐户。
直接从Claude管理您的视频、播放列表、评论、字幕和频道。
最初,我创建这个工具来管理我自己的游戏频道 脱氯铜矿作为一名创作者,我希望能够直接从Claude控制我的频道,而不离开我的工作流程。该项目向所有希望这样做的YouTube创作者开放。
  ](https://nodejs.org/)  
______________________________________________________________________
堆叠技术
| 组件 | 技术 |
|---|---|
| 运行时 | Node.js 18+ |
| 语言 | TypeScript(严格模式) |
| 协议 | 模型上下文协议(MCP) @modelcontextprotocol/sdk |
| API | YouTube数据API v3通过 googleapis |
| 自动刷新的OAuth 2.0身份验证 | |
| 加密 | AES-256-GCM(静止令牌) |
| 验证 | Zod(schémas运行时) |
安全
ClaudeTube的设计以安全为重。没有妥协。
| 测量 | 细节 |
|---|---|
| OAuth 2.0 | 标准协议。没有操纵YouTube密码。 |
| AES-256-GCM加密 | 令牌在静止时通过操作和通过身份验证标签进行完整性检查,使用随机IV进行加密。 |
| 没有远程服务器 | MCP服务器仅在本地运行。数据仅在您的机器和Google API之间传输。 |
| 最小最大范围 | 授权时只需要严格必要的YouTube范围。 |
| 明确确认 | 任何破坏性操作(删除视频、播放列表、评论)都需要一个参数 confirm: true. |
| 输入验证 | 在任何API调用之前,Regex都会验证YouTube ID。文本被消毒(删除控制字符)。 |
| 文件权限 | 令牌目录创建于 0700,文件 0600. |
Architecture de chiffrement
Clé source (env var ou dérivée du homedir)
|
v
SHA-256 → Clé AES-256 (32 bytes)
|
v
Chiffrement AES-256-GCM
- IV aléatoire (16 bytes) par opération
- Authentication tag (16 bytes) pour l'intégrité
- Résultat stocké en JSON : { iv, tag, data }令牌从未以明文形式写入磁盘。
可用工具(27)
认证
| 输出 | 描述 |
|---|---|
auth | 生成OAuth 2.0授权URL |
auth_callback | 使用授权代码完成连接 |
auth_status | 检查连接状态并显示频道信息 |
auth_revoke | 断开连接并删除存储的令牌 |
视频
| 输出 | 描述 |
|---|---|
list_my_videos | 列出您频道的视频(标题、统计数据、状态) |
get_video | 视频的完整详细信息(元数据、统计数据、标签) |
update_video | 更改标题、描述、标签、类别、隐私 |
delete_video | 删除视频(需要确认) |
rate_video 喜欢、不喜欢或删除注释 |
播放列表
| 输出 | 描述 |
|---|---|
list_my_playlists | 列出所有播放列表 |
create_playlist | 创建新播放列表 |
update_playlist | 更改标题、描述和隐私 |
delete_playlist | 删除播放列表(需要确认) |
list_playlist_items | 从播放列表中列出视频 |
add_to_playlist | 将视频添加到播放列表 |
remove_from_playlist | 从播放列表中删除视频 |
评论
| 输出 | 描述 |
|---|---|
list_comments | 列出视频评论 |
post_comment | 在视频上发表评论 |
reply_to_comment | 回复现有评论 |
delete_comment | 删除评论(需要确认) |
moderate_comment 批准、拒绝或标记为垃圾邮件 |
链
| 输出 | 描述 |
|---|---|
get_my_channel | 您频道的完整信息 |
update_my_channel | 更改描述、关键字、语言、国家 |
字幕
| 输出 | 描述 |
|---|---|
list_captions | 列出视频的字幕 |
download_caption | 下载字幕(SRT、SBV、VTT) |
delete_caption | 删除字幕(需要确认) |
研究
| 输出 | 描述 |
|---|---|
search_youtube | 在YouTube上搜索视频、频道或播放列表 |
安装
先决条件
- Node.js 18或更高版本
- 启用YouTube数据API v3的Google云项目
- OAuth 2.0标识符(“桌面应用程序”类型)
1.创建Google ID
- 访问 谷歌云控制台
- 创建项目或选择现有项目
- 能够API YouTube数据v3 在 API库
- 进去 标识符 > 创建标识符 > 身份客户端OAuth 2.0
- d类应用: 申请局
- 注意
Client ID等等Client Secret
2.安装器ClaudeTube
git clone https://github.com/fmenguy/ClaudeTube.git
cd ClaudeTube
npm install
npm run build3.配置器Claude
选项A——克劳德代码(CLI/VS代码/JetBrains)
创建文件 .mcp.json 在项目的根源:
{
"mcpServers": {
"claudetube": {
"command": "node",
"args": ["/chemin/vers/ClaudeTube/dist/index.js"],
"env": {
"YOUTUBE_CLIENT_ID": "votre-client-id.apps.googleusercontent.com",
"YOUTUBE_CLIENT_SECRET": "votre-client-secret"
}
}
}
}添加 .mcp.json 给你的 .gitignore 为了不暴露你的秘密。
选项B——克劳德桌面
将以下配置添加到文件中 claude_desktop_config.json :
{
"mcpServers": {
"claudetube": {
"command": "node",
"args": ["/chemin/vers/ClaudeTube/dist/index.js"],
"env": {
"YOUTUBE_CLIENT_ID": "votre-client-id.apps.googleusercontent.com",
"YOUTUBE_CLIENT_SECRET": "votre-client-secret"
}
}
}
}4.联系
重新启动Claude后,只需询问:
“登录我的YouTube帐户”
Claude将通过该工具生成授权链接 auth,然后将完成与的连接 auth_callback令牌被加密并存储在本地。
环境变量
| 变量 | 请求 | 描述 |
|---|---|---|
YOUTUBE_CLIENT_ID | 是 | 客户端ID OAuth 2.0 Google |
YOUTUBE_CLIENT_SECRET | 是的 | 秘密客户端OAuth 2.0谷歌 |
YOUTUBE_REDIRECT_URI | 非 | URI重定向(错误: urn:ietf:wg:oauth:2.0:oob) |
CLAUDETUBE_TOKEN_PATH | 否 | 加密令牌的存储路径(默认: ~/.claudetube/tokens.enc) |
CLAUDETUBE_ENCRYPTION_KEY | 否 | 令牌的自定义加密密钥 |
使用示例
"Liste mes 5 dernières vidéos"
→ list_my_videos(maxResults: 5)
"Mets la vidéo dQw4w9WgXcQ en non-répertorié"
→ update_video(videoId: "dQw4w9WgXcQ", privacyStatus: "unlisted")
"Crée une playlist 'Best of 2024' et ajoutes-y ces 3 vidéos"
→ create_playlist + add_to_playlist x3
"Réponds 'Merci !' aux 5 derniers commentaires sur ma vidéo"
→ list_comments + reply_to_comment x5
"Quels sous-titres sont disponibles sur ma dernière vidéo ?"
→ list_my_videos(maxResults: 1) + list_captions项目建筑
src/
├── index.ts Point d'entrée MCP, enregistrement des outils
├── auth/
│ └── oauth.ts OAuth 2.0 flow, chiffrement et stockage des tokens
├── tools/
│ ├── videos.ts Gestion des vidéos (CRUD + rating)
│ ├── playlists.ts Gestion des playlists (CRUD + items)
│ ├── comments.ts Commentaires (CRUD + modération)
│ ├── channel.ts Informations et modification de la chaîne
│ ├── captions.ts Sous-titres (list, download, delete)
│ └── search.ts Recherche YouTube
└── utils/
├── errors.ts Gestion d'erreurs API centralisée
└── validation.ts Validation et sanitisation des entrées______________________________________________________________________
英语
MCP服务器将Claude连接到您的YouTube帐户。
直接从Claude管理您的视频、播放列表、评论、字幕和频道。
我最初构建这个工具是为了管理我自己的游戏频道 脱氯铜矿作为一名创作者,我想直接从克劳德那里控制我的频道,而不离开我的工作流程。该项目对所有想做同样事情的YouTube创作者开放。
______________________________________________________________________
技术栈
| 组件 | 技术 |
|---|---|
| 运行时 | Node.js 18+ |
| 语言 | TypeScript(严格模式) |
| 协议 | 模型上下文协议(MCP) @modelcontextprotocol/sdk |
| API | YouTube数据API v3通过 googleapis |
| 身份验证 | OAuth 2.0自动刷新 |
| 加密 | AES-256-GCM(静止令牌) |
| 验证 | Zod(运行时模式) |
安全
ClaudeTube以安全为首要任务。没有妥协。
| 度量 | 详细信息 |
|---|---|
| OAuth 2.0 | 行业标准协议。您的YouTube密码永远不会被处理。 |
| AES-256-GCM加密 | 令牌在静止时使用随机IV进行加密,并通过身份验证标签进行完整性验证。 |
| 无远程服务器 | MCP服务器仅在本地计算机上运行。数据仅在您和Google的API之间流动。 |
| 最小范围 | 授权期间只要求严格必要的YouTube范围。 |
| 明确确认 | 每一个破坏性行为(视频、播放列表、评论删除)都需要 confirm: true 参数。 |
| 输入验证 | YouTube标识符在任何API调用之前通过regex进行验证。文本输入被净化(控制字符被删除)。 |
| 文件权限 | 令牌目录是通过以下方式创建的 0700,令牌文件 0600. |
Encryption architecture
Key source (env var or derived from homedir)
|
v
SHA-256 → AES-256 key (32 bytes)
|
v
AES-256-GCM encryption
- Random IV (16 bytes) per operation
- Authentication tag (16 bytes) for integrity
- Stored as JSON: { iv, tag, data }令牌从不以明文形式写入磁盘。
可用工具(27)
认证
| 工具 | 说明 |
|---|---|
auth | 生成OAuth 2.0授权URL |
auth_callback | 使用授权码完成连接 |
auth_status | 检查连接状态并显示频道信息 |
auth_revoke | 断开连接并删除存储的令牌 |
视频
| 工具 | 说明 |
|---|---|
list_my_videos | 列出您频道的视频(标题、统计数据、状态) |
get_video | 完整的视频细节(元数据、统计数据、标签) |
update_video | 更新标题、描述、标签、类别、隐私 |
delete_video | 删除视频(需要确认) |
rate_video | 喜欢、不喜欢或删除评级 |
播放列表
| 工具 | 说明 |
|---|---|
list_my_playlists | 列出您的所有播放列表 |
create_playlist | 创建新的播放列表 |
update_playlist | 更新标题、描述、隐私 |
delete_playlist | 删除播放列表(需要确认) |
list_playlist_items | 在播放列表中列出视频 |
add_to_playlist | 将视频添加到播放列表 |
remove_from_playlist | 从播放列表中删除视频 |
评论
| 工具 | 说明 |
|---|---|
list_comments | 列出对视频的评论 |
post_comment | 对视频发表评论 |
reply_to_comment | 对现有评论的回复 |
delete_comment | 删除评论(需要确认) |
moderate_comment | 批准、拒绝或标记为垃圾邮件 |
频道
| 工具 | 说明 |
|---|---|
get_my_channel | 完整频道信息 |
update_my_channel | 更新描述、关键字、语言、国家 |
字幕
| 工具 | 说明 |
|---|---|
list_captions | 列出视频的字幕 |
download_caption | 下载字幕曲目(SRT、SBV、VTT) |
delete_caption | 删除字幕曲目(需要确认) |
搜索
| 工具 | 说明 |
|---|---|
search_youtube | 在YouTube上搜索视频、频道或播放列表 |
安装
先决条件
- Node.js 18或更高版本
- 启用了YouTube Data API v3的Google Cloud项目
- OAuth 2.0凭据(桌面应用程序类型)
1.创建Google凭据
- 首选 谷歌云控制台
- 创建项目或选择现有项目
- 启用 YouTube数据API v3 在 API库
- 首选 凭证 > 创建凭据 > OAuth 2.0客户端ID
- 应用程序类型: 桌面应用程序
- 记下
Client ID和Client Secret
2.安装排气管
git clone https://github.com/fmenguy/ClaudeTube.git
cd ClaudeTube
npm install
npm run build3.配置Claude
选项A——克劳德代码(CLI/VS代码/JetBrains)
创建一个 .mcp.json 项目根目录下的文件:
{
"mcpServers": {
"claudetube": {
"command": "node",
"args": ["/path/to/ClaudeTube/dist/index.js"],
"env": {
"YOUTUBE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"YOUTUBE_CLIENT_SECRET": "your-client-secret"
}
}
}
}添加 .mcp.json 到你的 .gitignore 保护你的秘密安全。
选项B——克劳德桌面
将以下内容添加到您的 claude_desktop_config.json 文件:
{
"mcpServers": {
"claudetube": {
"command": "node",
"args": ["/path/to/ClaudeTube/dist/index.js"],
"env": {
"YOUTUBE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"YOUTUBE_CLIENT_SECRET": "your-client-secret"
}
}
}
}4.连接
重启克劳德后,只需问:
“连接到我的YouTube帐户”
Claude将通过以下方式生成授权链接 auth 工具,然后使用完成连接 auth_callback令牌被加密并存储在本地。
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
YOUTUBE_CLIENT_ID | 是 | 谷歌OAuth 2.0客户端ID |
YOUTUBE_CLIENT_SECRET | 是 | 谷歌OAuth 2.0客户端密码 |
YOUTUBE_REDIRECT_URI | 否 | 重定向URI(默认值: urn:ietf:wg:oauth:2.0:oob) |
CLAUDETUBE_TOKEN_PATH | 否 | 加密令牌存储路径(默认值: ~/.claudetube/tokens.enc) |
CLAUDETUBE_ENCRYPTION_KEY | 否 | 令牌的自定义加密密钥 |
用法示例
"List my last 5 videos"
→ list_my_videos(maxResults: 5)
"Set video dQw4w9WgXcQ to unlisted"
→ update_video(videoId: "dQw4w9WgXcQ", privacyStatus: "unlisted")
"Create a playlist 'Best of 2024' and add these 3 videos"
→ create_playlist + add_to_playlist x3
"Reply 'Thanks!' to the last 5 comments on my video"
→ list_comments + reply_to_comment x5项目结构
src/
├── index.ts MCP entry point, tool registration
├── auth/
│ └── oauth.ts OAuth 2.0 flow, token encryption & storage
├── tools/
│ ├── videos.ts Video management (CRUD + rating)
│ ├── playlists.ts Playlist management (CRUD + items)
│ ├── comments.ts Comments (CRUD + moderation)
│ ├── channel.ts Channel info & updates
│ ├── captions.ts Captions (list, download, delete)
│ └── search.ts YouTube search
└── utils/
├── errors.ts Centralized API error handling
└── validation.ts Input validation & sanitization______________________________________________________________________
许可证
麻省理工学院——见 许可证
