How to Connect Claude Desktop to a YouTube MCP Server
Claude Desktop reaches the Prepublish YouTube script audit two ways: a custom connector under Customize then Connectors, or npx -y prepublish-mcp in claude_desktop_config.json. The connector needs no file and no key, and the file route is the one that runs the server on your own machine.
TL;DR
Add Prepublish as a custom connector in Claude Desktop under Customize then Connectors and paste https://mcp.prepublish.ai. No file, no account and no key are needed. For a local process, put npx -y prepublish-mcp in claude_desktop_config.json instead and restart the app. Six tools cover a full script audit, a hook score, a reused-content check, a policy pre-flight, audit collection and words to runtime.
Try it on your own script
Paste your draft below. You get your hook, structure, and pacing scores, a script-level attention-risk map, and the single biggest issue quoted from your own lines. Free, no login.
Free · No login · See a sample audit first if you prefer.
Key Takeaways
- Claude Desktop connects as a custom connector under Customize then Connectors, and Free plans allow one custom connector
- A remote connector connects from Anthropic's cloud rather than your machine, so the endpoint has to be reachable over the public internet
- The config file route needs the stdio bridge, npx -y prepublish-mcp, and the file is read only when Claude Desktop starts
- The server refuses a present but unlisted Origin with a 403, and an unsupported MCP-Protocol-Version header with a 400, both before any tool call
- script_runtime needs no email address and consumes no allowance, so it is the fastest way to prove the connection works
- The free tier is 100 AI-backed anonymous calls per UTC day across the endpoint and 6 per caller per 10 minutes, published in prepublish-fe/lib/mcp/limits.ts
Key Statistics
- •The Claude Desktop connector list is at Customize then Connectors, and Anthropic states that Free plans are limited to one custom connector (https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp, read 2026-09-21).
- •A remote connector in any Claude client makes its connection from Anthropic's cloud infrastructure rather than from the user's machine (https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp, read 2026-09-21).
- •The local config file is read at launch, at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS and %APPDATA%/Claude/claude_desktop_config.json on Windows (https://modelcontextprotocol.io/docs/2026-07-28/develop/connect-local-servers, read 2026-09-21).
- •The default free tier is 100 AI-backed anonymous calls per UTC day across the whole endpoint and 6 per anonymous caller per 10 minutes (prepublish-fe/lib/mcp/limits.ts).
In This Guide
- How to Connect Claude Desktop to a YouTube MCP Server
- The connector click path, and where the connection actually runs
- The local file: claude_desktop_config.json
- The hosted URL or the stdio bridge, and which one Claude Desktop needs
- What Claude Desktop sees, and what the server answers when something is wrong
- A first run: the prompt to type and what comes back
- Limits on the Claude Desktop connection
How to Connect Claude Desktop to a YouTube MCP Server
Prepublish serves a YouTube script audit over the Model Context Protocol at https://mcp.prepublish.ai. Claude Desktop connects to it two ways: as a remote custom connector, which needs no file and no key, or through the local config file with the npx -y prepublish-mcp bridge. Start with the connector. It takes one paste and reaches the same six tools as every other client.
The server audits a script you have written but not recorded. The shared reference, including the six tools and the published limits, is the Claude Code hub guide. This page covers what is specific to Claude Desktop.
The connector click path, and where the connection actually runs
Open Claude Desktop, click Customize in the sidebar, then Connectors, then the + button and Add custom connector. Paste https://mcp.prepublish.ai and click Add. On a Team or Enterprise plan an Owner adds it once for the organization under Organization settings > Connectors > Add > Custom > Web, and each member then connects to it from Customize > Connectors. Both paths are described in Anthropic's article Get started with custom connectors using remote MCP, read on 2026-09-21.
Prepublish needs no OAuth, so leave the optional Advanced settings fields empty. The same article states that Free plans are limited to one custom connector, so if that slot is taken, remove the other connector or use the local file route instead. Enable it per conversation from the + button at the lower left of the chat, then Connectors.
One property of connectors decides whether this route works for you. Anthropic's article states that Claude connects to a custom connector from Anthropic's cloud infrastructure rather than from your machine, in every Claude client, so a server behind a firewall will not connect even when your own browser can reach it. https://mcp.prepublish.ai is public, so the hosted route works. The same article notes that local servers configured in claude_desktop_config.json use your local network instead, and are not available in Cowork or claude.ai.
The local file: claude_desktop_config.json
Use the file when you want the server process on your own machine or the connector route is unavailable on your plan. The click path is in the Model Context Protocol documentation Connect to local MCP servers, read on 2026-09-21: open the Claude menu in the system menu bar, choose Settings, then the Developer tab, then Edit Config. That opens the file, or creates it when it does not exist.
The documented locations are ~/Library/Application Support/Claude/claude_desktop_config.json on macOS and %APPDATA%\Claude\claude_desktop_config.json on Windows. Put this block inside it:
{
"mcpServers": {
"prepublish": {
"command": "npx",
"args": ["-y", "prepublish-mcp"]
}
}
}
Then quit Claude Desktop completely and start it again. That page is explicit that the file is read at launch and that invalid JSON fails without a visible error, which is the most common reason a server never appears.
If it still does not appear, the same page names the logs: ~/Library/Logs/Claude on macOS and %APPDATA%\Claude\logs on Windows, with mcp.log for connection events and mcp-server-prepublish.log for this server's stderr. It also lists the steps: restart the app, check the file syntax, and make every path absolute.
Anthropic also ships desktop extensions, a packaged local route installed as an .mcpb file from Settings > Extensions, or from Advanced settings > Extension Developer > Install Extension (Getting Started with Local MCP Servers on Claude Desktop, read on 2026-09-21). Prepublish does not ship an .mcpb bundle, so your two routes are the connector and the JSON file above.
The hosted URL or the stdio bridge, and which one Claude Desktop needs
The hosted URL and the bridge are not two servers. https://mcp.prepublish.ai is a stateless Streamable HTTP endpoint that answers one JSON-RPC message per POST. The bridge, published on npm as prepublish-mcp, is a local process that connects to that same endpoint and re-serves the result over stdio, the transport a desktop app uses when it launches a subprocess. prepublish-mcp/test/bridge.test.ts asserts that the bridge's sorted tool names equal the six names in the hosted list, so the two cannot drift apart.
The choice for Claude Desktop follows from the two mechanisms above.
- The connector route takes a URL and nothing else. Use it unless the next two conditions apply.
- The config file route can only launch a command, so it needs the bridge: the
npx -y prepublish-mcpentry above. - Use the bridge when the audit has to leave from your own network, because a custom connector connects from Anthropic's cloud.
The bridge needs Node 20 or newer, per the engines field in prepublish-mcp/package.json. On startup it writes one line to stderr naming the upstream URL, the tool count and whether a token was supplied, which is the fastest way to confirm that it launched and reached the server. PREPUBLISH_MCP_URL points it at another deployment, and PREPUBLISH_TOKEN forwards an Authorization: Bearer header upstream, which is how a pp_live_ API key travels.
What Claude Desktop sees, and what the server answers when something is wrong
Claude Desktop lists six tools from tools/list: audit_script for a finished draft, get_audit to collect one by id, audit_hook for an opening, check_authenticity for reused-content signals, policy_preflight against YouTube policy categories, and script_runtime for words-to-runtime arithmetic. The hub guide and the MCP server documentation cover them in full.
When a call fails, the message is the diagnosis. The strings below come from the server's own code.
| What you see | What produced it |
|---|---|
Origin "https://example.com" may not connect to this MCP endpoint | The request carried an Origin header the deployment does not list. Revision 2025-11-25 of the transport requires this 403 to prevent DNS rebinding (prepublish-fe/app/mcp/route.ts) |
Unsupported MCP-Protocol-Version "2024-10-07" | A request declared a revision this server does not implement. The response body also lists the supported revisions, and a current client negotiates instead of hitting this |
Request body is not valid JSON | An inspector or a script sent a body that did not parse (prepublish-fe/app/mcp/route.ts) |
Unknown tool "no_such_tool" | The name was misspelled, or the client is holding a stale tool list. Re-run tools/list and use a name from the response |
Method "resources/read" is not implemented by this server | This server declares the tools capability only. resources/list and prompts/list answer with empty arrays, and every other method falls through to this error |
Prepublish's free MCP endpoint has reached its daily limit of 100 AI-backed calls (it resets at 00:00 UTC). ... | The shared anonymous counter for the UTC day is spent (prepublish-fe/lib/mcp/limits.ts) |
This connection has used its 6 free Prepublish AI checks for now; the allowance resets in about N minute(s). ... | Six AI-backed calls arrived from one caller inside ten minutes |
Prepublish needs an email address to continue: ... | A free full audit is released by email, and the backend rejected the request without an address |
Two of those are transport-level, so no MCP call was made: the origin and protocol-version refusals. The rest are tool-level errors that arrive inside the conversation, so the model reads them and can tell you what to do next. A request that carries no Origin header is allowed, and the 403 fires only for a present, unlisted origin. A connector that was added but not enabled for the current conversation does not appear in the tool list at all, so check the + then Connectors toggles before you debug the endpoint.
A first run: the prompt to type and what comes back
Start with script_runtime, which consumes no allowance and proves the connection end to end. Type this with the connector enabled:
How many words do I need for a twelve minute video, and how long would a 2,400 word script run?
The tool returns a JSON object with these fields, all written by prepublish-fe/lib/mcp/tools.ts: speaking_rates_words_per_minute with fast, median and slow, a source string, a caveat string, word_count, runtime_minutes and word_budget, the last two each carrying the same three keys. The rates are the measured ones in prepublish-fe/lib/seo/wpm-data.ts. Run the arithmetic on them and a 2,400 word script is 15 minutes at 160 words per minute, 13.3 at 181 and 11.9 at 201, while twelve minutes needs 1,920 words at the slow rate, 2,172 at the median and 2,412 at the fast rate. The caveat field carries the limit in the payload itself: speaking time only, with pauses, B-roll, demonstrations and edits adding time.
Then try the check the audit is built around. Paste an opening and ask:
Score this opening and name the sentence that loses people first: "Most creators lose half their viewers in the first fifteen seconds, and the reason is rarely the editing."
audit_hook takes hook_text, an optional niche and an optional email, and returns a hook object with evaluation_id, hook_text, niche, overall_score, grade, one_sentence_verdict, sentences, top_issues, rewrites, model_used and created_at. Each entry in sentences carries its own attention read, so the answer is anchored to your lines. This one counts against the allowance.
Both payloads repeat the same constraint, and Claude Desktop shows it because it is part of the response: "This is a text-only check of an unrecorded script. It maps relative attention risk inside the draft. It does not measure or predict published YouTube retention, and it cannot account for delivery, editing, thumbnail, topic or distribution."
Limits on the Claude Desktop connection
The check reads text. It does not watch a video, fetch a transcript or read your channel, and every number is a relative read on the draft rather than a forecast of what an audience will do.
All three counters come from prepublish-fe/lib/mcp/limits.ts, and the values in force are in the server card at https://mcp.prepublish.ai.
| Limit | Default | Window |
|---|---|---|
| AI-backed anonymous calls across the whole endpoint | 100 | One UTC day |
| AI-backed anonymous calls per caller | 6 | 10 minutes |
| AI-backed calls per authenticated caller | 30 | 10 minutes |
script_runtime | Unlimited | None |
A full audit is released by email, so audit_script asks for an address and the backend rejects a request without one. The narrower checks do not ask. An optional pp_live_ API key, created at prepublish.ai/dashboard, takes the call out of the shared daily cap.
Frequently asked questions
How do I connect Claude Desktop to a YouTube MCP server?
Add it as a custom connector: open Customize, then Connectors, click the plus button, choose Add custom connector, paste https://mcp.prepublish.ai and click Add. Prepublish needs no OAuth, so the optional Advanced settings fields stay empty. Then enable it for a conversation from the plus button, under Connectors. Anthropic's article Get started with custom connectors using remote MCP describes the same steps, read on 2026-09-21.
Claude Desktop YouTube MCP setup: do I need the config file at all?
No. The config file is only for the local route, where Claude Desktop launches npx -y prepublish-mcp on your machine. The connector route takes a URL and nothing else, reaches the same six tools, and needs no Node installation. Use the file when you want the process local, or when the Free plan connector slot is taken.
Why does my custom connector not appear in Claude Desktop?
Check two things in order. First, whether the connector is enabled for the current conversation, because connectors are toggled per conversation from the plus button then Connectors. Second, whether the endpoint is reachable from the public internet, because a custom connector connects from Anthropic's cloud and a server behind a firewall will not be reached from there. If you used the config file, quit the app completely and reopen it, because the file is read only at launch.
What is the difference between claude_desktop_config.json and a connector?
A connector is stored in your Claude account and its connection is made from Anthropic's cloud. The config file is stored on your machine, is read when Claude Desktop starts, and launches npx -y prepublish-mcp as a local process forwarding to the same endpoint. Anthropic's article notes the consequence: local servers configured in the file are a separate mechanism and are not available in Cowork or claude.ai.
Does the YouTube MCP server work on the free Claude plan?
Yes, with one caveat that belongs to Anthropic: the connectors article states that Free plans are limited to one custom connector. Prepublish itself needs no account, no API key and no card. The server's free tier is published in prepublish-fe/lib/mcp/limits.ts, and script_runtime consumes none of it.
What happens when the free daily cap is reached?
The tool returns an error that begins Prepublish's free MCP endpoint has reached its daily limit of 100 AI-backed calls and it resets at 00:00 UTC, and it tells the model not to retry. The per-caller message is separate: This connection has used its 6 free Prepublish AI checks for now, with the reset time in minutes. Both are tool-level errors, so the text appears in the conversation rather than as a transport failure.
Is the audit a retention forecast?
No. Every AI-backed payload carries the same sentence: it is a text-only check of an unrecorded script, it maps relative attention risk inside the draft, and it does not measure or predict published YouTube retention. It cannot account for delivery, editing, thumbnail, topic or distribution. A flagged passage is a line to revise before recording, not a forecast of a YouTube Studio number.
Can it audit a video that is already published?
No. All six tools take text you paste: the script, the hook, the policy draft. Nothing fetches a video, a transcript or a channel. To line the check up with real viewer behaviour, compare the flagged passages against your own YouTube Studio curve after publishing.
Related Guides
Free tools to put this into practice
Hook Analyzer
Score your first 1-3 sentences
Title Analyzer
Writing rubric + 5 rewrites
Words to Minutes
Script length calculator
Word Counter
Count, reading time, duration
Want to see how this reads on real channels? Browse the channel breakdowns. Each one compares script patterns across a channel's own higher-viewed and lower-viewed uploads, quoted from the transcripts.
See where your next script leaks viewers
Paste your script, get your scores and the biggest leak for free. No login.