项目简介
Futuroptimist YouTube字幕MCP服务是'futuroptimist'仓库中的一个核心组件,它实现了一个符合Model Context Protocol (MCP) 标准的服务器。该服务旨在为LLM(大型语言模型)客户端提供结构化的YouTube视频上下文信息,包括视频字幕、元数据和字幕分块。它通过JSON-RPC协议进行通信,并支持标准输入/输出(stdio)作为传输协议,方便集成到各种LLM应用中。
主要功能点
该MCP服务器提供以下主要工具(Tools),LLM客户端可以通过JSON-RPC调用:
- 'youtube.get_transcript': 获取指定YouTube视频的完整字幕。支持选择语言和偏好自动生成字幕。返回的字幕会被标准化并分块,方便检索。
- 'youtube.search_captions': 列出指定YouTube视频所有可用的字幕轨道信息(包括语言、是否自动生成等)。
- 'youtube.get_metadata': 获取指定YouTube视频的基本元数据,如ID、URL、标题和频道信息。
- 'youtube.healthcheck': 提供服务器的健康状态检查,返回服务是否正常运行及其版本信息。
安装步骤
- 克隆仓库: 首先,将Futuroptimist仓库克隆到本地。
git clone https://github.com/futuroptimist/futuroptimist.git cd futuroptimist - 安装依赖: 该项目使用'uv'管理Python依赖。请确保已安装'uv',然后安装项目依赖。
这将安装包括'youtube-transcript-api'、'pydantic'、'fastapi'、'uvicorn'等服务所需的Python包。# 如果尚未安装uv # pip install uv # 安装项目所有依赖 uv sync
服务器配置
MCP客户端需要配置服务器的启动命令和参数才能与其建立连接。对于Futuroptimist YouTube字幕MCP服务,您需要配置以下信息:
- 'server_name': 一个标识此MCP服务器的名称,例如 "Futuroptimist YouTube Transcript"。
- 'command': 启动Python解释器的命令,通常是 "python"。
- 'args': 传递给Python解释器的参数列表,用于启动MCP服务器脚本。对于此服务,参数为 '["tools/youtube_mcp/mcp_server.py"]'。
例如,MCP客户端的配置逻辑会使用 'command' 和 'args' 组合成 'python tools/youtube_mcp/mcp_server.py' 来启动服务器进程,并通过其标准输入/输出来发送和接收JSON-RPC消息。
基本使用方法
启动MCP服务器后,LLM客户端可以通过标准输入(stdin)发送JSON-RPC请求,并通过标准输出(stdout)接收JSON-RPC响应。以下是一个通过命令行模拟MCP客户端与服务器进行交互的示例:
-
启动服务器(在一个终端窗口):
python tools/youtube_mcp/mcp_server.py服务器会持续运行,等待标准输入。
-
发送请求(在另一个终端窗口): 您可以向服务器的标准输入发送JSON-RPC请求。例如,请求一个视频的字幕:
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools.call", "params": {"name": "youtube.get_transcript", "arguments": {"url": "https://www.youtube.com/watch?v=VIDEO_ID", "lang": "en"}}}' | python -c 'import sys, json; for line in sys.stdin: sys.stdout.write(line); sys.stdout.flush()' | python tools/youtube_mcp/mcp_server.py注意: 上述 'echo' 命令需要在Unix-like系统下使用,并将输出通过管道传递给MCP服务器。'VIDEO_ID' 需要替换为实际的YouTube视频ID。 在实际的LLM应用中,通常会有专门的MCP客户端库来处理JSON-RPC请求和响应的发送与接收。
示例请求:列出可用工具
要获取服务器支持的所有工具列表,您可以发送以下JSON-RPC请求:
{ "jsonrpc": "2.0", "id": 2, "method": "tools.list" }
示例请求:获取视频元数据
要获取YouTube视频的元数据,您可以发送以下JSON-RPC请求:
{ "jsonrpc": "2.0", "id": 3, "method": "tools.call", "params": { "name": "youtube.get_metadata", "arguments": { "url": "https://www.youtube.com/watch?v=VIDEO_ID" } } }
将 'VIDEO_ID' 替换为实际的YouTube视频ID。服务器将返回包含视频标题、频道等信息的JSON响应。
信息
分类
数据库与文件