vdl-mcp
vdl-mcp verbindet einen KI-Assistenten mit Ihrem eigenen vdl-Server über das Model Context Protocol. Die wahre Stärke liegt in der Whisper-Synergie:
Download → Transkript → der Assistent versteht den Inhalt.
So können Sie Dinge sagen wie:
"Laden Sie dieses YouTube-Video herunter und fassen Sie es zusammen."
"Nehmen Sie diesen Kochclip und schreiben Sie das Rezept als Liste auf."
"Was wurde in diesem Interview über X gesagt?"
"Laden Sie das Audio dieses Vortrags herunter und geben Sie mir die wichtigsten Punkte."
So funktioniert es
Es ist ein kleiner stdio MCP-Server, der mit der REST-API von vdl kommuniziert und sich mit Ihrem vorhandenen API-Token authentifiziert. Nichts läuft innerhalb von vdl selbst.
Tool-Gruppen sind umschaltbar mit sicheren Standardeinstellungen:
Gruppe | Werkzeuge | Standard |
Lesen |
| ✅ an |
Herunterladen |
| ✅ an |
Transkribieren |
| ✅ an |
Löschen |
| ❌ aus |
Massenaktionen |
| ❌ aus |
Einstellungen |
| ❌ aus |
Eine deaktivierte Gruppe ist für den Assistenten unsichtbar.
Related MCP server: popcorn
Voraussetzungen
Eine laufende vdl-Instanz.
Ein MCP-Token: Öffnen Sie in vdl den MCP-Tab → Token erstellen und kopieren Sie ihn. Dieser Token ist eingeschränkt — er kann nur die MCP-Aktionen ausführen, die Sie dort aktivieren (Schreib-/Löschwerkzeuge respektieren die Umschalter und den Nur-Lesen-Modus, alles andere wird serverseitig abgelehnt), daher ist er sicherer als der allgemeine API-Token.
Installation
Mit pipx (setzt vdl-mcp in Ihren PATH):
pipx install git+https://github.com/sphings79/vdl-mcpoder mit uv:
uv tool install git+https://github.com/sphings79/vdl-mcpMit Claude Desktop verbinden
Fügen Sie dies zu Ihrer Claude Desktop-Konfiguration hinzu (claude_desktop_config.json):
{
"mcpServers": {
"vdl": {
"command": "vdl-mcp",
"env": {
"VDL_URL": "http://localhost:8000",
"VDL_TOKEN": "your-api-token"
}
}
}
}Starten Sie Claude Desktop neu — die vdl-Werkzeuge erscheinen. (Jeder MCP-fähige Client funktioniert auf die gleiche Weise; führen Sie einfach den Befehl vdl-mcp über stdio aus.)
Mit Docker ausführen
Bevorzugen Sie einen Container? Ein vorgefertigtes Image wird auf GHCR veröffentlicht — verwenden Sie es als Befehl:
{
"mcpServers": {
"vdl": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-e", "VDL_URL", "-e", "VDL_TOKEN",
"ghcr.io/sphings79/vdl-mcp:latest"],
"env": {
"VDL_URL": "http://host.docker.internal:8000",
"VDL_TOKEN": "your-api-token"
}
}
}
}Beachten Sie das -i (hält stdin für stdio offen) und, wenn vdl auf demselben Host läuft, host.docker.internal, damit der Container es erreichen kann.
Keine Weboberfläche — bewusst so
vdl-mcp ist ein stdio-Prozess, der lokal von Ihrem MCP-Client gestartet wird. Es öffnet keinen Netzwerkport, hat daher keine Anmeldeseite und kein fail2ban — es gibt nichts eingehendes zu schützen. Sein Sicherheitsmodell ist: Halten Sie Ihren API-Token privat, lassen Sie destruktive Werkzeuge deaktiviert (die Standardeinstellungen) und legen Sie optional eine Domain-Whitelist fest. Authentifizierung und Brute-Force-Schutz liegen in vdl selbst. (Falls Sie stattdessen einen entfernten, Multi-Client-HTTP-Server wünschen, ist das ein anderer Transport — eröffnen Sie ein Issue.)
Werkzeuge
resolve(url)— analysiert einen Link, listet Elemente und verfügbare Qualitäten auf (kein Download).download(url, audio=False, section="", wait=True)— lädt die beste Qualität (oder MP3) herunter;sectionwie0:30-1:00Ausschnitte;waitgibt den fertigen Dateinamennamezurück.transcribe(name, language="")— Whisper-Transkription → gibt den Text zurück (erfordert ein in vdl eingestelltes Whisper-Modell).get_transcript(name)— gibt den Text eines vorhandenen Transkripts zurück.list_files(query, service, label, limit)— durchsucht Ihre Downloads.job_status(job_id)— überprüft einen Download-Job.(standardmäßig deaktiviert)
delete_file,bulk,get_settings.
Konfiguration (Umgebungsvariablen)
Variable | Standard | Bedeutung |
|
| Basis-URL Ihrer vdl-Instanz |
| (leer) | vdl MCP-Token (aus dem MCP-Tab) |
|
| Kill-Schalter: nur Lesewerkzeuge bereitstellen (kein Download/Transkribieren/Löschen/Massenaktionen) |
|
| resolve/list/status/get_transcript |
|
| download |
|
| transcribe |
|
| Dateien löschen |
|
| Massenaktionen |
|
| Einstellungen lesen |
| (nicht gesetzt) | Pro-Werkzeug-Überschreibung, z.B. |
| (leer = beliebig) | Komma-getrennte Host-Suffixe, von denen der Assistent herunterladen darf |
|
| Standard-Anfrage-Timeout (Sekunden) |
Jedes Werkzeug ist in seiner Beschreibung gekennzeichnet — [read], [writes] oder [deletes] — damit sowohl Sie als auch der Assistent das Risiko auf einen Blick erkennen können.
Verwalten Sie es auch über die Weboberfläche von vdl: Gehen Sie in vdl zu Einstellungen → MCP-Tab, um jedes Werkzeug umzuschalten (mit einem Nur-Lesen-Master-Schalter und Risiko-Chips). vdl-mcp ruft diese Konfiguration beim Start ab, daher sind keine Umgebungsvariablen erforderlich — starten Sie vdl-mcp nach Änderungen neu. Priorität dafür, ob ein Werkzeug bereitgestellt wird: Nur-Lesen (env oder UI) → Pro-Werkzeug-env-Überschreibung → Web-UI → Gruppen-Flag.
Sicherheitshinweise
Der Assistent handelt als Sie über Ihren Token — halten Sie ihn privat.
Destruktive Werkzeuge sind standardmäßig deaktiviert. Aktivieren Sie sie bewusst.
Das Herunterladen einer beliebigen URL auf Anfrage eines Assistenten hat eine Prompt-Injection-Oberfläche. Setzen Sie
VDL_MCP_DOMAIN_ALLOWLIST(z.B.youtube.com,instagram.com), um dies einzuschränken.Nur für Inhalte, die Sie besitzen oder für die Sie die Rechte/Erlaubnis zum Herunterladen haben — es gilt der gleiche Haftungsausschluss wie für vdl.
Lizenz
GNU Affero General Public License v3.0 (AGPL-3.0) — siehe LICENSE. © 2026 sphings79
Available Tools
6 toolsdownloadA
[writes] Download a video or audio from a URL into vdl (best quality).
audio=True downloads MP3 (audio only).
section like '0:30-1:00' clips a part.
wait=True (default) waits for completion and returns the resulting file 'name' (use it with transcribe/get_transcript). wait=False returns immediately with a job_id.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| wait | No | ||
| audio | No | ||
| section | No | ||
| timeout_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool writes to 'vdl' (a local directory), that wait=True blocks and returns a file name, and wait=False returns a job_id. It does not mention potential overwrites, rate limits, or auth requirements, but the core behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: a single sentence defining purpose, followed by bullet points for details. Every sentence adds value, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters and an output schema, the description covers purpose, usage, and most parameters. It interacts well with sibling tools. The only oversight is the timeout_seconds parameter, but overall it is sufficiently complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It explains url (implicit), wait, audio, and section with examples. The only missing parameter is timeout_seconds, which is not addressed. This is a minor gap given the overall clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Download a video or audio from a URL into vdl (best quality).' It uses a specific verb and resource, and distinguishes itself from sibling tools like transcribe and get_transcript by mentioning their interaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use wait=True vs wait=False, and how to combine with transcribe/get_transcript. It also explains audio and section options. However, it does not explicitly state when not to use this tool or mention alternatives like job_status for tracking wait=False jobs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcriptA
[read] Return the transcript text (.txt) of a downloaded file, if it has been transcribed. If none exists yet, tells you to run transcribe(name) first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly states the tool is a read operation ('[read]') and describes the conditional behavior (returns text or instructs to transcribe). However, it does not detail the return format or what happens if the file hasn't been downloaded, missing some transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using two short sentences to convey the purpose, condition, and fallback instruction. No words are wasted, and the structure front-loads the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter, no annotations, but does have an output schema, the description is nearly complete. It covers the core behavior and prerequisite. It lacks some context about error states or file existence requirements, but for a simple tool, this is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the single required parameter 'name' by implying it must refer to a downloaded file that has been transcribed. Although schema coverage is 0%, the description compensates by providing context for the parameter's expected value. Without additional detail like format or examples, it cannot score a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns transcript text from a downloaded file, using a specific verb ('Return') and resource ('transcript text (.txt)'). It also distinguishes itself by mentioning the prerequisite condition, which differentiates it from sibling tools like 'download' and 'transcribe'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the user when to use the tool ('if it has been transcribed') and when not to use it ('If none exists yet, tells you to run transcribe(name) first'). This provides clear context and an alternative action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_statusA
[read] Status of a download job by id, or the list of all current jobs if no id is given.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the dual behavior (by id or all) and that it is read-only (via '[read]'). However, it does not explain what happens when job_id is invalid, whether results are paginated, or what state jobs can be in. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, with no wasted words: it states the operation type, resource, and conditional behavior concisely. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter, no output schema, no annotations, and low sibling relatedness, the description covers the core mechanism. But for a listing tool, it could mention what fields each job status entry contains, whether results are sorted, or any rate limits. It is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. The description explains the 'job_id' parameter's role: if provided, returns status for that job; if empty/omitted, returns all jobs. This adds significant meaning beyond the bare schema—specifically the default behavior. However, it doesn't specify format constraints or validation rules for the id string.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with '[read]' which clearly signals a read operation, and then states the tool checks status by id or lists all jobs. This distinguishes it from siblings like 'download' or 'transcribe' which are clearly different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing job status or listing current jobs, but does not explicitly say when to use alternatives or when not to use it. No exclusions or sibling comparisons are provided, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesA
[read] List downloaded files in vdl. Optional filters: query (name/label substring), service (e.g. youtube), label. Returns name, size, duration, labels, in_feed.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | ||
| limit | No | ||
| query | No | ||
| service | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well. It explicitly marks the tool as a read operation with '[read]', lists return fields (name, size, duration, labels, in_feed), and mentions all filters. This fully informs the agent of the tool's behavior and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the read indicator and core action. Every piece of information earns its place: operation type, resource, filters with examples, and return fields. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to detail return values further. It covers filters, operation type, and a general resource overview. I deduct 1 point because the 'limit' parameter is not explained, though its default is visible in the schema; with 0% schema coverage, a brief mention would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 so by explaining that 'query' is a substring for name/label, 'service' is exemplified with 'youtube', and 'label' is a filter. 'limit' is not mentioned explicitly but has a default visible in schema, and its purpose is inferable. The description adds substantial meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List downloaded files in vdl' with a specific verb and resource. It also lists optional filters (query, service, label) and return fields, distinguishing it from sibling tools like get_transcript or download.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Optional filters' and lists them, giving clear context for when to use each filter. However, it does not explicitly mention when not to use this tool versus alternatives, though the read nature and filters are clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolveA
[read] Analyze a link and list the available media items and qualities — WITHOUT downloading.
Use this to preview what a URL contains before calling download.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description uses '[read]' to indicate a read-only operation, and explicitly states 'NOT downloading' and 'analyze a link... WITHOUT downloading.' This provides behavioral clarity about the tool being non-destructive. Since no annotations are provided, the description carries the full burden; it does so well but could add details like whether it requires authentication or has rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The first sentence defines purpose and behavior; the second provides usage guidance. Every word earns its place. No redundancy or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 required param, no enums, output schema present), the description covers the core purpose, read-only behavior, and relationship to siblings. It lacks mention of what the output schema contains, but since an output schema exists, the agent can infer return structure. Could justify a 5 as complete for a simple tool, but 4 acknowledges minor gaps like authentication preconditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description says 'analyze a link' which implicitly tells the agent that the single parameter 'url' is a link to analyze. This adds semantic meaning beyond the bare schema, which only defines 'url' as a string. With schema description coverage at 0%, the description compensates well, though it could be more explicit about the expected URL format (e.g., HTTP/HTTPS, supported domains).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool analyzes a link and lists available media items and qualities without downloading. The verb 'analyze' and noun 'link' are specific, and the description differentiates it from 'download' by explicitly noting it does NOT download. However, it could be more precise about what 'media items' means (e.g., video/audio tracks, formats).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'preview what a URL contains before calling download.' It provides a clear exclusion: 'WITHOUT downloading.' The last sentence directly advises the agent to use this tool before the 'download' sibling, giving strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribeA
[writes] Transcribe a downloaded file locally with Whisper and return the text.
'name' is the downloads-relative path from list_files/download (e.g. 'youtube/clip.mp4'). Requires a Whisper model set in vdl (Settings → Transcription). Can take a while.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| language | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears full responsibility for disclosing behavior. It notes '[writes]' (suggesting mutation), requires a Whisper model, and mentions variable runtime. However, it fails to clarify side effects (e.g., file creation?), error handling, idempotency, or safety aspects. This leaves significant gaps in behavioral understanding for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loading the purpose first, then parameter clarification, then prerequisite and performance note. Every sentence contributes distinct value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the sibling tools (list_files, download, get_transcript), the description fits well into a transcription workflow. It explains the prerequisite (Whisper model), the path convention, and the time cost. Minor omission: it could explicitly state that the file must already be downloaded via the download tool, but the phrase 'downloaded file' and the path example imply this. The output schema exists, so return value documentation is not needed. Overall very helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, requiring the description to explain all parameters. It adequately explains the 'name' parameter (downloads-relative path with example), but entirely omits the 'language' parameter (schematype: string, default: ''). With only one of two parameters described, the description adds only partial value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Transcribe a downloaded file locally with Whisper and return the text.' It specifies the verb (transcribe), resource (downloaded file), method (Whisper locally), and output (text). This distinguishes it from sibling tools like get_transcript (which likely retrieves existing transcripts) or list_files/download.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context: it requires a Whisper model set in settings and warns that it can take a while. This gives implicit usage guidance, but it does not explicitly state when to use this tool over alternatives (e.g., get_transcript) or list conditions where it should not be used. The guidance is adequate but not comprehensive.
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.
6 tool updates
v0.1.0- First observed
download - First observed
get_transcript - First observed
job_status - First observed
list_files - First observed
resolve - First observed
transcribe
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: preview (resolve), download (download), monitor jobs (job_status), list files (list_files), transcribe (transcribe), and fetch transcript (get_transcript). No functional overlap.
All names use snake_case and are readable, but the pattern varies: verb_noun (list_files, get_transcript), verb (resolve, download, transcribe), and noun_noun (job_status). Mostly consistent but not a single pattern.
Six tools cover the full preview-download-monitor-list-transcribe workflow without being excessive. Each tool serves a necessary function in the pipeline.
Core lifecycle is fully covered: preview, download, job monitoring, file listing, transcription, and transcript retrieval. Minor gaps like deleting files or canceling jobs are missing, but the essential workflow is complete.
Maintenance
Related MCP Connectors
MCP server for Google Veo AI video generation
MCP server for Wan AI video generation
MCP server for Hailuo (MiniMax) AI video generation
MCP server for RiverScript, an AI transcription platform - fetches transcripts shared via a link.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceMCP server enabling AI agents to generate AI videos and images, analyze video content, and download videos from Douyin and Xiaohongshu.-
- AlicenseAqualityDmaintenanceAn MCP server that enables AI agents to analyze videos locally by extracting transcripts, detecting scene changes, and returning key frames.57MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to watch and analyze videos from 1800+ sources, with persistent indexing, OCR, transcription, and a self-verification loop for debugging.MIT
- AlicenseNot gradedqualityCmaintenanceA self-hosted media downloader and converter MCP server that wraps yt-dlp and HandBrake, allowing AI assistants to download, convert, manage queues, and handle subscriptions.MIT