Skip to main content
Glama

video-mcp — 视频文案提取 + 总结 MCP 服务

多平台视频 MCP:贴链接 → 提取字幕/口播文案 → 服务端蒸馏 → 只回 Markdown 摘要(省 token)。

背景:上游 yzfly/douyin-mcp-server 已于 2026-07-02 归档,解析代码在 2026-09 抖音 SSR 改版后失效。此为 fork 修复自建版(vault 镜像,服务器部署在 /home/jerry/video-mcp)。

工具

工具

参数

返回

summarize_video

url, 可选 lang

Markdown 摘要(标题/要点/结论/时间戳),全文不进对话

get_transcript

url, 可选 out_dir

全文文本 + 落盘 .md 文件路径

平台自动识别:B站(bilibili.com/b23.tv)、YouTube(youtube.com/youtu.be)、抖音(douyin.com/v.douyin.com)。

Related MCP server: Open CLAW Knowledge Distiller

引擎与配置(环境变量)

变量

默认

说明

ASR_API_KEY

必填

硅基流动 key(SenseVoice 口播转写;复用 douyin-mcp 那把)

LLM_BASE_URL

https://api.deepseek.com/v1

OpenAI 兼容端点;服务器上指 http://127.0.0.1:8080/v1 用本地 Qwen3.8

LLM_API_KEY

必填

对应端点 key(本地 llama.cpp 可任意非空)

LLM_MODEL

deepseek-chat

模型名

LLM_CTX

200000

超过此 token 的字幕自动分段 map-reduce(默认单段直给,本地 Qwen3.8 200K 无需分段)

DOUYIN_ENGINE

browser

browser(本机 Kimi WebBridge 抓签名流)/ tiktokdownloader(规划中)

抖音引擎说明(browser 模式)

抖音无公开字幕。browser 引擎复用本机真实浏览器会话(需先启动 Kimi WebBridge 守护进程 ~/.kimi-webbridge/bin/kimi-webbridge start,浏览器需保持打开):

  1. 新标签打开 douyin.com/video/{id},等待视频元素就绪

  2. Performance API 提取签名音频流(media-audio-*)URL

  3. 下载 → ffmpeg(imageio-ffmpeg 自带静态二进制)转 wav

  4. SenseVoice(硅基流动)→ 文案 → LLM 蒸馏

已知局限:依赖本机浏览器进程;服务器端自动化引擎(TikTokDownloader)为 TODO。

本地跑(stdio)

uv sync   # 或 uv run video-mcp
ASR_API_KEY=sk-... LLM_API_KEY=sk-... uv run video-mcp

服务器部署(规划)

# HTTP 模式
uv run video-mcp --transport http --host 127.0.0.1 --port 8310
# systemd 或 docker + Tailscale Serve 转发 → claude mcp add-remote / astrbot MCP 添加

验证记录

  • 2026-09-05:手动链路全通(浏览器签名流 → ffmpeg → SenseVoice → 总结);B站/抖音在 Mac(webbridge)与 Linux 服务器(CDP headless Chromium)双端实测通过

  • 上游 yzfly/douyin-mcp-server 2026-07-02 归档,解析失效(KeyError 'videoInfoRes'),故自建本项目

Available Tools

2 tools
get_transcriptA

提取视频完整字幕/口播文案。全文会写入文件(不占对话),返回摘要性提示与路径。

Args: url: 视频链接(平台同上) out_dir: 落盘目录,默认 /tmp/video-mcp

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
out_dirNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden and does well by disclosing that the full text is written to a file (not occupying conversation) and that only a summary hint and path are returned. It stops short of mentioning file overwrite behavior, permissions, or failure modes, but the most important side effects are revealed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with no filler. Each sentence contributes either the core behavior or parameter semantics. It is an appropriate size for a two-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and has an output schema, so the description doesn't need to detail return values. However, the '平台同上' reference is not self-contained for an agent that lacks broader context, and the out_dir default mismatch is a real gap that could lead to incorrect invocation assumptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does add meaning to both parameters: url is a video link and out_dir is the destination directory. However, '平台同上' is not self-contained, and the stated default '/tmp/video-mcp' conflicts with the schema's default of '', creating ambiguity about actual behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('提取视频完整字幕/口播文案') on a clear resource (video transcript) and explains the key output behavior (write to file, return path). This naturally distinguishes it from the sibling summarize_video, which would produce a summary rather than the full transcript.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: use this tool when you need the full transcript saved to a file rather than a summary. However, it never names summarize_video or explicitly says when not to use this tool, so the routing decision is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

summarize_videoB

给一个视频链接(B站/YouTube/抖音),提取字幕/口播文案并生成 Markdown 总结。

Args: url: 视频分享链接(支持 bilibili.com / b23.tv / youtube.com / youtu.be / douyin.com / v.douyin.com) lang: 输出语言,默认 zh

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
langNozh

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It states that subtitles or spoken text are extracted and a Markdown summary is generated, but does not mention potential failure modes, dependence on subtitle availability, network access, rate limits, or processing behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core action and output, and uses a clear Args section for parameter details. Every sentence contributes useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two simple parameters and an output schema present, the description gives enough to invoke the tool correctly for typical cases. However, it lacks guidance on edge cases, such as videos without subtitles or unsupported URL variants, and does not clarify how it differs operationally from get_transcript.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by explaining that 'url' is a video share link and listing supported domains, and that 'lang' controls the output language with a default of 'zh'. This adds practical meaning beyond the bare schema fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('summarize'), a clear resource ('video link'), and the main output ('Markdown summary'). It also enumerates supported platforms (B站/YouTube/抖音), making the tool's scope explicit and distinguishing it from the sibling get_transcript, though not by direct comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool does and which URL patterns are accepted, but it gives no guidance on when to choose summarize_video vs get_transcript. It does not mention any exclusions, prerequisites, or scenarios where one tool should be preferred over the other.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.1.0
    • First observedget_transcript
    • First observedsummarize_video

TDQS

A3.6/5.0

Scored across 2 tools

Disambiguation4/5

The two tools are related but have clear output differences: get_transcript writes the full transcript to a file, while summarize_video generates a Markdown summary. An agent could confuse them in edge cases, but the descriptions clarify their distinct purposes.

Naming Consistency5/5

Both tool names follow the same verb_noun pattern in snake_case: get_transcript and summarize_video. This is fully consistent and predictable.

Tool Count3/5

Two tools is minimal for a video-focused MCP server, covering only transcription and summarization. It is not an extreme mismatch, but the surface feels thin for the broad 'video-mcp' name.

Completeness4/5

For the apparent purpose of extracting video transcripts and generating summaries, the two core workflows are covered. However, there is no direct way to retrieve the full transcript inline, which is a minor but workable gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers