Compliance-aware MCP server for YouTube publishing, analytics and creator insights.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Compliance-aware Model Context Protocol server for YouTube publishing, analytics, and creator insights β every action gated, metered, and audited before it touches a channel.
tubekit-mcp is an MCP server: you connect it to an MCP client (Claude Desktop,
Claude Code, β¦) and the assistant can then publish and manage videos on a
YouTube channel on your behalf, with compliance checks, quota accounting,
idempotent uploads and a tamper-evident audit log on every state-changing call.
Licensed under FSL-1.1-MIT β run and self-host it freely,
commercially or not; each release becomes plain MIT two years after publication.
A single tool call (e.g. upload_video) flows through a compliance gate, a
quota / idempotency ledger, an OAuth refresh, the YouTube API, and a
tamper-evident audit row β with the pure core kept free of protocol concerns,
a boundary enforced in CI by an AST fitness test
(tests/unit/services/test_no_fastmcp_imports.py).
Why this exists. Agents are starting to operate real YouTube channels β and a channel is an asset you can lose. One bad call can publish a video that violates policy, burn the day's API quota (an upload costs 1600 of the default 10,000 daily units), or double-publish on a retry. Generic YouTube wrappers hand the agent the raw API;
tubekitwraps every call in the guardrails an unattended operator needs: a compliance gate before anything goes live, quota accounted before it is spent, idempotent retries, OAuth tokens encrypted at rest (fingerprint-only logging), and a tamper-evident audit chain of everything the agent did. Full design rationale in ADR 0001.
Before an assistant can act on a channel you need, once per channel:
get_analytics) enabled.client_secret.json.The OAuth grant is interactive and only happens here β tubekit stores the
resulting refresh token Fernet-encrypted and never prints it. Never used
Google Cloud Console? docs/runbooks/gcp-setup.md
walks the whole thing from zero (project, APIs, consent screen, client type,
and the two Google policies β token expiry in testing, private-locked uploads
for unaudited projects β that surprise people later). The consent flows
themselves are in
docs/runbooks/oauth-bootstrap.md.
From PyPI:
Use uv tool install, not uvx, for a real setup: the one-time steps below need
the tubekit CLI to still be there afterwards. uvx tubekit-mcp runs the stdio
server from a throwaway environment, which is what an MCP client's config points
at once the setup is done.
The server will not start yet, and that is deliberate β it refuses to run without a master key rather than inventing one, since that key is what encrypts your OAuth tokens at rest. One-time setup below is the two commands that fix it.
Or from source, for development:
(uv itself installs with curl -LsSf https://astral.sh/uv/install.sh | sh.)
The compliance engine is pure-local, so you can watch the gate and its
self-correction Suggestions work before touching Google Cloud:
An error-severity violation β say a 126-character title β fails the gate with
exit 1 and a machine-applicable fix (suggestion: action=truncate field=metadata.title value=100). That is the same Suggestion an agent
receives from a rejected upload_video and applies before retrying (ADR D8).
tubekit compliance list prints the rule catalog; tubekit compliance manifest exports it for external auditors.
Rather not type the commands above yourself? Paste the block below into Claude
Code (or any coding agent with shell access) and it will clone, install and
register the server for you. It stops at the boundary above: no Google
account, client_secret.json or OAuth consent is involved.
Restart your MCP client after registration; it can now call tubekit.health()
and list the full tool catalog. Every tool that takes a channel argument β
validate_compliance included β needs a configured channel, which means
completing One-time setup β including the OAuth consent in
docs/runbooks/oauth-bootstrap.md β
yourself. The compliance gate itself is testable without any channel via
step 3's tubekit compliance test.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/tubekit)<a href="https://allmcps.com/mcp/tubekit"><img src="https://allmcps.com/api/badge/tubekit?style=directory" alt="Tubekit on AllMCPs" /></a>