{
  "markdown": "# scribefy-mcp\n\n[MCP](https://modelcontextprotocol.io) server for [Scribefy](https://scribefy.app) — extract YouTube transcripts from Claude Desktop, Cursor, Windsurf, ChatGPT custom GPTs, or any other MCP-compatible client.\n\n> **Live now** — set it up in a minute below, or try the web app at **[scribefy.app](https://scribefy.app)**.\n\n## Why\n\nMost YouTube transcript tools live in browser extensions or one-off web UIs. This wraps Scribefy's API into the MCP standard so your AI assistant can pull a transcript whenever a user pastes a YouTube link — no manual copy-paste, no separate tabs.\n\n## Requirements\n\n- Node 20+\n- A Scribefy account on the **API + MCP** plan ($25/mo) for an API key. You can install without a key first — the MCP host registers the server cleanly and you'll get a friendly nudge when you try to use a tool — then add your key from [scribefy.app/dashboard](https://scribefy.app/dashboard) to start extracting.\n\n## Setup\n\n### Claude Desktop\n\nOpen the config file (`Settings → Developer → Edit Config`):\n\n```json\n{\n  \"mcpServers\": {\n    \"scribefy\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"scribefy-mcp\"],\n      \"env\": {\n        \"SCRIBEFY_API_KEY\": \"sk_live_…\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop. The `extract_transcript` tool appears in the available-tools panel.\n\n### Cursor\n\n`Settings → Cursor Settings → MCP → Add new MCP server`:\n\n```json\n{\n  \"scribefy\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"scribefy-mcp\"],\n    \"env\": {\n      \"SCRIBEFY_API_KEY\": \"sk_live_…\"\n    }\n  }\n}\n```\n\n### Windsurf\n\n`~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"scribefy\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"scribefy-mcp\"],\n      \"env\": {\n        \"SCRIBEFY_API_KEY\": \"sk_live_…\"\n      }\n    }\n  }\n}\n```\n\n### Anywhere else\n\nAny MCP host that supports stdio transport: spawn `npx -y scribefy-mcp` with `SCRIBEFY_API_KEY` in the env. The server speaks the standard [MCP](https://modelcontextprotocol.io) JSON-RPC over stdin/stdout.\n\n## Tools exposed\n\nFour tools. Three are free (research toolkit); only `extract_transcript` charges credits.\n\n### `extract_transcript`\n\nPulls the transcript of a YouTube video.\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `url` | string | yes | Full YouTube URL — `youtube.com/watch?v=…`, `youtu.be/…`, or `youtube.com/shorts/…` |\n| `lang` | string | no | BCP-47 language code (e.g. `en`, `es`, `fr`, `zh-Hans`). Defaults to `en` |\n\n**Returns:** Markdown with title, channel, duration, language, and the transcript split into segments with timestamps.\n\n**Cost:** 1 credit (≤15 min) → 8 credits (2 h+). Cached transcripts are free.\n\n### `search_videos`\n\nFree-text YouTube search.\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `query` | string | yes | Search query — same syntax YouTube's own search bar accepts |\n| `limit` | number | no | Max results, 1–25 (default 10) |\n\n**Returns:** Markdown list of title / channel / duration / views / URL for each result.\n\n**Cost:** Free.\n\n### `get_video_metadata`\n\nTitle, channel, duration, view count, upload date, and available caption tracks. **Does not** pull the transcript.\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `url` | string | yes | Full YouTube URL |\n\n**Returns:** Markdown summary plus a list of every caption track (authored ✏ or auto-generated ⚙) with its language code.\n\n**Cost:** Free. Use this to inspect a video before deciding whether to extract, or to discover which caption languages are available.\n\n### `get_related_videos`\n\nYouTube's \"Up next\" feed for a video.\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `url` | string | yes | Full YouTube URL of the seed video |\n| `limit` | number | no | Max related videos, 1–25 (default 10) |\n\n**Returns:** Same shape as `search_videos`.\n\n**Cost:** Free.\n\n### Tools coming in a future release\n\n`list_channel_videos` and `get_video_comments` were planned for 0.3.0 but are deferred to 0.4.0 while we wait for upstream `youtubei.js` to publish fixes for YouTube's 2026 response-shape changes. Channel listing fails with HTTP 400 at the InnerTube layer, and `info.getComments()` is no longer attached to parsed `VideoInfo`. Both will return as soon as the library catches up.\n\n## Skills\n\nThe repo ships an Agent Skill (a `SKILL.md` your assistant loads on demand) that teaches it how to use these tools *well* — vet candidates with the free tools before spending credits, prefer authored captions, lean on the free transcript cache, and cite answers with timestamps.\n\n- [`skills/youtube-research`](skills/youtube-research/SKILL.md) — the YouTube research workflow: search → vet metadata → extract selectively → synthesize with `[mm:ss]` citations.\n\nTo use it in Claude Code, copy the folder into your project's `.claude/skills/` (or `~/.claude/skills/` to have it everywhere). Open Plugins-compatible hosts detect it straight from the repo.\n\n## Configuration\n\n| Env var | Required | Default | Notes |\n|---|---|---|---|\n| `SCRIBEFY_API_KEY` | yes | — | `sk_live_…` (production) or `sk_test_…` (Scribefy test mode) |\n| `SCRIBEFY_API_BASE` | no | `https://api.scribefy.app` | Override for staging (`https://api-staging.scribefy.app`) or self-hosted instances |\n\n## Troubleshooting\n\n**`SCRIBEFY_API_KEY is required`**\nMake sure the `env` block is set in your MCP host's config and the host actually loads it. Some hosts strip env vars by default — check their docs.\n\n**`Scribefy rejected the API key`**\nEither the key is wrong, the key was revoked, or your subscription is no longer on the API + MCP plan. Check [scribefy.app/dashboard](https://scribefy.app/dashboard).\n\n**`Not enough credits`**\nThe tool returns the remaining balance and the cost in the error message. Top up at [scribefy.app/pricing](https://scribefy.app/pricing).\n\n**The tool doesn't show up in my MCP client**\nAfter editing the config, fully restart the client (not just the chat window). Tail the client's logs if available — most show MCP stderr there. The server prints `scribefy-mcp: ready` once it boots.\n\n## License\n\nMIT\n",
  "bytes": 6084,
  "sha": "c24663c45e24bfd49becd000b1cee46d4a29d35d88b42ee867f4b8904b28a650",
  "repo_slug": "mkirovbg/scribefy-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_mkirovbg_scribefy_mcp_bf87c062/readme"
}