Transcriptor MCP
OCI · DOCKER.IO/ARTSAMSONOV/TRANSCRIPTOR-MCP:1.5.8 · 2 COMPONENTS · SCANNED SEP 26
Fetch transcripts, subtitles, chapters, metadata and frames from YouTube and 10+ video platforms
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. How we score → Why this is hard to score →
Supply Chain Security0
- Malware scan not yet available for this package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read.Unverified
- Install-script risk not yet assessed.Unverified
- Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read.Unverified
Provenance & Transparency32
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability83
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 1522 tokens (~101/item across 15 items; 8 tools + 7 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Unverified: 2 categories
Categories scored 0 because we could not verify them: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
How do I install the Transcriptor MCP server?
Transcriptor MCP runs locally as a container image, launched with docker run --rm -i docker.io/artsamsonov/transcriptor-mcp:1.5.8. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.
oci · docker.io/artsamsonov/transcriptor-mcp:1.5.8
claude mcp add samson-art-transcriptor-mcp -- docker run --rm -i docker.io/artsamsonov/transcriptor-mcp:1.5.8
{
"mcpServers": {
"samson-art-transcriptor-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/artsamsonov/transcriptor-mcp:1.5.8"
]
}
}
} {
"servers": {
"samson-art-transcriptor-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/artsamsonov/transcriptor-mcp:1.5.8"
]
}
}
} codex mcp add samson-art-transcriptor-mcp -- docker run --rm -i docker.io/artsamsonov/transcriptor-mcp:1.5.8
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"samson-art-transcriptor-mcp": {
"type": "local",
"command": [
"docker",
"run",
"--rm",
"-i",
"docker.io/artsamsonov/transcriptor-mcp:1.5.8"
],
"enabled": true
}
}
} mcp_servers:
samson-art-transcriptor-mcp:
command: "docker"
args: ["run", "--rm", "-i", "docker.io/artsamsonov/transcriptor-mcp:1.5.8"] {
"McpServers": {
"samson-art-transcriptor-mcp": {
"Transport": "stdio",
"Command": "docker",
"Arguments": [
"run",
"--rm",
"-i",
"docker.io/artsamsonov/transcriptor-mcp:1.5.8"
]
}
}
} {
"mcpServers": {
"samson-art-transcriptor-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/artsamsonov/transcriptor-mcp:1.5.8"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 25 Sept 26 +33
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Schema quality: unverified → 100 ▲ functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: pass functional
- First check of Capabilities: pass functional
- First check of Schema quality: pass functional
- First check of Schema quality: good functional
- First check of Tool coverage: 100 functional
- First check of Tool coverage: 100 functional
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 6
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 25 Sept 2026 · Analysed oci/docker.io/artsamsonov/transcriptor-mcp:1.5.8
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | oci |
| Reason | No attestation published |
Background: How many MCP packages publish verified provenance →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
get_available_subtitles Get available subtitle languages ~86
List available official and auto-generated subtitle languages.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Subtitle format (default from YT_DLP_SUB_FORMAT or srt) |
| url | string | yes | Video URL (supported: YouTube, Twitter/X, Instagram, TikTok, Twitch, Vimeo, Facebook, Bilibili, VK, Dailymotion, Reddit) or YouTube video ID |
| Name | Type | Req | Description |
|---|---|---|---|
| auto | array | yes | – |
| official | array | yes | – |
| videoId | string | yes | – |
No examples provided.
get_playlist_transcripts Get playlist transcripts ~203
Fetch cleaned subtitles (plain text) for multiple videos from a playlist. Use playlistItems (e.g. "1:5") to select specific items, maxItems to limit count.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Subtitle format (default from YT_DLP_SUB_FORMAT or srt) |
| lang | string | – | Language code (e.g. en, ru). Default: en |
| maxItems | integer | – | Max number of videos to fetch (yt-dlp --max-downloads) |
| playlistItems | string | – | yt-dlp -I spec: "1:5", "1,3,7", "-1" for last, "1:10:2" for every 2nd |
| type | string | – | Subtitle track type: official or auto-generated (default: auto) |
| url | string | yes | Playlist URL (e.g. youtube.com/playlist?list=XXX) or watch URL with list= parameter |
| Name | Type | Req | Description |
|---|---|---|---|
| results | array | yes | – |
No examples provided.
get_raw_subtitles Get raw video subtitles ~197
Fetch raw SRT/VTT subtitles for a video (supported platforms). Optional: type, lang, response_limit (when omitted returns full content), next_cursor for pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Subtitle format (default from YT_DLP_SUB_FORMAT or srt) |
| lang | string | – | Language code (e.g. en, es). When omitted with Whisper fallback, language is auto-detected |
| next_cursor | string | – | Opaque cursor from previous response for pagination |
| response_limit | integer | – | Max characters per response. When omitted, returns full content. When set: min 1000 |
| type | string | – | Subtitle track type: official or auto-generated |
| url | string | yes | Video URL (supported: YouTube, Twitter/X, Instagram, TikTok, Twitch, Vimeo, Facebook, Bilibili, VK, Dailymotion, Reddit) or YouTube video ID |
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | – |
| end_offset | number | yes | – |
| format | string | yes | – |
| is_truncated | boolean | yes | – |
| lang | string | yes | – |
| next_cursor | string | – | – |
| source | string | – | – |
| start_offset | number | yes | – |
| total_length | number | yes | – |
| type | string | yes | – |
| videoId | string | yes | – |
No examples provided.
get_transcript Get video transcript ~232
Fetch cleaned subtitles as plain text for a video (YouTube, Twitter/X, Instagram, TikTok, Twitch, Vimeo, Facebook, Bilibili, VK, Dailymotion, Reddit). Uses auto-discovery for type/language when omitted. Optional: type, lang, response_limit (when omitted returns full transcript), next_cursor for pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Subtitle format (default from YT_DLP_SUB_FORMAT or srt) |
| lang | string | – | Language code (e.g. en, es). When omitted with Whisper fallback, language is auto-detected |
| next_cursor | string | – | Opaque cursor from previous response for pagination |
| response_limit | integer | – | Max characters per response. When omitted, returns full content. When set: min 1000 |
| type | string | – | Subtitle track type: official or auto-generated |
| url | string | yes | Video URL (supported: YouTube, Twitter/X, Instagram, TikTok, Twitch, Vimeo, Facebook, Bilibili, VK, Dailymotion, Reddit) or YouTube video ID |
| Name | Type | Req | Description |
|---|---|---|---|
| end_offset | number | yes | – |
| is_truncated | boolean | yes | – |
| lang | string | yes | – |
| next_cursor | string | – | – |
| source | string | – | – |
| start_offset | number | yes | – |
| text | string | yes | – |
| total_length | number | yes | – |
| type | string | yes | – |
| url | string | – | – |
| videoId | string | yes | – |
No examples provided.
get_video_chapters Get video chapters ~91
Fetch chapter markers (start/end time, title) for a video.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Subtitle format (default from YT_DLP_SUB_FORMAT or srt) |
| url | string | yes | Video URL (supported: YouTube, Twitter/X, Instagram, TikTok, Twitch, Vimeo, Facebook, Bilibili, VK, Dailymotion, Reddit) or YouTube video ID |
| Name | Type | Req | Description |
|---|---|---|---|
| chapters | array | yes | – |
| videoId | string | yes | – |
No examples provided.
get_video_frame Get video frame ~267
Capture a single frame from a video at the given timestamp. Provide timecode ("01:23", "00:01:23.500") or seconds; defaults to the first frame. Optional: format (png|jpeg), width (max 1920), quality (jpeg, 2-31). Returns the image plus metadata.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Image format (default: jpeg) |
| quality | integer | – | JPEG quality (ffmpeg -q:v): 2 (best) to 31 (worst). Default: 4. Ignored for png. |
| seconds | number | – | Timestamp in seconds (alternative to timecode). Default: 0 (first frame) |
| timecode | string | – | Timestamp as "MM:SS" or "HH:MM:SS(.mmm)", e.g. "01:23" or "00:01:23.500" |
| url | string | yes | Video URL (supported: YouTube, Twitter/X, Instagram, TikTok, Twitch, Vimeo, Facebook, Bilibili, VK, Dailymotion, Reddit) or YouTube video ID |
| width | integer | – | Output image width in pixels (default: 1280, max: 1920). Never upscales. |
| Name | Type | Req | Description |
|---|---|---|---|
| mimeType | string | yes | – |
| sizeBytes | number | yes | – |
| timestamp | string | yes | – |
| timestampSeconds | number | yes | – |
| url | string | – | – |
| videoId | string | yes | – |
| width | number|null | yes | – |
No examples provided.
get_video_info Get video info ~95
Fetch extended metadata for a video (title, channel, duration, tags, thumbnails, etc.).
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Subtitle format (default from YT_DLP_SUB_FORMAT or srt) |
| url | string | yes | Video URL (supported: YouTube, Twitter/X, Instagram, TikTok, Twitch, Vimeo, Facebook, Bilibili, VK, Dailymotion, Reddit) or YouTube video ID |
| Name | Type | Req | Description |
|---|---|---|---|
| availability | string|null | yes | – |
| categories | – | yes | – |
| channel | string|null | yes | – |
| channelId | string|null | yes | – |
| channelUrl | string|null | yes | – |
| commentCount | number|null | yes | – |
| description | string|null | yes | – |
| duration | number|null | yes | – |
| isLive | boolean|null | yes | – |
| likeCount | number|null | yes | – |
| liveStatus | string|null | yes | – |
| tags | – | yes | – |
| thumbnail | string|null | yes | – |
| thumbnails | – | yes | – |
| title | string|null | yes | – |
| uploadDate | string|null | yes | – |
| uploader | string|null | yes | – |
| uploaderId | string|null | yes | – |
| videoId | string | yes | – |
| viewCount | number|null | yes | – |
| wasLive | boolean|null | yes | – |
| webpageUrl | string|null | yes | – |
No examples provided.
search_videos Search videos ~240
Search videos on YouTube via yt-dlp (ytsearch). Returns list of matching videos with metadata. Optional: limit, offset (pagination), uploadDateFilter (hour|today|week|month|year), dateBefore, date, matchFilter (e.g. "!is_live"), response_format (json|markdown).
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | yt-dlp --date, exact date e.g. "20231215" or "today-2weeks" |
| dateBefore | string | – | yt-dlp --datebefore, e.g. "now-1year" or "20241201" |
| limit | integer | – | Max results (default 10) |
| matchFilter | string | – | yt-dlp --match-filter, e.g. "!is_live" or "duration < 3600 & like_count > 100" |
| offset | integer | – | Skip first N results (pagination) |
| query | string | – | Search query |
| response_format | string | – | Format of the human-readable content: json (default) or markdown |
| uploadDateFilter | string | – | Filter by upload date (relative to now) |
| Name | Type | Req | Description |
|---|---|---|---|
| results | array | yes | – |
No examples provided.
What is the Transcriptor MCP server?
Transcriptor MCP is listed in the public MCP registry as io.github.samson-art/transcriptor-mcp. Fetch transcripts, subtitles, chapters, metadata and frames from YouTube and 10+ video platforms. This page covers its container image (docker.io/artsamsonov/transcriptor-mcp:1.5.8).
Is the Transcriptor MCP server safe to use?
Transcriptor MCP scores 39 out of 100 on VerifyMCP. 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 Transcriptor MCP server expose?
Transcriptor MCP exposes 8 tools: get_transcript, get_raw_subtitles, get_available_subtitles, get_video_info, get_video_chapters, and 3 more. Their descriptions and schemas cost roughly 1,411 tokens of context every time the server is loaded.
Is the Transcriptor MCP server still maintained?
Transcriptor MCP is still listed as active in the MCP registry. We last reached this channel on 25 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.