如何为 Cursor 和 Windsurf AI 编码助手构建 YouTube MCP 服务器
在将我的 Learn English Sounds 网站从 CMS 迁移到 Next.js 时,我遇到了一个令人沮丧的瓶颈。我需要找到演示每个英语音素的 YouTube 视频,但我的 AI 编码助手(Cursor 和 Windsurf)无法直接搜索 YouTube。
这意味着我必须手动验证每个视频建议,这中断了我的工作流程。我会得到一个建议,检查它是否存在,然后返回编码。这虽然不是一个大问题,但效率确实不高。
为了简化这个过程,我为 YouTube 构建了一个简单的模型控制协议 (MCP) 服务器。它允许我的 AI 编码工具在我的干预下搜索和检索实际的视频信息。
本指南将介绍如何构建您自己的 MCP 服务器。这是一个直接的项目,如果您经常需要您的 AI 编码助手访问 YouTube 等外部服务,它可以为您节省时间。
什么是 MCP?
想象一下,您正在使用 Claude 或 GPT 这样的 AI 助手,但它无法直接访问互联网或其他服务。MCP(模型控制协议)就像一个翻译器,帮助 AI 与这些服务进行通信。
这样想:如果您说英语,而您的朋友说西班牙语,您需要一个翻译才能交流。同样,MCP 服务器在 AI 工具(如 Cursor 或 Windsurf)和外部服务(如 YouTube)之间进行翻译。它遵循特定的规则,以便双方都能完美地理解对方。
从技术上讲,它是一个遵循特定格式的标准化 API 服务器,使 AI 工具能够在没有人为干预的情况下请求和接收数据。该协议定义了请求的格式、响应的结构以及错误的处理方式。
值得注意的是,Anthropic 已 开源了其模型上下文协议,使开发人员能够在数据源和 AI 工具之间构建安全连接。他们的实现包括 SDK、Claude 桌面应用程序中的本地服务器支持以及针对 Google Drive、GitHub 和 Slack 等流行系统的预构建服务器。
我为什么需要这个
Learn English Sounds 需要视频来展示每个音素的正确发音。没有直接的 YouTube 访问权限,Cursor 或 Windsurf 会建议那些经常不存在的视频,迫使我手动验证每个建议。
MCP 之前的工作流程示例:
我:“我需要‘th’音的视频。”
Cursor 或 Windsurf:“我推荐‘English TH Sounds - How to pronounce TH correctly’。”
我:“那个真的存在吗?频道是什么?”
Cursor 或 Windsurf:“应该在‘English Pronunciation’频道。”
我:*搜索 YouTube* “那个频道存在,但那个视频不存在。”
构建 YouTube 服务器
我使用 Python 和 FastAPI 构建了服务器,并连接到 YouTube Data API。这是展示其工作原理的架构图:
主要挑战在于管理 YouTube 的 API 配额并确保服务器正确遵循 MCP 规范。
它的工作原理
有了 MCP 服务器,Cursor 或 Windsurf 现在可以直接搜索 YouTube,并提供带有观看次数和评分的实际视频。这减少了来回的交互,使我能够专注于开发。
新的工作流程:
我:“查找‘th’音的视频。”
Cursor 或 Windsurf:*查询 MCP 服务器*
Cursor 或 Windsurf:“我找到了这些选项,带有观看次数和评分。您更喜欢哪个?”
我:“第一个。”
Cursor 或 Windsurf:*添加带有正确视频 ID 的嵌入代码*
技术实现细节
构建 MCP 时需要考虑的关键技术问题:
1. 身份验证:MCP 规范没有标准化的身份验证方法。我使用了存储在环境变量(.env 文件)中的 YouTube API 密钥。
2. 响应格式:AI 工具期望特定的响应格式。格式因端点而异,但这是 search_videos
端点的一个示例:
{
"videos": [
{
"title": "How to Pronounce TH - English Pronunciation Lesson",
"videoId": "dQw4w9WgXcQ",
"channelTitle": "English Pronunciation",
"description": "Learn how to pronounce the TH sound in English correctly."
}
]
}
这是 get_video_details
端点的示例,它返回更全面的信息:
{
"title": "How to Pronounce TH - English Pronunciation Lesson",
"description": "Learn how to pronounce the TH sound in English correctly.",
"channelTitle": "English Pronunciation",
"publishedAt": "2023-04-15T14:30:00Z",
"duration": "PT5M30S",
"viewCount": "1234567",
"likeCount": "12345",
"commentCount": "1234"
}
3. 错误处理:一致的错误格式至关重要,因为 AI 工具可能会被意外的响应弄糊涂。我的实现包括针对不同场景的特定错误处理:
- 缺少 API 密钥:“无法初始化 YouTube 服务。请检查 YOUTUBE_API_KEY 环境变量。”
- 无效的 API 密钥:“发生 HTTP 错误 400:[错误内容]。这可能表示 API 密钥 (YOUTUBE_API_KEY) 无效或缺失。”
- 未找到资源:“未找到 ID 为‘[video_id]’的视频。”
- 一般 HTTP 错误:“发生 HTTP 错误 [status]:[错误内容]”
这对 AI 编码工具为什么重要
当您使用 Cursor 或 Windsurf 等 AI 助手进行编码时,您会根据外部信息不断做出决策。没有 MCP,这些工具在实时数据方面基本上是蒙着眼睛工作的。
MCP 之所以能改变 AI 编码的游戏规则,原因如下:
- 减少上下文切换:保持您的编码流程,无需在应用程序之间跳转
- 经过验证的信息:获取准确的实时数据,而不是可能过时或被幻觉化的内容
- 专业知识:访问 AI 未经训练的领域特定信息
- 定制化工作流程:根据您的特定需求和开发模式构建 MCP
根据 OpenAI 文档,MCP 提供“具有清晰边界的领域特定知识”,使其成为以可控、可预测的方式扩展 AI 功能的理想选择。同样,Anthropic 的 Claude 桌面应用程序使用 MCP 将 Claude 安全地连接到 Google Drive 和 GitHub 等服务。
创建您自己的 MCP
如果您想构建 MCP:
1. 从一个能为您节省最多时间的 API 端点开始
2. 专注于使响应格式正确
3. 实现适当的错误处理
我的 YouTube MCP 包括以下端点:
/search_videos
- 查找与查询匹配的视频/get_video_details
- 获取特定视频的详细信息/get_related_videos
- 查找与特定视频相关的视频/list_channel_videos
- 获取频道的最新上传/get_channel_details
- 获取 YouTube 频道的有关信息/search_playlists
- 查找与查询匹配的播放列表/get_playlist_items
- 获取特定播放列表中的视频
结果
构建此 MCP 服务器显著减少了我的开发时间。Cursor 和 Windsurf 现在可以根据实际视频数据提供更好的建议,并且我可以专注于开发,而无需切换上下文去搜索 YouTube。
流行的 MCP 服务器和当前用途
已有多个 MCP 服务器正在生产环境中使用:
- GitHub MCP:允许 AI 工具搜索存储库、查看代码以及访问问题/PR
- Google Drive MCP:支持从 Google Drive 搜索和检索文档
- Slack MCP:提供对频道、消息和工作区信息的访问
- Firebase MCP:支持查询和更新 Firestore 集合和文档
- MongoDB MCP:提供对 MongoDB 数据库的访问,用于 AI 辅助数据分析
- PostgreSQL MCP:允许 AI 工具查询关系数据库并可视化结果
- Jira MCP:支持查询和更新工单及项目信息
- Mermaid MCP:帮助根据文本描述生成图表(类似于 我的 Mermaid 自动化帖子)
- Wolfram Alpha MCP:提供计算和事实知识
这些服务器在 Claude Desktop 用户以及使用 Cursor 或 Windsurf 的开发人员中特别受欢迎。随着 MCP 生态系统的不断发展,我们看到了更多针对数据分析、API 测试和文档生成等领域的专用服务器。
自己尝试
我的 YouTube MCP 服务器的代码可在 GitHub 上找到。您需要一个 YouTube API 密钥才能进行设置。