youtube-signal-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YT_LANGS | No | 자막 언어 우선순위 (subtitle language priority) | en |
| YT_PROXY_URL | No | 자막 요청에 쓸 프록시(https://user:pass@host:port) (proxy for subtitle requests) | |
| YT_STATE_DIR | No | channels.json, seen.json 위치 (location of channels.json and seen.json) | ~/.youtube-signal-mcp |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_transcriptA | Fetch a YouTube video's captions as text. url: any YouTube URL (watch, youtu.be, shorts, live) or an 11-char video id. languages: comma-separated preference, e.g. "ko,en". Falls back to any available. timestamps: prefix each line with mm:ss. max_chars: cut the text after this many characters (0 = no cut). |
| get_video_infoB | Title, channel name and thumbnail of a YouTube video (oembed, no key). |
| list_channel_videosB | Latest videos (up to ~15) of a channel. channel = @handle, UC... id, or channel URL. |
| watch_channelsA | Return videos published since the last call and mark them seen. channels: comma-separated @handles / UC ids. Empty = read channels.json from the state dir (env YT_STATE_DIR, default ~/.youtube-signal-mcp). On a channel's first run only the newest max_new_per_channel are returned. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| summarize_video | Plain summary of one video: what it says, in order, with timestamps. |
| industry_signals | Turn one video into an industry-signal card (fact, source stamp, why it matters). |
| channel_digest | Digest of a channel's newest uploads: one line per video, then the common thread. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 4 tools
get_transcript and get_video_info are clearly distinct (content vs metadata). list_channel_videos and watch_channels both retrieve channel videos, but one is a static listing and the other is stateful incremental monitoring, so an agent could briefly confuse them despite clear descriptions.
All tools follow a consistent verb_noun snake_case pattern: get_* for single-resource fetches, list_* for one-shot listing, watch_* for ongoing monitoring. No mixed conventions.
Four tools is well-scoped for a YouTube signal server: single-video transcript/metadata and channel-level listing/monitoring. Each tool serves a distinct need without bloat.
The set covers the core signal workflow: discover new videos via watch_channels/list_channel_videos, then fetch transcript or metadata. Minor gaps exist (no pagination beyond 15, no watchlist management API), but agents can work around them via channels.json.