How to connect YouTube to Claude, and how much to let it do
What is a YouTube MCP server?
MCP, the Model Context Protocol, is how Claude reaches tools outside itself. The specification encodes every message as JSON-RPC and defines two standard ways to carry them: stdio, where your client starts the server as a process on your own machine, and Streamable HTTP, where the server lives at a URL somewhere else. A YouTube MCP server is any server whose tools are about YouTube. They look alike in a list of connectors and differ enormously in what they can touch.
The three kinds
- Transcript readers. Give one a link and it hands Claude what the video says, so Claude can summarise it, quote it or compare it with another. It works on videos rather than on your channel, so there is nothing of yours for it to change.
- Analytics connectors. You sign in with Google and it reads your channel’s numbers: views, subscribers, which videos did what. It reads by nature. The question worth asking of one is what it keeps and for how long, not what it might do.
- Channel servers that can act. These change things: a title, a publish time, a playlist, and on some servers an upload or a deletion. This is the only kind where connecting it is a decision about your channel rather than about a tool.
Plenty of servers mix the kinds, which is fine. What matters is whether anything in the list can change your channel. A server that does all three is a channel server for the purposes of everything below.
Why does only the third kind need a permissions decision?
A transcript reader or an analytics connector can be wrong, and the cost is a bad summary or a misread number that you catch when you check it. A server that acts can be wrong in public. If Claude misunderstands which video you meant and the tool allows it, the wrong video gets a new title or a new publish time, and your audience may see the result before you do.
The other difference is who presses the button. With a tool you use by hand, every change is a click you chose. With an assistant, the model decides when to call a tool, from its reading of what you asked. So the useful decision is not whether each call is sensible, which you will not always see, but what the ceiling is: the most that any call could possibly do.
That is why the safe default is a key that reads and nothing else. A read-only connection answers most of the questions people connect for in the first place: what is scheduled, what went out, how the recent videos did. Use it like that for a while. When you find yourself wanting Claude to make one particular kind of change, allow that kind and no more. The irreversible actions, publishing immediately and deleting, deserve a separate question: whether any key should be able to do them at all.
What can a hosted server not do?
Upload a file from your computer. MCP carries JSON-RPC messages between your client and the server, and a hosted server runs on somebody else’s machine with no access to your disk, so there is no route by which a video sitting in your downloads folder reaches YouTube through it. A hosted server works on videos that are already uploaded: their titles and descriptions, their playlists, and their publish times, which on YouTube is all scheduling is. How to schedule a YouTube video explains why.
If a hosted server says it uploads, ask where the file comes from. It has to fetch the video from somewhere, which usually means you gave it to that service first and your unreleased video now sits on its storage. That is a legitimate design, but it is a different thing from connecting a tool, and worth choosing knowingly. A server that runs on your own machine over stdio can read your files, which is why uploading belongs to that kind of server when it exists at all.
Self-hosting means your own Google project and your own quota
If you run a YouTube server yourself, it talks to Google with credentials you create: a Google Cloud project with the YouTube Data API switched on, an OAuth client and a consent screen. The quota is yours as well. Google’s default allocation for a project is 100 video uploads, 100 searches and 10,000 units a day for everything else, where reading a list usually costs one unit and a write usually costs 50.
For one person that is usually plenty, and nobody else is spending it. The costs are elsewhere. You maintain the server, the Google credentials live on your machine, and an app that shows Google’s unverified-app screen is limited to 100 new users, which does not matter for an app with one user and matters a great deal for one you meant to share.
How do you add a YouTube MCP server to Claude Code?
A remote server is one command. The general form, from the Claude Code documentation, is claude mcp add --transport http <name> <url>, with a --header flag for servers that expect a key. For Runsheet it looks like this:
claude mcp add --transport http runsheet https://runsheet.buildifyapp.in/api/mcp --header "Authorization: Bearer rsk_live_your_key_here"Three things are worth knowing. The server is added to the current project for you alone unless you pass --scope: user makes it available in every project, and project writes it to a .mcp.json file shared with everyone in the project, which is the wrong place for a key. Inside Claude Code, /mcp shows what is connected, and claude mcp list does the same from the terminal. And the key in that command is a password: anybody holding it can do whatever the key allows.
Where Runsheet fits
Runsheet runs a hosted YouTube MCP server. It is the third kind, built around the default above:
- 21 tools, each behind one of 5 permissions: “Read”, “Write copy”, “Draw thumbnail artwork”, “Edit and schedule” and “Upload from this machine”.
- A new key reads and nothing else unless you tick more when you make it, and its permissions are fixed from then on. Wanting more means making a new key.
- No tool publishes a video immediately and none deletes one. Scheduling refuses any publish time less than fifteen minutes away, and the video stays private until YouTube itself publishes it.
- Only a SHA-256 hash of each key is stored, so the key is shown once and cannot be recovered afterwards.
- The drafting tools spend the same daily allowance as the website, 3 a day on Free, counted in one place.
- The toolkit is on every plan, Free included.
The hosted server cannot upload, for the reason above: the protocol has no file channel. Runsheet’s local server, runsheet-mcp, does it on your own machine. It runs with npx -y runsheet-mcp, streams the file from your disk straight to YouTube without it passing through Runsheet, and forwards every other tool to the hosted server. It is the only thing that uses the “Upload from this machine” permission.
Published 23 September 2026. Written by Kalpesh Mahida, who builds Runsheet.