YouTube Data MCP Server
使用说明(Markdown 格式)
-
项目简介
- 这是一个基于 MCP(Model Context Protocol)的后端服务器实现,专注于提供 YouTube 数据相关的资源、工具和提示模板,便于将 YouTube 数据高效对接到 LLM 场景中。代码采用 TypeScript 编写,遵循类驱动的工具、依赖注入和严格类型安全的设计模式,并具备缓存、数据库及多种传输方式的支持框架。
-
主要功能点
- 资源(Resources):提供可读取的资源对象(如 YouTube Transcript 等),通过统一接口返回简洁、可解析的内容。
- 工具(Tools):提供一组 lean 的 MCP 工具,如获取视频详情、搜索视频、获取转录、获取频道统计、获取频道顶级视频、获取趋势视频、获取分类、获取视频评论,以及可选需 MongoDB 支持的出线渠道分析工具等。
- 提示模板(Prompts):定义并渲染用于引导与 MCP 客户端交互的提示模板,例如对 niche 的深度分析提示。
- MCP 服务器实现:通过 MCP SDK 搭建的服务器,支持 JSON-RPC 风格的请求/响应,具备会话管理、能力声明与资源/工具的注册、渲染等能力。
- 缓存与数据库:可选使用 MongoDB 作为缓存层,提供 TTL、集合分区管理,以及按需排除字段以减少 token 成本。
- 多传输协议(如 STDIO、HTTP/WS 等)的基础结构,当前示例以 STDIO 传输演示与运行。
-
使用安装步骤
- 环境要求
- Node.js 版本:>= 20
- 安装依赖
- 直接克隆仓库后执行 npm ci 安装依赖
- 配置环境
- YouTube Data API v3 Key(YOUTUBE_API_KEY,用于访问 YouTube API)
- MongoDB 连接字符串(MDB_MCP_CONNECTION_STRING,选用时用于缓存和分析数据;未提供时服务器以无数据库模式运行,性能会较低且 API 调用成本提升)
- 运行方式
- 该项目实现了一个 MCP 服务器,正常运行时通常通过与 MCP 客户端配合启动。MCP 客户端需要配置服务器的启动命令和参数来连接 MCP 服务器。当前实现示例通过标准输入输出传输(STDIO)与 MCP 客户端进行通信。
- 运行示例(简述,不给出具体代码块)
- 先在环境变量中设置 YOUTUBE_API_KEY,并按需设置 MDB_MCP_CONNECTION_STRING。
- 使用 MCP 客户端启动配置连接此 MCP 服务器(客户端需要的不是服务器本身的代码,而是启动服务器所需的命令及参数)。
- 服务启动后,客户端即可通过 MCP 的接口调用资源、工具、以及渲染 Prompts 等。
- 环境要求
-
服务器配置(供 MCP 客户端配置使用的 JSON 形式信息说明)
- server 名称(name):YouTube
- command(启动命令):npx
- args(启动参数):-y、@kirbah/mcp-youtube
- 环境变量(env,示例说明):
- YOUTUBE_API_KEY:用于访问 YouTube 数据的 API Key
- MDB_MCP_CONNECTION_STRING:MongoDB 连接字符串(如使用,会创建并使用名为 youtube_niche_analysis 的数据库)
- 说明:MCP 客户端需要将上述信息以 JSON 的形式提供,以便正确启动并连接到 MCP 服务器。该 JSON 仅用于客户端配置示例,实际部署时请按需替换 Key 与连接信息。
-
基本使用方法
- 通过 MCP 客户端连接:将服务器的启动信息(name、command、args、env 等)配置到 MCP 客户端中,客户端启动后即可向 MCP 服务器发起请求,读取资源、执行工具、获取 Prompts。
- 常见操作流程:配置好 API Key 和数据库后,客户端可以调用工具以获取 lean 数据、注册并执行工具、调用 Prompts 来生成适合 LLM 的对话或分析内容、以及通过资源读取相关信息(如 transcript、视频详情等)。
- 性能与安全:服务器尽量返回 lean、token 友好的数据结构,部分工具可以使用 MongoDB 缓存以降低 API 调用成本;对外暴露的输入均通过 Zod 进行严格校验与错误处理,确保稳定性。
-
注意事项
- 使用 MongoDB 的工具如 findConsistentOutlierChannels 等需要 MDB_MCP_CONNECTION_STRING 配置正确,且数据库具备相应权限。
- YouTube API 调用会产生配额消耗,请关注 API 限额与消耗明细。
-
运行与维护
- 提供了基于 Jest 的单元测试覆盖各组件,帮助确保工具、资源、Prompts 等模块的正确性。
- 提供了本地开发与调试的指引,便于开发者扩展工具和 Prompts。
-
参考与扩展
- MCP TypeScript Starter 为进一步扩展工具与资源提供了示例性架构,建议结合该 starter 进行自定义扩展。