{
  "markdown": "# youtube-organic-mcp\n\nMCP server for **YouTube organic analytics** — channel stats, video performance, watch time, and audience engagement via the **YouTube Data API v3** and **YouTube Analytics API v2**.\n\nBuilt for [Claude Code](https://claude.ai/claude-code) and any MCP-compatible AI tool. Gives your AI assistant direct, read-only access to your own channel's organic data — subscribers, views, watch time, per-video engagement, and day-by-day trends.\n\nPart of **[The SEO Engine](https://lanternrow.com/seo-engine/)** toolkit by [Rex Jones](https://rexjones.me) — AI-powered SEO and social media tooling for agencies and businesses.\n\n## Why this exists\n\n- **No good open-source YouTube organic MCP existed.** Plenty of ad MCPs; organic channel analytics, nobody.\n- **YouTube has the richest organic API of the major platforms.** Watch time, average view duration, subscribers gained/lost, traffic sources — none of it gated behind a multi-week review.\n- **Reuses your existing Google OAuth.** If you already run the GA4 / GSC / Google Ads MCPs, the same OAuth client works here.\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `list_accounts` | List configured channels and the default |\n| `get_channel_info` | Channel profile + lifetime stats (subscribers, total views, video count, uploads playlist) |\n| `get_videos` | Paginated uploads with per-video views, likes, comments, duration |\n| `get_video_details` | Details for specific video IDs (batch up to 50) |\n| `get_channel_analytics` | Channel analytics over a date range: views, watch time, avg view duration/%, subs gained/lost, likes, comments, shares — optionally by day |\n| `get_video_analytics` | The same metrics for a single video over a date range |\n\nAll tools accept an optional `account` parameter for multi-account setups.\n\n## Getting connected\n\n### Step 1: Enable the APIs\nIn Google Cloud Console (any project — you can reuse an existing one), enable **YouTube Data API v3** and **YouTube Analytics API**.\n\n### Step 2: Get a refresh token\nCreate an OAuth client of type **Desktop app** and download its `client_secret` JSON. Then run the helper (needs `pip install google-auth-oauthlib`):\n\n```bash\npython3 scripts/get_youtube_token.py /path/to/client_secret.json my-channel\n```\n\nAuthorize with the Google account that owns the channel (pick the Brand Account if prompted). It prints the three `YOUTUBE_*` values to drop into your config and writes them to `.youtube_account.json` (gitignored).\n\n### Step 3: Configure\nAdd to your Claude Code MCP settings:\n\n```json\n{\n  \"mcpServers\": {\n    \"youtube-organic\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/youtube-organic-mcp/dist/index.js\"],\n      \"env\": {\n        \"YOUTUBE_CLIENT_ID\": \"your_client_id.apps.googleusercontent.com\",\n        \"YOUTUBE_CLIENT_SECRET\": \"your_client_secret\",\n        \"YOUTUBE_REFRESH_TOKEN\": \"1//your_refresh_token\"\n      }\n    }\n  }\n}\n```\n\nOr set `YOUTUBE_ACCOUNTS` to a JSON array for multiple channels (see `.env.example`).\n\n## Architecture\n\n```\nsrc/\n  index.ts          # MCP server entry point, tool registration\n  accounts.ts       # Multi-account resolution (client_id/secret/refresh_token)\n  client.ts         # OAuth token minting + Data/Analytics API HTTP client\n  types.ts          # TypeScript interfaces for API responses\n  tools/\n    channel.ts      # get_channel_info + uploads-playlist resolver\n    videos.ts       # get_videos, get_video_details\n    analytics.ts    # get_channel_analytics, get_video_analytics\n```\n\n- **Zero external HTTP dependencies** — native `fetch` (Node 18+)\n- **Auto-refreshing auth** — access tokens minted from the refresh token, cached per process\n- **Multi-account support** — monitor multiple channels from one server\n\n## License\n\nMIT\n",
  "bytes": 3746,
  "sha": "5981d36205ad49e582980f4a9b155af2156943542b5ec43a0b255adb87efdf2d",
  "repo_slug": "lanternrow/youtube-organic-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_lanternrow_youtube_organic_mcp_d086c1c9/readme"
}