Transcriptor MCP
OCI · DOCKER.IO/ARTSAMSONOV/TRANSCRIPTOR-MCP · 2 COMPONENTS · SCANNED OCT 3
Fetch transcripts, subtitles, chapters, metadata and frames from YouTube and 10+ video platforms
Available components
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
- No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
- Known CVEs could not be checked: this artifact ships no SBOM or dependency manifest, 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 or dependency manifest, 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 1 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
- Context-footprint check failed: tool/resource definitions use about 1644 tokens (~109/item across 15 items; 8 tools + 7 resources), over budget; trim descriptions and params. See how to fix → Fail
- 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.19. 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
claude mcp add samson-art-transcriptor-mcp -- docker run --rm -i docker.io/artsamsonov/transcriptor-mcp:1.5.19
{
"mcpServers": {
"samson-art-transcriptor-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/artsamsonov/transcriptor-mcp:1.5.19"
]
}
}
} {
"servers": {
"samson-art-transcriptor-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/artsamsonov/transcriptor-mcp:1.5.19"
]
}
}
} codex mcp add samson-art-transcriptor-mcp -- docker run --rm -i docker.io/artsamsonov/transcriptor-mcp:1.5.19
{
"$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.19"
],
"enabled": true
}
}
} mcp_servers:
samson-art-transcriptor-mcp:
command: "docker"
args: ["run", "--rm", "-i", "docker.io/artsamsonov/transcriptor-mcp:1.5.19"] {
"McpServers": {
"samson-art-transcriptor-mcp": {
"Transport": "stdio",
"Command": "docker",
"Arguments": [
"run",
"--rm",
"-i",
"docker.io/artsamsonov/transcriptor-mcp:1.5.19"
]
}
}
} {
"mcpServers": {
"samson-art-transcriptor-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"docker.io/artsamsonov/transcriptor-mcp:1.5.19"
]
}
}
} 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.
- 30 Sept 26 39
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 2 Oct 2026 · Analysed oci/docker.io/artsamsonov/transcriptor-mcp@1.5.19
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 ~218
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). Required: the original language is picked only for one video at a time (get_transcript) |
| 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 ~251
Fetch raw SRT/VTT subtitles for a video (supported platforms). Without lang, the video's original language, as in get_transcript. 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 or track name as get_available_subtitles lists it (e.g. en, es, en_US). Omit to get the video's original language; when the server cannot tell which track that is, it answers with the l… |
| 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. Without lang, the server picks a track of this type |
| 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 ~285
Fetch cleaned subtitles as plain text for a video (YouTube, Twitter/X, Instagram, TikTok, Twitch, Vimeo, Facebook, Bilibili, VK, Dailymotion, Reddit). Without lang, returns the video's original language, or the list of tracks when the server cannot tell which one that is. 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 or track name as get_available_subtitles lists it (e.g. en, es, en_US). Omit to get the video's original language; when the server cannot tell which track that is, it answers with the l… |
| 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. Without lang, the server picks a track of this type |
| 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).
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,533 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 2 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.