YouTube MCP客户端
一个模型上下文协议(MCP)客户端,用于连接到在Docker容器中运行的YouTube转录服务器。
特性
- 🎥 获取YouTube视频转录
- 🔍 在成绩单中搜索
- 📝 总结成绩单内容
- 🐳 基于Docker的MCP服务器集成
- 🔐 Next.js API路由与身份验证
- 📡 JSON-RPC 2.0协议支持
先决条件
- Node.js 18+
- 安装了MCP工具包的Docker桌面
- Docker桌面中配置的YouTube转录MCP服务器
安装
npm install配置
Docker桌面MCP服务器
将此添加到Docker桌面MCP设置中:
{
"mcpServers": {
"youtube_transcript": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"mcp/youtube-transcript"
]
}
}
}用法
启动开发服务器
npm run devAPI终点
获取成绩单
POST /api/youtube/transcript
Content-Type: application/json
{
"videoUrl": "https://www.youtube.com/watch?v=VIDEO_ID",
"action": "get"
}搜索成绩单
POST /api/youtube/transcript
Content-Type: application/json
{
"videoUrl": "https://www.youtube.com/watch?v=VIDEO_ID",
"action": "search",
"query": "search term"
}总结成绩单
POST /api/youtube/transcript
Content-Type: application/json
{
"videoUrl": "https://www.youtube.com/watch?v=VIDEO_ID",
"action": "summarize"
}列出可用工具
GET /api/youtube/transcript直接使用客户端
import { getYouTubeMCPClient } from './lib/mcp/youtube-client';
// Get client instance
const client = await getYouTubeMCPClient();
// Get transcript
const transcript = await client.getTranscript('https://www.youtube.com/watch?v=VIDEO_ID');
// Search transcript
const results = await client.searchTranscript('https://www.youtube.com/watch?v=VIDEO_ID', 'keyword');
// Summarize
const summary = await client.summarizeTranscript('https://www.youtube.com/watch?v=VIDEO_ID');
// Cleanup
await client.disconnect();建筑
youtube-mcp-client/
├── lib/
│ └── mcp/
│ └── youtube-client.ts # MCP client implementation
├── app/
│ └── api/
│ └── youtube/
│ └── transcript/
│ └── route.ts # API endpoints
└── package.json运作原理
- MCP客户端 生成Docker容器
docker run -i --rm mcp/youtube-transcript - JSON-RPC 2.0 通过stdin/stdout进行通信
- 单例模式 确保一个容器实例
- 自动清理 进程退出
MCP协议
客户端实现模型上下文协议:
- 初始化:建立与服务器功能的连接
- 工具列表:从服务器检索可用工具
- 工具调用:使用参数执行工具
- 响应处理:解析JSON-RPC响应
错误处理
- 连接超时(默认30秒)
- Docker进程错误
- JSON-RPC错误响应
- 故障自动清理
发展
# Type checking
npm run type-check
# Linting
npm run lint
# Build
npm run build许可证
麻省理工学院
