fetchworks-mcp
Official# fetchworks-mcp
An MCP server that gives AI agents YouTube transcripts — from single videos, whole channels, and YouTube search — with timestamped segments, plain text, SRT, and VTT.
The server is a thin client for the [Fetchworks YouTube Transcript Scraper](https://apify.com/fetchworks/youtube-transcript-scraper) on Apify. The extraction runs on Apify's infrastructure; you bring your own Apify token. Pricing is $2 per 1,000 transcripts — only delivered transcripts are billed. Failed videos (no captions, blocked, unavailable) cost nothing.
Get a token by [signing up at apify.com](https://console.apify.com/sign-up) (free tier included), then copy it from [console.apify.com/settings/integrations](https://console.apify.com/settings/integrations).
## Tools
| Tool | What it does |
| --- | --- |
| `get_youtube_transcript` | Transcripts for one or more video URLs / Shorts links / bare 11-char IDs |
| `get_channel_transcripts` | Transcripts for a channel's newest uploads (`@handle` or channel URL, default 10 videos) |
| `search_youtube_transcripts` | Transcripts for the top results of a YouTube search (default 5 videos) |
All tools accept `languages` (priority list), `preferAutoGenerated`, `translateTo`, `outputFormats` (`segments`/`text`/`srt`/`vtt`, default `["text"]`), `includeMetadata`, and `includeChapters`. Every video comes back with an honest `status` (`ok`, `no_captions`, `blocked`, `live_stream`, `age_restricted`, `unavailable`, `translation_unavailable`, `po_token_required`, `error`) — never a silently empty transcript.
## Setup
Requires Node.js 18+ and the `APIFY_TOKEN` environment variable.
### Claude Desktop
Add to `claude_desktop_config.json` (Settings → Developer → Edit Config):
```json
{
"mcpServers": {
"youtube-transcripts": {
"command": "npx",
"args": ["-y", "fetchworks-mcp"],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}
```
### Claude Code
```bash
claude mcp add youtube-transcripts --env APIFY_TOKEN=your-apify-token -- npx -y fetchworks-mcp
```
### Cursor
Add to `~/.cursor/mcp.json` (or `.cursor/mcp.json` in your project):
```json
{
"mcpServers": {
"youtube-transcripts": {
"command": "npx",
"args": ["-y", "fetchworks-mcp"],
"env": {
"APIFY_TOKEN": "your-apify-token"
}
}
}
}
```
## Example prompts
- "Get the transcript of https://www.youtube.com/watch?v=jNQXAC9IVRw and summarize it."
- "What has @3blue1brown covered in their last 5 videos?"
- "Search YouTube for 'context windows explained' and compare what the top 3 videos say."
## Links
- Actor page and pricing: https://apify.com/fetchworks/youtube-transcript-scraper
- Apify API tokens: https://console.apify.com/settings/integrations
## License
MIT
TDQS
Scored across 3 tools
Each tool targets a distinct entry point: explicit video IDs/URLs, a channel handle/URL, or a text search. Even though the resulting transcript output overlaps, the input mechanism is unambiguous, so an agent should not confuse the tools.
All tool names follow the same snake_case pattern with get_ or search_ prefixes and consistently use 'transcripts' as the object. The naming clearly indicates both the action and the data source.
Three tools is compact but well-scoped for the server's purpose: known video URLs, channel browsing, and search-based discovery each earn a place. No tool is redundant, and the count is appropriate for a focused YouTube transcript server.
The server covers the primary transcript workflows: direct video lookup, channel-level retrieval, and search. Missing playlist support and explicit language filtering are minor gaps, but agents can still accomplish the main tasks without dead ends.