YouTube MCP server for Windsurf (Devin Desktop)
Windsurf is now called Devin Desktop. Add one entry to its MCP config and Cascade can read transcripts, search YouTube and list channels while it works.
https://youtubetranscriptapi.com/mcpWhat you need
- Devin Desktop, formerly Windsurf. Its docs moved from docs.windsurf.com to docs.devin.ai.
- On Teams and Enterprise, admins can limit which MCP servers are allowed, and Enterprise users switch MCP on themselves.
- An API key from Dashboard → API Keys (or sign in instead, where the app supports it). New accounts get 100 free credits.
Connect Windsurf
Open the MCP config
In the Cascade panel, open the ••• menu → MCPs → Open MCP config. The file is
~/.config/devin/mcp_config.json(%APPDATA%\devin\mcp_config.jsonon Windows).Add the server
json{ "mcpServers": { "youtube": { "serverUrl": "https://youtubetranscriptapi.com/mcp", "headers": { "Authorization": "Bearer ${env:YTT_API_KEY}" } } } }Use
serverUrl. Devin Desktop ignores a server with the wrong field name without showing an error.Set the key and reload
Set
YTT_API_KEYin the environment Devin Desktop starts from, then refresh the MCP list. To sign in instead of using a key, leave outheadersand connect from the MCP panel.
Devin Local and the Devin CLI
The Devin Local agent and the CLI read the same user file, plus .devin/mcp_config.json in a project (and .devin/mcp_config.local.json for secrets you don't commit). From the CLI:
devin mcp add youtube https://youtubetranscriptapi.com/mcpthen devin mcp login youtube to sign in. The CLI's file format uses url with "transport": "http".
Try this prompt
Use the youtube tools to get the transcript of <a YouTube link> and turn it into a checklist of the steps it shows.
Cascade calls get_transcript. 1 credit.
What each call costs
| Tool | What it does | Cost |
|---|---|---|
| get_transcript | Read what's said in any public video | 1 credit |
| search_youtube | Search YouTube for videos or channels | 4 credits |
| search_channel | Search one channel's videos for a topic | 1 credit |
| list_channel_videos | List a channel's latest 100 uploads | 20 credits |
| get_latest_videos | See a channel's 15 newest videos | Free |
| resolve_channel | Turn an @handle into a channel ID | Free |
| list_playlist_videos | List the videos in a playlist | 20 credits |
- Failed calls are never charged: a video without captions, a bad link, a timeout.
- A long transcript comes back in parts. Later parts, and reading the same video again within 24 hours, cost nothing.
- Free tools still need a balance of at least 1 credit.
- New accounts get 100 free credits, no card needed. See plans.
If something doesn't work
›The server doesn't show up
Check the field is serverUrl, not url, and that the JSON is valid. Then refresh the MCP list.
›401 Unauthorized
${env:YTT_API_KEY} only works if the variable is set where Devin Desktop starts. Restart it after setting the variable.
›MCP is disabled
On Teams and Enterprise an admin controls MCP and may need to add this server to the allowlist.
›It says I've run out of credits
The app shows our message with a link to billing. Free tools such as get_latest_videos need at least 1 credit too. Calls that fail are never charged.
›"Transcript unavailable" for a video
The video has no captions, is private, or was removed. Nothing is charged. Try another language with “use the Spanish captions”, for example, if the video has captions in a different language.
Disconnect
Revoke the key in Dashboard → API Keys. If you signed in instead, use Dashboard → Connected apps.
Windsurf changes its menus from time to time. We checked these steps on 18 October 2026 against Devin Desktop MCP docs, Devin's MCP overview and Devin CLI MCP configuration. If something looks different, the app has probably moved it; tell us through the contact form.
Product names and logos belong to their owners and are shown only to say which apps this works with. YouTubeTranscriptAPI isn't affiliated with or endorsed by them.
Ready to connect Windsurf?
Create a free account first if you like: it comes with 100 credits, enough for about 100 transcripts.