# Video Extract (npm · @yanlinglabs/video-extract-mcp)

Download any video from a URL, or get its transcript and key frames. All local, no API keys.

- Trust score: 80/100 (high trust)
- Change this week: −2
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-24

## Components

- npm · `@yanlinglabs/video-extract-mcp`: 80/100 (this document), [markdown](https://verifymcp.io/servers/com-yanlinglabs-video-extract-mcp/yanlinglabs-video-extract-mcp.md), [page](https://verifymcp.io/servers/com-yanlinglabs-video-extract-mcp/yanlinglabs-video-extract-mcp)

## Channel facts

- Registry: `npm`
- Package: `@yanlinglabs/video-extract-mcp`
- Version: `0.16.2`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-24.

- **Supply Chain Security**: 99/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 44 of 170 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 60/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1542 tokens (~514/item across 3 items; 3 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 87/100
  - Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 3 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 4 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Video Extract MCP server?

Video Extract runs locally as an npm package, launched with npx -y @yanlinglabs/video-extract-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add com-yanlinglabs-video-extract-mcp -- npx -y @yanlinglabs/video-extract-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "com-yanlinglabs-video-extract-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@yanlinglabs/video-extract-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-yanlinglabs-video-extract-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@yanlinglabs/video-extract-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add com-yanlinglabs-video-extract-mcp -- npx -y @yanlinglabs/video-extract-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-yanlinglabs-video-extract-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@yanlinglabs/video-extract-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-yanlinglabs-video-extract-mcp --command npx --arg -y --arg @yanlinglabs/video-extract-mcp
```

### Hermes

```yaml
mcp_servers:
  com-yanlinglabs-video-extract-mcp:
    command: "npx"
    args: ["-y", "@yanlinglabs/video-extract-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "com-yanlinglabs-video-extract-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@yanlinglabs/video-extract-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-yanlinglabs-video-extract-mcp -t stdio -c npx -a -y @yanlinglabs/video-extract-mcp
```

### Other

```json
{
  "mcpServers": {
    "com-yanlinglabs-video-extract-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@yanlinglabs/video-extract-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-24 (score 80, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-09-23 (score 65, −15)

- [security regression] Malware scan: pass → unverified
- [security regression] Known CVEs: pass → unverified
- [security regression] Stability: 0.80 → unverified
- [security regression] Tool safety: pass → unverified
- [functional regression] Schema quality: 353 → 514
- [functional regression] Schema quality: 353 → 500
- [functional regression] Dependency health: 0.90 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified
- [functional] Package version: 0.13.0 → 0.16.2
- [functional] Package version: 0.13.0 → 0.16.1
- [functional] Package version: 0.13.0 → 0.16.0
- [functional] Package version: 0.13.0 → 0.15.0
- [functional] Package version: 0.13.0 → 0.14.0

### 2026-09-21 (score 80, −3)

- [functional] Stability: pass → 0.77

### 2026-09-19 (score 83, +1)

- [security] Stability: 0.97 → pass

### 2026-09-17 (score 82, +26)

- [security improvement] GHSA-rgj7-g3m4-5g8c no longer affects this package
- [security improvement] CVE-2026-39244 no longer affects this package
- [security improvement] GHSA-f88m-g3jw-g9cj no longer affects this package
- [security improvement] Malware scan: unverified → pass
- [security improvement] Known CVEs: unverified → pass
- [functional improvement] Dependency health: unverified → 0.90

### 2026-09-16 (score 56, −22)

- [security regression] Stability: 0.87 → unverified
- [security regression] Malware scan: pass → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Known CVEs: fail → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Dependency health: 0.90 → unverified
- [functional] First check of Schema quality: unverified
- [functional] Package version: 0.12.7 → 0.13.0

### 2026-09-14 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-12 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (3)

### `get_status` (~159 tokens)

Get status

Use this ONLY if your environment TIMED OUT an earlier analyze_video or resolve_video call -- the work carries on regardless and the result is still here. As a background task your environment notifies you with the result on its own, and to watch a call in flight you poll its statusUrl, so neither of those needs this tool. Pass the same video URLs or file paths you passed then, several at once if you like; a finished one returns exactly the result you would have received, one still running returns the stages it has reached. Treat "unknown" as no answer, not a failure, and read the files at your destinationPath.

Input parameters:

- `videos` (array, required): The same video URLs or file paths you passed to analyze_video or resolve_video.

### `analyze_video` (~684 tokens)

Analyze video

Read a video: returns its transcript and a small set of important, deduplicated keyframes rather than every frame. Output is written to destinationPath -- read the returned paths; only a short transcript comes back inline. Each item returns { status, title, duration, frameCount, framePaths, manifestPath, transcriptPath?, transcript?, videoPath?, warnings, cookies }. Pass several items in videos to batch them; results come back one per item in order, and one failing does not fail the others. A single item writes into destinationPath, several into video-1/, video-2/. Pass start and end for part of a video. For one exact frame use the same second for both with frames: "even", maxFrames: 1, transcript: false. For a transcript alone use frames: "none" -- on a captioned video that skips the download entirely and takes seconds. Check every item's status. "rate_limited" is temporary: wait, retry, and space out repeats for the same video. Every item reports cookies: "none", "browser:<name>", "cookies_file" or "wechat_cookie" -- what was sent, never a value. When an item fails as auth_required, auth_expired or rate_limited and its reason suggests userCookies, ASK THE USER before retrying with userCookies: true. Read warnings, and transcript.source, to tell a failed stage from a video that simply has no speech; when source is "asr", transcript.asrReason says whether the video had no captions ("no_captions") or had captions that could not be retrieved ("captions_failed"). Pass videoPath back in to inspect another moment without downloading again. For anything long, call this as a background task: your environment notifies you with the result when it finishes, so there is no need to poll for it. To watch progress or check it is still alive meanwhile, GET the returned statusUrl. Reach for get_status ONLY if your environment TIMED OUT the call -- the work finishes either way. Handles YouTube, TikTok, Instagram, X, Facebook, Twitch, Vimeo, Reddit, WeChat Channels, direct .mp4/.m3u…

Input parameters:

- `destinationPath` (string, required): Directory to write manifests, transcripts and frames into. Created if missing.
- `userCookies` (boolean): Use the user's own browser session for this call only. NEVER set it on your own: ask the user first, every time -- it reads their browser's cookies, and nothing carries over to later calls. Cookies c…
- `videos` (array, required): One entry per video to analyze. One item = single video, flat layout; several = video-N subdirectories.

### `resolve_video` (~627 tokens)

Resolve video (metadata, optionally the file)

Find out what a video IS before spending time on it: downloads nothing by default and returns title, creator, duration, chapters, a description preview and the path to full metadata. On a long video call this first, read the chapters, then analyze only the section that matters. Each item returns { status, platform, title, creator, duration, chapters, descriptionPreview, commentCount, metadataPath, cookies, videoPath?, clipStart?, clipEnd?, nextSteps }. Pass several items in videos to batch them; results come back one per item in order, and one failing does not fail the others. A single item writes into destinationPath, several into video-1/, video-2/. Set returnVideo: true to download the file too -- that takes real time. With it, pass start and end together for one section; the clip STARTS AT 0, so use the returned offset when mapping times back. Leave comments off unless needed: slow on popular videos, and written to the metadata file rather than inline. Every item reports cookies: "none", "browser:<name>", "cookies_file" or "wechat_cookie" -- what was sent, never a value. When an item fails as auth_required, auth_expired or rate_limited and its reason suggests userCookies, ASK THE USER before retrying with userCookies: true. For anything long, call this as a background task: your environment notifies you with the result when it finishes, so there is no need to poll for it. To watch progress or check it is still alive meanwhile, GET the returned statusUrl. Reach for get_status ONLY if your environment TIMED OUT the call -- the work finishes either way. Handles YouTube, TikTok, Instagram, X, Facebook, Twitch, Vimeo, Reddit, WeChat Channels, direct .mp4/.m3u8 URLs and many other sites; unsupported ones return a failure status.

Input parameters:

- `destinationPath` (string, required): Directory to write metadata (and the video, if requested) into. Created if missing. Re-running the same call overwrites in place.
- `userCookies` (boolean): Use the user's own browser session for this call only. NEVER set it on your own: ask the user first, every time -- it reads their browser's cookies, and nothing carries over to later calls. Cookies c…
- `videos` (array, required): One entry per video to resolve. One item = single video, flat layout; several = video-N subdirectories.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/com-yanlinglabs-video-extract-mcp/yanlinglabs-video-extract-mcp#diagnostics

## Score history

- 2026-09-24: 80
- 2026-09-23: 65
- 2026-09-22: 80
- 2026-09-21: 80
- 2026-09-20: 83
- 2026-09-19: 83
- 2026-09-18: 82
- 2026-09-17: 82
- 2026-09-16: 56
- 2026-09-15: 78
- 2026-09-14: 78
- 2026-09-13: 77
- 2026-09-12: 77
- 2026-09-11: 76
- 2026-09-10: 76
- 2026-09-09: 76
- 2026-09-08: 75
- 2026-09-07: 75
- 2026-09-06: 74
- 2026-09-05: 74
- 2026-09-04: 73
- 2026-09-03: 73
- 2026-09-02: 72
- 2026-09-01: 72
- 2026-08-31: 71
- 2026-08-30: 71
- 2026-08-29: 70
- 2026-08-28: 70
- 2026-08-27: 69
- 2026-08-26: 69

## Common questions

### What is the Video Extract MCP server?

Video Extract is an MCP server listed in the public MCP registry as com.yanlinglabs/video-extract-mcp. Download any video from a URL, or get its transcript and key frames. All local, no API keys. This page covers its npm package (@yanlinglabs/video-extract-mcp).

### Is the Video Extract MCP server safe to use?

Video Extract scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Video Extract MCP server expose?

Video Extract exposes 3 tools: get_status, analyze_video, resolve_video. Their descriptions and schemas cost roughly 1,470 tokens of context every time the server is loaded.

### Is the Video Extract MCP server still maintained?

Video Extract is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Video Extract MCP server under?

Video Extract declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@yanlinglabs/video-extract-mcp
- Socket report: https://socket.dev/npm/package/@yanlinglabs/video-extract-mcp
- Repository: https://github.com/yanlingLabs/video-extract-mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-yanlinglabs-video-extract-mcp/yanlinglabs-video-extract-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-yanlinglabs-video-extract-mcp/yanlinglabs-video-extract-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-yanlinglabs-video-extract-mcp/yanlinglabs-video-extract-mcp
