Repository navigation
Releases
Releases · pratikgh0se/youtube-mcp
v0.3.3
Added
youtube_reset_consumption_datacan also delete local watch events:includeWatchEvents, with optionalwatchedFrom/watchedTo(inclusive days). It still requiresconfirm: true, and the confirmation names exactly what will be deleted.
Fixed
youtube-authnow checks a stored sign-in with Google and re-runs the browser sign-in when the token is dead, instead of reportingauthorized: true. A network error leaves the stored sign-in untouched. New--forceoption.
Testing
- Offline: 423/423 tests.
- Live: 79/79 tools against a dedicated test channel.
- Real installs from the published tarball: MCP stdio client, Claude Code plugin (inside and outside the repo), Codex CLI.
- Not tested inside the apps: Claude Desktop, Cursor, VS Code, Zed.
v0.3.2
Bug fix release.
Fixed
- Claude Code plugin: the server definition moved from the root
.mcp.jsoninto.claude-plugin/plugin.json, so opening this repo as a project no longer loads the server with unsubstituted${user_config.*}values. - Environment values that are entirely an unresolved
${...}placeholder now count as unset, so status no longer reports a placeholder as a configured API key.
Testing
- 79 of 79 tools passed the live test against a dedicated test channel, on this code before the version bump. Upload resume and cancel were only exercised on a completed upload.
- Installed from the release files: the npm tarball (with a live API call), Codex (real session), and a Claude Code marketplace install (test values only).
Not tested in this release
- Claude Desktop: the
.mcpbwas run on regular Node, not inside the app. - Cursor, VS Code and Zed: launch settings were checked, but the apps were not opened.
- Gemini CLI, Antigravity CLI, Windsurf, Cline, goose, OpenCode, OpenClaw and Hermes.
v0.3.1
v0.3.0
Breaking changes. Tool count is now 79.
- Removed tools:
youtube_approve_upload,youtube_approve_playlist,youtube_approve_moderation,youtube_approve_creator_content. Use the singleyoutube_approvefor every preflight preview. youtube_download_captionnow takesfileName(a plain name ending in .srt, .vtt, .sbv or .txt) instead ofoutputPath, writes only into<state dir>/downloads/(created 0700) and returns the absolutepath. Its readOnlyHint annotation is removed because it writes a local file.youtube_download_captionno longer needs an approval step, soyoutube_preflight_caption_downloadis no longer part of the flow.youtube_create_commentnow works on your own videos only.- Node.js 22.13 or newer is required (local storage uses
node:sqlite). - Claude Code plugin settings that were optional are now required; see docs/SETUP.md.
Added
- archive tools for owned videos (
youtube_archive_videowith preflight and approval) youtube_creator_report: allowlisted YouTube Analytics report (metrics, dimensions, filters, sort, maxResults; default last 28 days) with up-frontinvalid_inputfor known-invalid combinationsyoutube_trending(most popular chart, 1 quota unit)youtube_list_channel_videos(recent uploads with statistics for any channel ID or @handle, about 3 quota units per page)youtube_preflight_update_channelandyoutube_update_channel: edit description, keywords, country and default language of the selected channel through preflight,youtube_approve, execute (untouched branding fields are kept)youtube_preflight_unsubscribe_manyandyoutube_unsubscribe_many: remove up to 100 subscriptions with one approval, per-item results, partial report if quota runs outyoutube_searchfilters:order,publishedAfter,publishedBefore,videoDuration,channelId,regionCode,relevanceLanguage,safeSearch, pluspageTokenandnextPageTokenin results (backwards compatible)youtube_list_subscriptions:pageTokenanddetails: true(subscriberCount, videoCount, lastUploadAt; about 1 extra quota unit per channel)- live end-to-end test script (
scripts/live-e2e.mjs) covering every tool group - beginner setup guide: docs/SETUP.md
Changed
- one
youtube_approvetool replaces the four per-area approve tools (breaking, see above) - Safety model wording: channel and content writes use preflight,
youtube_approve, execute. Viewer actions (subscribe, unsubscribe, rate_video),youtube_create_commentand local curation and reset tools are single-step writes that requireconfirm: true. youtube_unsubscribe_manyreportsunknown(notfailed) for items whose outcome is uncertain after a server or network error, with an action pointing toyoutube_list_subscriptions. Bulk unsubscribe now also verifies that the signed-in account is the selected profile's channel.youtube_creator_reportdefaults its end date to the Pacific (America/Los_Angeles) day and fails withprovider_erroron an analytics response with missing column names.youtube_update_channelrefuses an incomplete channel read instead of building an update from it.- caption download needs no approval;
youtube_create_commentis limited to your own videos (breaking) - the server launches from the release tarball; first start takes about 9 s, later starts use the npm cache
- local storage uses Node's built-in
node:sqliteinstead of the nativebetter-sqlite3addon; Node.js 22.13+ required (breaking) - one universal
.mcpbbundle (youtube-mcp-<version>.mcpb) for macOS, Windows and Linux, with no native binaries - storage open/IO failures surface as
storage_unavailable(path omitted); a Node withoutnode:sqliteis reported at startup and byyoutube_auth_status - plugin settings that are needed to run are now required in the Claude Code plugin
Fixed
youtube_preflight_update_channelalways failed with an incomplete-channel-result error because the real client adapter lackedchannels.update- account mutations (
youtube_create_comment,youtube_subscribe,youtube_unsubscribe,youtube_rate_video) reportedprovider_outcome_unknownfor every error; clean 4xx rejections now surface their status and reason, and only network, 5xx and ambiguous failures stay unknown. A comment with an emptytextDisplayafter insert falls back totextOriginal. youtube_create_commentreportedprovider_outcome_unknownalthough the comment was posted: YouTube's insert response carries noauthorDisplayName, which the response check required. The comment id is now the only required field (author and text fall back).- live e2e channel group verifies the stored brandingSettings description (via an unapproved preview) instead of
youtube_my_account, whose snippet description lags the write - scheduled publish: a 400
invalidPublishAtnow explains that YouTube only schedules a private video that has never been public; tool descriptions say so, and the live e2e schedules before first publishing - caption and thumbnail uploads now send the media body correctly
- provider errors now include the HTTP status and reason
- read-after-write verification retries after create, so fresh resources are found
- smoke test passes the environment through to the server
v0.2.0
v0.1.0
First public release of YouTube MCP, a local-first MCP server written in TypeScript (Node.js 22 or newer, MIT licence).
- 74 tools for search, video and channel lookup, comments, transcripts, playlists, captions, uploads and creator analytics.
- Runs on your machine over stdio; OAuth tokens and working data stay on your disk.
- Every change to your YouTube account goes through preflight, approve, execute, so nothing happens until the exact previewed change is approved.
- Private viewing analysis from a Google Takeout import, stored in a local SQLite file.