MCP 视频摘要是一项视频内容处理服务,可以从 YouTube、Bilibili、TikTok、Twitter 等网站上的视频中提取音频,并将其转换成文本。该服务支持多个转录服务提供商,包括 Deepgram、Gladia、Speechmatics 和 AssemblyAI,并可以根据配置的API密钥灵活选择和使用。(第一个MCP培训项目,主要熟悉MCP的开发和运行流程)
.
├── src/ # 源代码目录
│ ├── services/ # 服务实现目录
│ │ ├── download/ # 下载服务
│ │ └── transcription/ # 转录服务
│ ├── main.py # 主程序逻辑
│ └── __init__.py # 包初始化文件
├── config/ # 配置文件目录
├── test.py # 测试脚本
├── run.py # 服务启动脚本
├── pyproject.toml # 项目配置和依赖管理
├── uv.lock # UV 依赖锁定文件
└── .env # 环境变量配置


如果尚未安装UV,可以使用以下命令进行安装:
curl -LsSf https://astral.sh/uv/install.sh | sh
git clone https://github.com/R-lz/mcp-video-digest.git
cd mcp-video-digest
uv venv
source .venv/bin/activate # Linux/Mac
# 或
.venv\Scripts\activate # Windows
uv pip install -e .
在调试时,使用requests与Speechmatics遇到了各种问题(与Speechmatics无关,是我的错误),所以我使用了Speechmatics SDK
在项目的根目录下创建.env文件或重命名.env.example来配置所需的API密钥:
mv .env.example .env
# 修改
DEEPGRAM_API_KEY=your_deepgram_key
GLADIA_API_KEY=your_gladia_key
SPEECHMATICS_API_KEY=your_speechmatics_key
ASSEMBLYAI_API_KEY=your_assemblyai_key
注意:至少需要配置一个服务的API密钥
服务优先级顺序:
启动服务:
uv run src/main.py
或使用调试模式:
UV_DEBUG=1 uv run src/main.py
调用服务:
from mcp.client import MCPClient
async def process_video():
client = MCPClient()
result = await client.call(
"get_video_content",
url="https://www.youtube.com/watch?v=video_id"
)
print(result)
客户端SSE示例
{
"mcpServers": {
"video_digest": {
"url": "http://<ip>:8000/sse"
}
}
}
# 当然可以在客户端传递Key
"env": {
"DEEPGRAM_API_KEY":"your_deepgram_key"
}
STDIO方法可以修改启动命令:未验证和测试MCP文档
运行测试脚本:
uv run test.py
# 或
python test.py
测试脚本将:
添加新的转录服务:
src/services/transcription/目录下创建一个新的服务类BaseTranscriptionService类transcribe方法自定义下载服务:
src/services/download/目录下修改或添加新的下载器YouTubeDownloader类uv pip install package_name安装新依赖uv pip freeze > requirements.txt导出依赖列表pyproject.toml管理依赖,uv.lock锁定依赖版本服务将处理以下情况:
内容仅供参考
采用MIT许可证。