{"id":49107502,"url":"https://github.com/adityaarsharma/youtube-mcp-server","last_synced_at":"2026-04-21T02:18:03.359Z","repository":{"id":346132212,"uuid":"1175437207","full_name":"adityaarsharma/youtube-mcp-server","owner":"adityaarsharma","description":"YouTube MCP Server for Claude — read analytics, fetch video metadata (incl. unlisted/private/draft), search uploads, update titles/descriptions/tags. 10 tools via YouTube Data API v3 + OAuth2. Works with Claude Desktop, Claude Code, and any MCP client.","archived":false,"fork":false,"pushed_at":"2026-03-24T09:32:52.000Z","size":49,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-25T11:54:34.718Z","etag":null,"topics":["ai-tools","analytics","anthropic","claude","claude-code","claude-desktop","mcp","model-context-protocol","nodejs","oauth2","typescript","video-metadata","youtube","youtube-analytics","youtube-api","youtube-data-api","youtube-seo"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adityaarsharma.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-07T17:57:30.000Z","updated_at":"2026-03-24T09:32:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/adityaarsharma/youtube-mcp-server","commit_stats":null,"previous_names":["adityaarsharma/youtube-channel-data-mcp","adityaarsharma/youtube-mcp-server"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/adityaarsharma/youtube-mcp-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adityaarsharma%2Fyoutube-mcp-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adityaarsharma%2Fyoutube-mcp-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adityaarsharma%2Fyoutube-mcp-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adityaarsharma%2Fyoutube-mcp-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adityaarsharma","download_url":"https://codeload.github.com/adityaarsharma/youtube-mcp-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adityaarsharma%2Fyoutube-mcp-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32073525,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T01:35:38.224Z","status":"online","status_checked_at":"2026-04-21T02:00:06.111Z","response_time":128,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-tools","analytics","anthropic","claude","claude-code","claude-desktop","mcp","model-context-protocol","nodejs","oauth2","typescript","video-metadata","youtube","youtube-analytics","youtube-api","youtube-data-api","youtube-seo"],"created_at":"2026-04-21T02:18:01.362Z","updated_at":"2026-04-21T02:18:03.342Z","avatar_url":"https://github.com/adityaarsharma.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YouTube MCP Server\n\n\u003e **Connect Claude to your YouTube channel.** Read analytics, fetch full video metadata (including unlisted/private/draft), search your uploads, and update titles/descriptions/tags — all from Claude Desktop, Claude Code, or any MCP client.\n\n[![npm version](https://img.shields.io/npm/v/youtube-channel-mcp?style=for-the-badge\u0026color=CB3837\u0026logo=npm)](https://www.npmjs.com/package/youtube-channel-mcp)\n[![npm downloads](https://img.shields.io/npm/dm/youtube-channel-mcp?style=for-the-badge\u0026color=CB3837\u0026logo=npm)](https://www.npmjs.com/package/youtube-channel-mcp)\n[![GitHub Stars](https://img.shields.io/github/stars/adityaarsharma/youtube-channel-mcp?style=for-the-badge\u0026logo=github)](https://github.com/adityaarsharma/youtube-channel-mcp)\n[![License MIT](https://img.shields.io/badge/License-MIT-blue?style=for-the-badge)](LICENSE)\n[![Claude MCP](https://img.shields.io/badge/Claude-MCP%20Server-FF6B35?style=for-the-badge\u0026logo=anthropic)](https://claude.ai)\n[![Node.js](https://img.shields.io/badge/Node.js-18%2B-43853D?style=for-the-badge\u0026logo=node.js)](https://nodejs.org)\n\n---\n\n## What Is This?\n\nA **Model Context Protocol (MCP) server** that connects Claude to the **YouTube Data API v3** and **YouTube Analytics API** via OAuth2.\n\nInstead of copying data from YouTube Studio into AI tools, just ask Claude:\n\n- *\"Pull the full title, description and tags for this video\"*\n- *\"What are my top performing videos this month?\"*\n- *\"Update the title and tags on my latest upload\"*\n- *\"Where is my traffic coming from?\"*\n\nClaude reads your **real private channel data** and can **update video SEO directly**.\n\n```\nClaude  →  YouTube MCP Server  →  YouTube APIs  →  Your Channel Data\n(you)        (this repo)           (OAuth2)         (stays local)\n```\n\n**Everything runs on YOUR machine. Read + Write access. Nothing sent to third parties.**\n\n---\n\n## Tools Available (10 total)\n\n### Video Metadata (Read + Write)\n\n| Tool | What It Does |\n|------|-------------|\n| `get_video_details` | Full metadata for any video by ID or URL — title, full description, all tags, category, privacy status (public/unlisted/private/draft), stats, duration, thumbnail URL |\n| `search_my_videos` | Search your own channel's videos by keyword. Returns metadata + stats for matching videos |\n| `update_video_seo` | Update title, description, and/or tags on any video directly. Only changes fields you provide |\n\n### Channel Analytics\n\n| Tool | What It Does |\n|------|-------------|\n| `get_channel_overview` | Subscribers, total views, video count, channel description, creation date |\n| `get_all_videos` | List all videos with stats (views, likes, comments, tags, privacy status). Sort by date or views |\n| `get_analytics_over_time` | Day-by-day views, watch time, subscribers gained/lost for any date range |\n| `get_top_videos_analytics` | Top performing videos ranked by views with retention %, watch time, subs gained |\n| `get_audience_demographics` | Audience breakdown: top countries, device types, age groups, gender |\n| `get_traffic_sources` | Where viewers come from: YouTube Search, Suggested, Browse, External, Direct |\n| `analyze_and_suggest_topics` | Pulls channel + top video data for AI-powered topic analysis |\n\n---\n\n## Install\n\n### Option A: npx (Zero Install — just run it)\n\n```bash\nnpx youtube-channel-mcp\n```\n\n### Option B: Global Install\n\n```bash\nnpm install -g youtube-channel-mcp\n```\n\n### Option C: Clone + Run\n\n```bash\ngit clone https://github.com/adityaarsharma/youtube-channel-mcp.git\ncd youtube-channel-mcp\nnpm install\n```\n\n### Option D: Download ZIP\n\n1. Click **Code → Download ZIP** above\n2. Unzip → open Terminal → `cd` into the folder\n3. Run `npm install`\n\n---\n\n## Setup (15 minutes, one time)\n\n### Step 1 — Google Cloud Project\n\n1. Go to [console.cloud.google.com](https://console.cloud.google.com)\n2. Create a new project (name: `YouTube MCP`)\n3. Enable these 2 APIs:\n   - **YouTube Data API v3** (for video data + updates)\n   - **YouTube Analytics API** (for private analytics)\n\n### Step 2 — OAuth Consent Screen\n\n1. Go to **APIs \u0026 Services → OAuth consent screen**\n2. Select **External** → Create\n3. Fill in app name (`YouTube MCP`), your email\n4. Skip scopes → Add your Gmail as test user → Save\n\n### Step 3 — Create OAuth Credentials\n\n1. Go to **APIs \u0026 Services → Credentials**\n2. Click **+ Create Credentials → OAuth client ID**\n3. Select **Desktop app** → Create\n4. **Download JSON** → rename to `credentials.json`\n5. Move into this repo folder\n\n### Step 4 — Authenticate\n\n```bash\nnode auth.js\n```\n\nBrowser opens → log in with the Google account that owns your YouTube channel → Allow.\n\n\u003e **\"This app isn't verified\"** warning is normal for personal apps. Click **Advanced → Go to YouTube MCP (unsafe)**.\n\n### Step 5 — Connect to Claude\n\n#### Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json` (Mac) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"youtube-analytics\": {\n      \"command\": \"node\",\n      \"args\": [\"/full/path/to/youtube-channel-mcp/server.js\"]\n    }\n  }\n}\n```\n\nOr if installed via npm:\n\n```json\n{\n  \"mcpServers\": {\n    \"youtube-analytics\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"youtube-channel-mcp\"]\n    }\n  }\n}\n```\n\n#### Claude Code (Terminal)\n\n```bash\nclaude mcp add youtube-analytics node /full/path/to/youtube-channel-mcp/server.js\n```\n\n#### VS Code\n\nAdd to `.vscode/settings.json`:\n\n```json\n{\n  \"mcp.servers\": {\n    \"youtube-analytics\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"youtube-channel-mcp\"]\n    }\n  }\n}\n```\n\nRestart Claude. Done!\n\n---\n\n## Ready-to-Use Prompts\n\n### SEO Audit (any video)\n```\nGet the full details for this video: [paste URL or ID]\nCheck what keywords it's ranking for and suggest optimized title + tags\n```\n\n### Channel Performance Report\n```\nPull my channel overview, top 20 videos by watch time, 90-day analytics,\ntraffic sources and audience demographics. Give me a full performance report.\n```\n\n### Video Topic Research\n```\nGet my top 20 videos by watch time. What patterns do you see —\ntopics, lengths, title styles? Suggest 10 new video ideas.\n```\n\n### Update Video SEO\n```\nSearch my videos for \"elementor menu\". Pull the full details.\nWrite an optimized title, description, and tags — then update it.\n```\n\n### Audience Deep Dive\n```\nShow my full audience demographics — age, gender, countries, devices.\nWhat content style and posting schedule fits my actual audience?\n```\n\n### Underperformer Diagnosis\n```\nGet all my videos. Compare bottom 10 vs top 10 by views.\nWhy did the lower ones underperform? What would you change?\n```\n\n---\n\n## 8 Bundled AI Skills for YouTube Creators\n\nThis repo includes **ready-to-use AI skill files** in the `skills/` folder that supercharge your YouTube workflow. Each skill is a structured prompt that makes Claude act as a specialized team member.\n\n**Install any skill:** Copy the `.md` file into your Claude skills directory and it activates automatically.\n\n| Skill | What It Does | Trigger Phrases |\n|-------|-------------|-----------------|\n| **[SEO Optimizer](skills/youtube-seo-optimizer.md)** | Optimizes titles, descriptions, tags. Protects existing ranking keywords. 3 title options + full description + 20 tags | \"optimize this video\", \"write title\", \"write tags\" |\n| **[Channel Audit](skills/youtube-channel-audit.md)** | Full channel health report — views, subs, retention, traffic sources, audience demographics. Identifies problems and prescribes fixes | \"audit my channel\", \"why am I not growing\", \"channel report\" |\n| **[Topic Finder](skills/youtube-topic-finder.md)** | 12 data-backed video topics with keyword volumes, SERP gaps, and competitor analysis. Tier 1/2/3 prioritization | \"video ideas\", \"what should I make next\", \"find topics\" |\n| **[Thumbnail Auditor](skills/youtube-thumbnail-auditor.md)** | 20-point thumbnail scoring (66-point scale). Grades A-F with specific redesign instructions | \"audit thumbnail\", \"review this thumbnail\", \"CTR is low\" |\n| **[Script Writer](skills/youtube-script-writer.md)** | Full production-ready scripts with word-for-word narration, screen cues, timestamps, editor brief, and companion Short script | \"write script\", \"video script\", \"tutorial script\" |\n| **[Competitor Spy](skills/youtube-competitor-spy.md)** | Competitor channel analysis, SERP battle maps, 10 \"steal-worthy\" topics with differentiation angles | \"competitor analysis\", \"who's beating me\", \"content gaps\" |\n| **[Video Analyzer](skills/youtube-video-analyzer.md)** | Deep single-video analysis — SEO score (21-point), performance benchmarks, and optimized rewrite | \"analyze this video\", \"why isn't this performing\", \"video audit\" |\n| **[Shorts Repurposer](skills/youtube-shorts-repurposer.md)** | Turn any long-form video into 3-5 Shorts with hooks, text overlays, and posting strategy | \"make shorts from this\", \"repurpose video\", \"extract shorts\" |\n\n### How the Skills + MCP Work Together\n\n```\nYou: \"Optimize this video: youtube.com/watch?v=abc123\"\n\nClaude:\n  1. youtube-seo-optimizer skill activates\n  2. Calls get_video_details → pulls current title, description, tags\n  3. Checks YouTube SERP for current rankings\n  4. Lists PROTECTED keywords (won't remove)\n  5. Writes 3 new title options + full description + 20 tags\n  6. Can call update_video_seo to apply changes directly\n```\n\nThe skills tell Claude **what to do**. The MCP tools give Claude **access to your data**. Together they create a complete YouTube AI workflow.\n\n### Install Skills\n\n**Claude Desktop / Claude Code:**\n```bash\n# Copy a skill to your Claude skills directory\ncp skills/youtube-seo-optimizer.md ~/.claude/skills/\n```\n\n**Or install all 8:**\n```bash\ncp skills/youtube-*.md ~/.claude/skills/\n```\n\n---\n\n## OAuth Scopes\n\n| Scope | Purpose |\n|-------|---------|\n| `youtube` | Read + write video metadata (titles, descriptions, tags) |\n| `youtube.readonly` | Read video data, search, list |\n| `yt-analytics.readonly` | Read private analytics (views, watch time, subs, demographics) |\n| `youtubepartner-channel-audit` | Extended channel audit data |\n\n**To enable write access** (update_video_seo), delete `tokens.json` and re-run `node auth.js`. The new auth flow requests the `youtube` write scope.\n\n---\n\n## Privacy \u0026 Security\n\n| Question | Answer |\n|----------|--------|\n| Does my data go to any server? | No — runs 100% on your machine |\n| Can it delete videos? | No — only reads data and updates metadata |\n| Is OAuth safe? | Yes — same system used by TubeBuddy, VidIQ |\n| Can I revoke access? | Yes — anytime at myaccount.google.com/permissions |\n\n**Never commit `credentials.json` or `tokens.json` to git.**\n\n---\n\n## Troubleshooting\n\n| Problem | Fix |\n|---------|-----|\n| `credentials.json not found` | Download from Google Cloud Console → move to repo folder |\n| `Not authenticated` | Run `node auth.js` |\n| Port 3000 in use | `lsof -ti:3000 \\| xargs kill -9` then retry |\n| Claude doesn't show tools | Check JSON syntax in config, restart Claude fully |\n| \"App isn't verified\" | Click Advanced → Go to YouTube MCP (unsafe) |\n| `update_video_seo` fails | Delete `tokens.json`, re-run `node auth.js` for write scope |\n| Quota exceeded | YouTube API free limit: 10,000 units/day. Wait 24h |\n\n---\n\n## What's New in v2.1\n\n- **npm package** — `npx youtube-channel-mcp` for zero-install\n- **8 AI skills** — bundled YouTube workflow skills for Claude\n- **MIT License** — free to use, modify, share\n\n## What's New in v2.0\n\n- **`get_video_details`** — Full metadata by video ID or URL. Works for public, unlisted, private, and draft videos\n- **`search_my_videos`** — Search your own uploads by keyword\n- **`update_video_seo`** — Update title, description, tags directly on YouTube\n- **YouTube write scope** — OAuth now requests `youtube` scope for SEO updates\n- **URL parsing** — Pass full YouTube URLs or just video IDs\n- **Privacy status** — All video listings now show public/unlisted/private status\n\n---\n\n## Files\n\n```\nyoutube-channel-mcp/\n├── server.js          ← MCP server (10 tools)\n├── auth.js            ← Run once to link YouTube account\n├── package.json       ← Dependencies + npm config\n├── skills/            ← 8 AI skills for YouTube creators\n├── LICENSE            ← MIT\n├── credentials.json   ← YOU add this (never commit!)\n└── tokens.json        ← Auto-created after auth (never commit!)\n```\n\n---\n\n## Contributing\n\nPRs welcome! Ideas:\n- Transcript extraction (YouTube captions API)\n- YouTube Shorts-specific analytics\n- Revenue/monetization data (YouTube Reporting API)\n- Playlist management tools\n- Comment management tools\n- Thumbnail upload\n\n---\n\n## License\n\n[MIT](LICENSE) — free to use, modify, share.\n\n---\n\n## Built By\n\n**[Aditya Sharma](https://adityaarsharma.com)** — Building AI tools for creators and marketers.\n\n- [Twitter/X](https://twitter.com/adityaarsharma)\n- [GitHub](https://github.com/adityaarsharma)\n\nIf this saved you time — **star the repo** and share with a creator friend!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadityaarsharma%2Fyoutube-mcp-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadityaarsharma%2Fyoutube-mcp-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadityaarsharma%2Fyoutube-mcp-server/lists"}