Youtube Mcp

io.github.miller-joe由 GitHub 帳號 miller-joe 發布v0.1.2更新於 Oct 24, 2026

MCP server for YouTube creator-ops with a ComfyUI bridge for AI thumbnail generation.

概覽

AI 產生的概覽

一個經 OAuth 驗證的 YouTube 創作者營運 MCP 伺服器,讓助理編輯影片、字幕、播放清單和留言,查詢頻道分析,並透過 ComfyUI 產生並設定 AI 縮圖。

可以做什麼
列出並檢視本頻道的影片和 Shorts,更新標題、說明、標籤、分類或隱私設定,或在標題完全相符的確認下刪除影片。列出、上傳和刪除字幕軌。建立播放清單並將影片加入其中。讀取留言串、回覆留言,以及對留言執行保留、核准或拒絕。依日期範圍查詢頻道和 Shorts 分析資料。設定 ComfyUI 位址後,可在一次呼叫中產生縮圖並設定到影片上。
適用情境
適合希望助理對自己的 YouTube 頻道執行實際寫入操作的頻道擁有者,例如修改中繼資料、管理留言、維護播放清單、上傳字幕和查詢分析,而不只是讀取公開資料。也適合想在對話中直接把 AI 產生的縮圖推送到 YouTube 的情境。
執行需求
透過 npx 或 Docker 在本機執行(需 Node 20+)。需要一個綁定 YouTube 頻道的 Google 帳號、一個已啟用 YouTube Data API v3 和 YouTube Analytics API 的 Google Cloud 專案,以及 Desktop 類型的 OAuth 用戶端。憑證來自 YOUTUBE_CLIENT_SECRET_FILE,或 YOUTUBE_CLIENT_ID 加 YOUTUBE_CLIENT_SECRET;需先執行一次互動式授權,將更新權杖儲存到 YOUTUBE_TOKEN_FILE。選用的 COMFYUI_URL 可啟用縮圖橋接。
安裝前請注意
伺服器保存可寫入頻道的 OAuth 更新權杖,存放在權杖檔案路徑中,請妥善保護該檔案。工具可永久刪除影片和字幕軌、修改中繼資料與隱私設定、張貼回覆和審核留言,這些都是對線上頻道的真實可見操作。申請的權限範圍包括 youtube.upload 和 youtube.force-ssl。API 配額有限(每天 10,000 單位),寫入操作消耗更多。縮圖橋接會將提示詞傳送到所設定的 ComfyUI 服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Youtube Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

youtube-mcp

OAuth-authenticated YouTube MCP for channel owners. Edit video metadata, reply to and moderate comments, manage playlists, query channel analytics, and generate or set AI thumbnails via a ComfyUI bridge. Goes beyond the read-only Data API v3 wrappers that dominate this space.

[youtube-mcp MCP server]

[GitHub Sponsors] [Ko-fi]

The pitch

Most existing YouTube MCPs use an API key against Data API v3. Search videos, fetch public metadata, read-only. This one uses OAuth 2.0 (Authorization Code + PKCE) so it can actually write to your channel: update video titles, descriptions and tags, reply to comments, moderate spam, manage playlists. It also hits the separate YouTube Analytics API for channel stats, and generates a thumbnail via ComfyUI and pushes it to YouTube in a single MCP call.

Claude, use generate_and_set_thumbnail on video abc123:  prompt: "cyberpunk hacker at keyboard, neon blue and pink, high contrast"

ComfyUI renders 1280×720, youtube-mcp fetches the bytes, and POSTs to thumbnails.set. Done.

Install

bash
# npx, no installnpx @miller-joe/youtube-mcp --help
# Dockerdocker run -p 9120:9120 \  -e YOUTUBE_CLIENT_ID=... \  -e YOUTUBE_CLIENT_SECRET=... \  -e YOUTUBE_TOKEN_FILE=/token/token.json \  -v $PWD/token:/token \  ghcr.io/miller-joe/youtube-mcp:latest

Setup: Google Cloud one-time (~10 min)

  1. Google account plus YouTube channel. Use a personal account, not a workspace one you might lose.

  2. Google Cloud project at https://console.cloud.google.com. Call it whatever you want (e.g. youtube-mcp).

  3. Enable APIs:

    • YouTube Data API v3
    • YouTube Analytics API
  4. OAuth consent screen: External, App name, support email. In Scopes, add:

    • youtube.upload
    • youtube.force-ssl
    • yt-analytics.readonly
  5. Stay in Testing mode. Add yourself as a test user (required). As the project owner, your refresh token won't expire.

  6. Create OAuth Client ID: Application type = Desktop app. Download the JSON.

  7. Run the interactive auth flow:

    bash
    npx @miller-joe/youtube-mcp --auth --client-secret-file ./client_secret.json

    A browser opens, you log in to the Google account tied to your YouTube channel, and grant the requested scopes. On success, a refresh token is saved to ~/.config/youtube-mcp/token.json.

  8. Start the server:

    bash
    npx @miller-joe/youtube-mcp --client-secret-file ./client_secret.json

    Or provide the client credentials via env: YOUTUBE_CLIENT_SECRET_FILE, or YOUTUBE_CLIENT_ID + YOUTUBE_CLIENT_SECRET.

Connect an MCP client

bash
claude mcp add --transport http youtube http://localhost:9120/mcp

Or point your MCP gateway at the Streamable HTTP endpoint.

Configuration

CLI flagEnv varDefaultNotes
--client-secret-fileYOUTUBE_CLIENT_SECRET_FILE(none)Path to Google OAuth JSON
--client-idYOUTUBE_CLIENT_ID(none)Alternative to the secret file
--client-secretYOUTUBE_CLIENT_SECRET(none)Alternative to the secret file
--token-fileYOUTUBE_TOKEN_FILE~/.config/youtube-mcp/token.jsonRefresh token storage
--hostMCP_HOST0.0.0.0Bind host (HTTP mode only)
--portMCP_PORT9120Bind port (HTTP mode only)
--stdioMCP_TRANSPORT=stdio(unset)Speak MCP over stdio instead of HTTP. Use when launched as a subprocess by a stdio-first MCP client (Claude Desktop, mcp-inspector).
--comfyui-urlCOMFYUI_URL(unset, bridge disabled)ComfyUI HTTP URL for bridge tools
(no flag)COMFYUI_DEFAULT_CKPTsd_xl_base_1.0.safetensorsDefault checkpoint for bridge tool

Transports

The server speaks streamable HTTP by default (great for Claude Code, MetaMCP, raw fetch). Pass --stdio (or set MCP_TRANSPORT=stdio) to switch into stdio mode, which is what stdio-first clients like Claude Desktop and the MCP Inspector expect:

json
// claude_desktop_config.json{  "mcpServers": {    "youtube": {      "command": "npx",      "args": ["-y", "@miller-joe/youtube-mcp", "--stdio"],      "env": {        "YOUTUBE_CLIENT_SECRET_FILE": "/path/to/client_secret.json",        "YOUTUBE_TOKEN_FILE": "/path/to/token.json"      }    }  }}

Stdio mode skips the OAuth-token preflight check — the server boots even without a stored token and surfaces auth errors at tool-call time. Run youtube-mcp --auth --client-secret-file <path> once in HTTP mode to seed the refresh token before pointing Claude Desktop at it.

Tools

Videos

  • list_my_videos: paginated list of the authenticated channel's uploads.
  • get_video: full detail for one video.
  • update_video_metadata: title, description, tags, category, privacy.
  • delete_video: permanently delete a video. Requires confirm_video_title to match the current title exactly, as a guard against deleting the wrong video.

Captions

  • list_captions: list caption tracks on a video (language, name, status, draft flag).
  • upload_caption: upload an SRT or WebVTT caption track to a video.
  • delete_caption: delete a caption track.

Shorts

  • list_my_shorts: find Shorts in recent uploads (filters by duration ≤60s).
  • get_shorts_analytics: YouTube Analytics query restricted to Shorts (creatorContentType==SHORTS).

Playlists

  • create_playlist: create a playlist (default private).
  • add_to_playlist: add a video to an existing playlist.

Comments

  • list_comments: top-level comment threads on a video.
  • reply_to_comment: reply to a top-level comment.
  • moderate_comment: hold, approve, or reject a comment.

Analytics

  • query_channel_analytics: date-ranged metrics with optional dimensions and filters.

Bridge (when COMFYUI_URL is configured)

  • generate_and_set_thumbnail: generate a thumbnail via ComfyUI and set it on a video in one call.

Quota notes

YouTube Data API free tier = 10,000 units/day. Key operation costs:

  • videos.list, commentThreads.list: 1 unit each.
  • videos.update, comments.insert, thumbnails.set: 50 units each.
  • videos.insert (upload): 1,600 units, so about 6 uploads per day on the free tier.

Most creator-ops workflows stay well under the free cap.

Architecture

┌────────────────┐     ┌──────────────────┐     ┌─────────────────┐│  MCP client    │────▶│  youtube-mcp     │────▶│  YouTube APIs   ││  (Claude etc.) │◀────│  (this server)   │◀────│  (Data/Analytics)│└────────────────┘     └────────┬─────────┘     └─────────────────┘                                │                                │ (bridge tools only)                                ▼                       ┌──────────────────┐                       │  ComfyUI         │                       │  (txt2img)       │                       └──────────────────┘

OAuth refresh tokens are cached locally and refreshed just-in-time before expiry. The bridge tool downloads image bytes from ComfyUI internally, so ComfyUI does not need to be publicly reachable.

Development

bash
git clone https://github.com/miller-joe/youtube-mcpcd youtube-mcpnpm installnpm run devnpm run buildnpm test

Requires Node 20+.

Roadmap

Shipped:

  • Videos: list, get, update metadata, delete with title-match confirm guard.
  • Captions: upload, list, delete.
  • Shorts: list_my_shorts (duration filter) and get_shorts_analytics (creatorContentType==SHORTS).
  • Playlists: create, add-to.
  • Comments: list, reply, moderate.
  • Analytics: channel analytics query.
  • ComfyUI thumbnail bridge: generate_and_set_thumbnail.

Planned:

  • Video upload (video_upload) with resumable-upload support.
  • Reporting API for bulk historical data exports.

License

MIT © Joe Miller

Support

If this saves you time, consider supporting development:

[GitHub Sponsors] [Ko-fi]

來源:README.md,提交 13f70c4

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分