YouTube search: find videos, fetch details and comments, pull full transcripts.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Search YouTube live via SerpAPI. Returns video_results (videos), plus channels, playlists, movies and related searches. Each video result's id is the YouTube video id — feed it as `v` to youtube_video (details, related videos, comments) and to youtube_transcript. `sp` carries SerpAPI filter and next-page tokens from a prior result for pagination / refined filtering.
Search query for YouTube (required). Same syntax as the YouTube search box.
Country code for the search, e.g. 'us', 'uk', 'de'.
Language code, e.g. 'en', 'es', 'pt-br'.
Filter / pagination token from a prior result: carries YouTube search filters and the next-page token.
Force a fresh SerpAPI fetch and bypass this server's result cache. Default false.
Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http youtube https://mcp.wondel.ai/youtube/mcp
Search YouTube live via SerpAPI. Returns video_results (videos), plus channels, playlists, movies and related searches. Each video result's id is the YouTube video id — feed it as `v` to youtube_video (details, related videos, comments) and to youtube_transcript. `sp` carries SerpAPI filter and next-page tokens from a prior result for pagination / refined filtering.
| Argument | Type | Description |
|---|---|---|
| gl | string | Country code for the search, e.g. 'us', 'uk', 'de'. |
| hl | string | Language code, e.g. 'en', 'es', 'pt-br'. |
| sp | string | Filter / pagination token from a prior result: carries YouTube search filters and the next-page token. |
| no_cache | boolean | Force a fresh SerpAPI fetch and bypass this server's result cache. Default false. |
| zero_trace | boolean | Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false. |
| search_query* | string | Search query for YouTube (required). Same syntax as the YouTube search box. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"search_query"
],
"properties": {
"gl": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Country code for the search, e.g. 'us', 'uk', 'de'."
},
"hl": {
"type": "string",
"description": "Language code, e.g. 'en', 'es', 'pt-br'."
},
"sp": {
"type": "string",
"description": "Filter / pagination token from a prior result: carries YouTube search filters and the next-page token."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh SerpAPI fetch and bypass this server's result cache. Default false."
},
"zero_trace": {
"type": "boolean",
"description": "Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false."
},
"search_query": {
"type": "string",
"description": "Search query for YouTube (required). Same syntax as the YouTube search box."
}
}
}Fetch a YouTube video's transcript via SerpAPI. `v` is the video id from a youtube_search result. Pick a track with language_code (default 'en' — use the video's own language), and optionally title and type ('asr' for auto-generated captions). When the requested track doesn't exist the tool falls back once to an available track (same language first, manual before auto-generated) and says so in `note`.
| Argument | Type | Description |
|---|---|---|
| v* | string | YouTube video id (required) — the id from a youtube_search result. |
| type | string | Transcript track type: 'asr' for auto-generated captions; omit for manual captions. If that track doesn't exist, an available one is used instead and `note` says which. |
| title | string | Transcript track title to select when multiple tracks exist. |
| no_cache | boolean | Force a fresh SerpAPI fetch and bypass this server's result cache. Default false. |
| zero_trace | boolean | Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false. |
| language_code | string | Transcript language code, e.g. 'en', 'pl'. Default 'en' — pass the video's own language. If that track doesn't exist, an available one is used instead and `note` says which. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"v"
],
"properties": {
"v": {
"type": "string",
"description": "YouTube video id (required) — the id from a youtube_search result."
},
"type": {
"type": "string",
"description": "Transcript track type: 'asr' for auto-generated captions; omit for manual captions. If that track doesn't exist, an available one is used instead and `note` says which."
},
"title": {
"type": "string",
"description": "Transcript track title to select when multiple tracks exist."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh SerpAPI fetch and bypass this server's result cache. Default false."
},
"zero_trace": {
"type": "boolean",
"description": "Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false."
},
"language_code": {
"type": "string",
"description": "Transcript language code, e.g. 'en', 'pl'. Default 'en' — pass the video's own language. If that track doesn't exist, an available one is used instead and `note` says which."
}
}
}Fetch a single YouTube video by id via SerpAPI: details, related videos, comments and replies. `v` is the video id from a youtube_search video_results entry. Page related videos / comments / replies with next_page_token from a prior result.
| Argument | Type | Description |
|---|---|---|
| v* | string | YouTube video id (required), e.g. the id from a youtube_search video_results entry. |
| gl | string | Country code for the search, e.g. 'us', 'uk', 'de'. |
| hl | string | Language code, e.g. 'en', 'es', 'pt-br'. |
| no_cache | boolean | Force a fresh SerpAPI fetch and bypass this server's result cache. Default false. |
| zero_trace | boolean | Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false. |
| next_page_token | string | Token from a prior result to page through related videos, comments, or replies. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"v"
],
"properties": {
"v": {
"type": "string",
"description": "YouTube video id (required), e.g. the id from a youtube_search video_results entry."
},
"gl": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Country code for the search, e.g. 'us', 'uk', 'de'."
},
"hl": {
"type": "string",
"description": "Language code, e.g. 'en', 'es', 'pt-br'."
},
"no_cache": {
"type": "boolean",
"description": "Force a fresh SerpAPI fetch and bypass this server's result cache. Default false."
},
"zero_trace": {
"type": "boolean",
"description": "Enterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false."
},
"next_page_token": {
"type": "string",
"description": "Token from a prior result to page through related videos, comments, or replies."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.