Token导航 LogoToken导航TokenDH.com
Yt Info MCP logo
音视频stdio官方级别未说明来源级核验

Yt Info MCP

MCP Server

@limecooler/yt-info-mcp

一个轻量级的MCP服务器,通过网页抓取提取YouTube视频元数据和字幕,具有强大的错误处理、缓存和重试逻辑,无需API密钥或外部依赖。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
浏览器自动化TypeScriptClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Limecooler

提供方

Limecooler

最后核验

2026/5/17 20:20

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx @limecooler/yt-info-mcp

详细介绍

YouTube信息MCP服务器

](https://www.npmjs.com/package/@limecooler/yt-info-mcp) ![License: MIT](https://opensource.org/licenses/MIT) ](https://nodejs.org) ](https://www.npmjs.com/package/@limecooler/yt-info-mcp)

一个轻量级的MCP服务器,通过web抓取提取YouTube视频元数据和转录本,具有强大的错误处理、缓存和重试逻辑,无需API密钥或外部依赖性。

目录

🚀 快速开始

npx @limecooler/yt-info-mcp

就是这样!无需安装。

先决条件

  • Node.js:18.0.0或更高版本
  • npm:9.0.0或更高版本(用于全局安装)
  • 操作系统:Windows、macOS或Linux

特性

  • 获取视频元数据(标题、作者、持续时间、视图、描述)
  • 下载可用的成绩单/字幕
  • 不需要API密钥
  • 无外部依赖(如yt-dlp)
  • Claude Desktop集成的快速启动时间
  • 具有特定错误代码的全面错误处理
  • 使用Zod模式进行输入验证
  • 具有指数回退的重试逻辑,以实现网络弹性
  • 内存缓存以提高性能
  • 调试日志支持(设置 MCP_DEBUG=true)
  • 具有完全类型安全的TypeScript

运作原理

此MCP服务器使用YouTube的InnerTube API(与YouTube移动应用程序使用的API相同)可靠地获取视频数据:

  1. 页面提取:检索YouTube视频页面HTML
  2. API密钥提取:提取 INNERTUBE_API_KEY 从页面源
  3. InnerTube请求:向发出经过身份验证的POST请求 /youtubei/v1/player
  4. Android环境:使用Android客户端上下文(clientName: "ANDROID")为了更好地获取成绩单
  5. 回退策略:如果InnerTube失败,则返回HTML抓取

这种方法比直接获取字幕URL更可靠,因为它模仿了YouTube官方应用程序检索数据的方式。

与备选方案的比较

功能yt-info-mcpyt-dlpyoutube-dlyoutube API
不需要API密钥
成绩单支持
轻量化(\ 备注:如果您将此与Claude Desktop或Claude Code一起使用,则不需要安装。看 Claude桌面配置Claude代码配置 在......下面

选项1:直接与npx一起使用(推荐)

无需安装!您可以直接使用npx运行服务器:

npx @limecooler/yt-info-mcp

选项2:从npm安装

npm install -g @limecooler/yt-info-mcp

选项3:本地安装

  1. 克隆此存储库:
git clone https://github.com/Limecooler/yt-video-info.git
cd yt-video-info
  1. 安装依赖项:
npm install
  1. 构建TypeScript代码:
npm run build

Claude桌面配置

将以下内容添加到您的Claude Desktop配置文件中:

配置文件位置

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

选项1:使用npx(推荐-无需安装)

{
  "mcpServers": {
    "youtube-info": {
      "command": "npx",
      "args": ["-y", "@limecooler/yt-info-mcp@latest"]
    }
  }
}

选项2:本地安装

{
  "mcpServers": {
    "youtube-info": {
      "command": "node",
      "args": ["/absolute/path/to/yt-video-info/dist/index.js"]
    }
  }
}

Claude代码配置

要将此MCP服务器与Claude代码一起使用:

选项1:使用CLI快速设置(推荐)

只需在终端中运行以下命令:

claude mcp add yt-info-mcp -s user -- npx -y @limecooler/yt-info-mcp@latest

这会自动将YouTube Info MCP服务器添加到您的全局Claude Code配置中。

选项2:手动全局配置

添加到全局Claude Code配置文件中:

配置文件位置:

  • macOS/Linux: ~/.claude/config.json
  • 视窗: %USERPROFILE%\.claude\config.json
{
  "mcpServers": {
    "youtube-info": {
      "command": "npx",
      "args": ["-y", "@limecooler/yt-info-mcp@latest"]
    }
  }
}

这使得YouTube Info MCP服务器在您的所有Claude Code会话中都可用。

选项3:项目特定配置

添加到您的Claude Code项目配置中(.claude/project.json):

{
  "mcpServers": {
    "youtube-info": {
      "command": "npx",
      "args": ["-y", "@limecooler/yt-info-mcp@latest"]
    }
  }
}

选项4:本地安装

如果您已在本地克隆了存储库:

{
  "mcpServers": {
    "youtube-info": {
      "command": "node",
      "args": ["./path/to/yt-video-info/dist/index.js"]
    }
  }
}

配置后,您可以在Claude Code中使用该工具:

User: Get information about YouTube video dQw4w9WgXcQ

Claude Code: I'll fetch the video information using the YouTube Info MCP server.
[Uses the MCP tool to retrieve video metadata and transcript]

用法

与Claude Desktop一起使用

配置后,您可以在Claude Desktop中使用该工具:

Please get information from YouTube video dQw4w9WgXcQ

使用npm(命令行)

如果你通过npm全局安装:

# Run the MCP server directly
yt-info-mcp

# Or use with a tool that supports MCP
npx @modelcontextprotocol/cli connect yt-info-mcp

用作图书馆

import { fetchVideoInfo, fetchTranscript } from '@limecooler/yt-info-mcp';

// Get video information
const { metadata, captionTracks } = await fetchVideoInfo('dQw4w9WgXcQ');

// Fetch transcript if available
if (captionTracks.length > 0) {
  const transcript = await fetchTranscript(captionTracks[0]);
}

工具将返回:

  • 视频元数据(标题、作者、持续时间、观看次数、描述)
  • 带时间戳的成绩单(如果可用)
  • 如果视频不可用或没有转录,则显示错误详细信息

api参考

fetchVideoInfo(videoId: string)

获取视频元数据和可用字幕轨道。

参数:

  • videoId (string):11个字符的YouTube视频ID

退货: Promise

  • metadata:包含视频信息的对象

- title (string):视频标题 - author (string):频道名称 - lengthSeconds (数字):持续时间(秒) - viewCount (number):查看次数 - description (string):视频描述

  • captionTracks:可用字幕曲目阵列

- baseUrl (string):获取成绩单的URL - languageCode (string):语言代码(例如“en”、“es”)

投掷: YouTubeError 带有特定错误代码:

  • INVALID_ID:视频ID格式无效
  • NOT_FOUND:视频不存在
  • PRIVATE:视频是私人的
  • AGE_RESTRICTED:受年龄限制的内容
  • REGION_BLOCKED:区域阻止的内容

fetchTranscript(captionTrack: CaptionTrack)

获取并解析给定字幕轨道的文字记录。

参数:

  • captionTrack (CaptionTrack):标题跟踪对象来自 fetchVideoInfo

退货: Promise

  • text (string):全文
  • segments (array):转录片段数组

- start (数字):开始时间(秒) - text (字符串):分段文本

错误处理示例:

try {
  const { metadata, captionTracks } = await fetchVideoInfo('dQw4w9WgXcQ');
  
  if (captionTracks.length > 0) {
    const transcript = await fetchTranscript(captionTracks[0]);
    console.log(transcript.text);
  }
} catch (error) {
  if (error.code === 'PRIVATE') {
    console.log('This video is private');
  }
}

响应格式

{
  "metadata": {
    "title": "Video Title",
    "author": "Channel Name",
    "lengthSeconds": 215,
    "viewCount": 1234567,
    "description": "Video description..."
  },
  "transcript": {
    "text": "Full transcript text...",
    "segments": [
      {
        "start": 0.0,
        "text": "First segment"
      },
      {
        "start": 2.5,
        "text": "Second segment"
      }
    ]
  },
  "error": "Error message if transcript unavailable"
}

错误处理

服务器处理各种错误情况:

  • 视频ID格式无效
  • 未找到视频(404)
  • 私人或年龄限制的视频
  • 无文字记录的视频
  • 网络错误

发展

在开发模式下运行并自动重新加载:

npm run dev

测试

运行全面测试:

npm test

测试MCP协议通信:

npm run test:mcp

启用调试日志记录:

MCP_DEBUG=true npm start

故障排除

常见问题

安装npm后“找不到命令”

解决方案:将npm全局bin目录添加到PATH或使用npx:

# Check npm bin location
npm bin -g

# Or just use npx
npx @limecooler/yt-info-mcp

空成绩单回复

可能的原因:

  • 视频未启用字幕
  • 视频在您所在地区受到地区限制
  • YouTube正在限制您的请求速率

解决方案:检查视频是否在YouTube网站上有“CC”按钮。

“INVALID_ID”错误

解决方案:确保视频ID恰好为11个字符。从URL中提取它:

  • ✅ 对的: dQw4w9WgXcQ
  • ❌ 错误: https://youtube.com/watch?v=dQw4w9WgXcQ

Claude Desktop中的连接被拒绝

解决方案:确保配置路径是绝对的,而不是相对的:

{
  "mcpServers": {
    "youtube-info": {
      "command": "node",
      "args": ["/Users/username/yt-video-info/dist/index.js"]  // Full path
    }
  }
}

速率限制错误

解决方案:实现请求之间的延迟或使用内置缓存:

// Videos are cached for 1 hour, transcripts for 2 hours
await fetchVideoInfo('video1');
// Second call uses cache
await fetchVideoInfo('video1');

环境变量

变量描述默认值示例
MCP_DEBUG启用stderr的调试日志记录falseMCP_DEBUG=true
DEBUG备选调试标志falseDEBUG=true
NODE_ENV环境模式productionNODE_ENV=development

演出

  • 启动时间:\<500ms(在M1 MacBook Air上测量)
  • 内存使用:约50MB空闲,约100MB在活动请求期间
  • 缓存TTL:视频信息(1小时),成绩单(2小时)
  • 响应时间:

- 缓存:\<100ms - 新鲜获取:2-4s(取决于YouTube的响应时间)

  • 并发请求:受限于Node.js事件循环

安全

安全考虑

  • 没有凭据:不需要或存储API密钥或身份验证令牌
  • 只读:仅执行GET/POST请求以检索公共数据
  • 无用户数据:不收集或传输任何用户信息
  • 内容过滤:尊重YouTube的年龄限制和隐私设置
  • 安全依赖关系:依赖性最小,全部来自可信来源
  • 输入验证:所有输入均已Zod模式验证

最佳实践

  • 如果处理不受信任的视频ID,请在隔离环境中运行
  • 监控速率限制以避免IP阻塞
  • 使用环境变量进行配置,而不是硬编码值

局限性

  • 依赖于YouTube的网络界面结构,这可能会发生变化
  • 无法转录音频-仅下载现有字幕
  • 如果过度使用,可能会受到YouTube的费率限制
  • 无法访问年龄限制或私人视频

贡献

我们欢迎捐款!以下是您可以提供帮助的方式:

入门指南

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 进行更改
  4. 运行测试(npm test)
  5. 提交您的更改(git commit -m 'Add amazing feature')
  6. 推到分支(git push origin feature/amazing-feature)
  7. 打开拉取请求

开发指南

  • 遵循现有的代码风格和约定
  • 为新功能添加测试
  • 根据需要更新文档
  • 保持提交的重点和描述性
  • 在提交PR之前,确保所有测试都通过

报告问题

  • 在创建新问题之前检查现有问题
  • 包括重现错误的步骤
  • 提供系统信息(Node.js版本、操作系统)
  • 包括相关错误消息和日志

使用克劳德代码构建

整个项目是使用 克劳德代码Anthropic的人工智能编码助手。Claude Code通过内置的最佳实践和全面的测试实现了快速开发。

使用Claude代码进行更改

要使用Claude Code贡献或修改此存储库,请执行以下操作:

  1. 安装Claude代码 (如果你还没有):
   npm install -g @anthropic-ai/claude-code
  1. 克隆并打开存储库:
   git clone https://github.com/Limecooler/yt-video-info.git
   cd yt-video-info
   claude-code
  1. 要求Claude Code进行更改:

- “添加对播放列表提取的支持” - “改进速率限制的错误处理” - “为刮板模块添加单元测试” - “更新InnerTube API实现”

  1. 克劳德代码将:

- 了解现有的代码库结构 - 遵循既定的模式和惯例 - 运行测试以确保更改不会破坏功能 - 根据需要更新文档 - 用描述性消息提交更改

为什么选择克劳德代码?

  • 上下文感知:了解整个代码库并保持一致性
  • 最佳实践:自动遵循TypeScript、MCP和npm约定
  • 测试驱动:确保对变更进行测试和记录
  • 高效:将开发时间从数小时缩短到几分钟

Claude代码会话示例

You: "Add a feature to download video thumbnails"

Claude Code: I'll add thumbnail download functionality to the MCP server.
[Claude Code analyzes the codebase, implements the feature, adds tests, 
updates types, and creates a commit]

You: "Now add documentation for the new feature"

Claude Code: I'll update the README and add inline documentation.
[Updates all relevant documentation files]

更新日志

发布 查看详细的版本历史。

最新版本:v1.1.1

  • 🔧 修复了npx兼容性的可执行权限
  • 🐛 已解决克劳德代码连接错误(MCP错误-32000)
  • 📚 添加了简单的Claude Code CLI设置命令

v1.1.0版本

  • 🐛 修复了使用YouTube的InnerTube API获取成绩单的问题
  • ✨ 添加了Android客户端上下文,以提高可靠性
  • 📚 通过徽章和更好的结构改进文档

许可证

麻省理工学院

目录标签

目录标签

浏览器自动化TypeScriptClaude视频元数据提取本地部署字幕下载网页抓取无API密钥MCP服务器

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

@limecooler/yt-info-mcp

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP