Self-hosted MCP server exposing YouTube transcripts, search, comments and stats.
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"dreadster3-youtube-mcp","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# YouTube MCP Server A single-process [MCP](https://modelcontextprotocol.io) server that exposes public YouTube data — transcripts, search, video metadata and statistics, comments, channels, categories — as tools an LLM can call. It speaks **stdio**: any local agent (Claude Desktop, an editor plugin, a script) launches `youtube-mcp` as a subprocess and gets the tools over stdin/stdout. **No network exposure, no auth, no account** — just a YouTube Data API key. One Python process: FastMCP server, YouTube Data API client, transcript fetching and cache all live in the same application. No sidecar, no second service, no Redis. - **15 tools**, all namespaced `youtube_*`, read-only public data. - **stdio by default.** HTTP is available for a shared/deployed instance — see [Optional: HTTP mode / container](#optional-http-mode--container). - **API-key only.** No OAuth, no uploads, no channel management. - **Dislike counts do not exist.** YouTube made them private in December 2021; no endpoint returns them, and this server will not estimate them. --- ## Quick start ```bash git clone <this repo> && cd youtube-mcp uv sync # creates .venv from uv.lock export YOUTUBE_API_KEY=... # required — the server fails fast without it uv run youtube-mcp # speaks MCP on stdin/stdout ``` Point an MCP client at the published package — `uvx` fetches it from PyPI, so no local checkout is needed: ```json { "mcpServers": { "youtube": { "command": "uvx", "args": ["--from", "dreadster3-youtube-mcp", "youtube-mcp"], "env": { "YOUTUBE_API_KEY": "your-key-here" } } } } ``` The console script dispatches on `MCP_TRANSPORT`, which defaults to `stdio`: ```bash uv run youtube-mcp # stdio (default) MCP_TRANSPORT=http uv run youtube-mcp # streamable HTTP on 0.0.0.0:8088 ``` The cache is a local SQLite file (`DATABASE_PATH`, default `cache.db` in the working directory). It is **ephemeral by design*…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.