vimeo-mcp
Vimeo MCP
Vimeo MCP connects your video library to Claude, Cursor, and any other AI agent. It reads transcripts, files videos into folders in bulk, curates showcases, writes chapters and captions, and manages tags, privacy and embed presets.
There are 43 tools, and the bulk folder operations are the point of them. Vimeo moves videos between folders one at a time, so refiling a back catalog of hundreds is hundreds of drags. Here it is one call that takes up to 100 videos.
Built by Navid Moazzez.
Contents
Section | ||
1 | Real prompts, not features | |
2 | Node, one command | |
3 | Getting a token, and the scopes that matter | |
4 | Every client, copy and paste | |
5 |
| |
6 | Tokens per turn, and how to spend less | |
7 | All 43 | |
8 | What is guarded, what is not | |
9 | The things that surprise people | |
10 | Which one you want, and when | |
11 | What is stored, and where | |
12 | Symptom to cause | |
13 | Start here if you are new | |
14 | Every release |
1. What you can ask it 💬
"What's in my Vimeo library, and how much of it is unfiled?"
"Read the transcript of the affiliate marketing workshop and write show notes."
"Generate chapter markers for that talk from its transcript and add them."
"Move every video with 'Workshop' in the title into the Workshops folder."
"Which videos are set to public that shouldn't be?"
"Build a showcase called Bootcamp 2026 and add these eight videos to it."
"Add English captions to this video from the VTT file I just made."
"How many plays does each video in the AI for Creators folder have?"
"Pull the download link for the original file of video 1096473192."
"Which of my videos have no tags?"
The one that is impossible without this is filing a back catalog.
add_videos_to_folder takes up to 100 ids in a single call, so reorganizing a
library of hundreds of videos is one request rather than hundreds of drags.
2. Quick install ⚡
You need Node 20 or newer, and nothing else.
npx -y @thenavidm/vimeo-mcp --versionThat is the whole install. npx fetches it on demand, so there is nothing to
update later.
3. Setup 🔑
You need a Vimeo personal access token.
Read this before you generate one. A token's scopes are fixed the moment it is created and cannot be changed afterwards. If you miss a box, the only fix is to generate a new token. Two are off by default and are the ones people miss:
Scope | Without it |
| Every delete tool fails, with an error that never mentions scopes |
| Download links come back empty, so original files are unreachable |
Have an agent do it
The agent cannot sign in to Vimeo for you. Only you can create the token. What it can do is walk you through it, wire up the config and verify the connection.
Paste this into Claude Code, Cursor, or any agent with terminal access:
Help me set up the Vimeo MCP server.
1. Tell me how to create a Vimeo personal access token, and which scopes to
tick. Then stop and wait: I will paste the token back to you.
2. Once I give you the token, add the server to my MCP client config with the
token in the env block.
3. Run the doctor command and tell me what it says about my scopes and plan.Or do it yourself
Go to https://developer.vimeo.com/apps and sign in.
Create an app, or open one you already have.
Open the app's Authentication section.
Generate a personal access token.
Tick the scopes.
public,private,edit,create,interactanduploadcover everyday use. Adddeletefor the delete tools andvideo_filesfor download links.statsonly does something on a paid plan.Copy the token immediately. Vimeo shows it once.
To revoke it
Go back to the same Authentication section and delete the token. It stops working at once, everywhere it is configured.
4. Connect your client 🔌
The long version, every step with what to do when one fails, is in INSTALL.md.
Claude Code
claude mcp add vimeo \
-e VIMEO_PAT=your_token_here \
-- npx -y @thenavidm/vimeo-mcp@latestAdd --scope user to make it available in every project rather than just this one.
Claude Desktop
Platform | Config path |
macOS |
|
Windows |
|
{
"mcpServers": {
"vimeo": {
"command": "npx",
"args": ["-y", "@thenavidm/vimeo-mcp@latest"],
"env": { "VIMEO_PAT": "your_token_here" }
}
}
}Tip Claude Desktop does not inherit your shell PATH. If
npxis not found, use the absolute path fromwhich npx.
Quit Claude Desktop completely and reopen it.
claude.ai on the web
claude.ai runs connectors from Anthropic's cloud, not from your machine, so it needs a public HTTPS URL rather than a local command.
npx -y @thenavidm/vimeo-mcp@latest --http --port 8000Host that behind a public HTTPS URL, set VIMEO_HTTP_TOKEN to a secret of your
choosing, then in claude.ai go to Customize, Connectors, +, Add custom
connector, and paste the URL.
Cursor
Cursor reads .cursor/mcp.json, which takes the same JSON shape as Claude
Desktop under the key mcpServers.
Windsurf
Windsurf reads ~/.codeium/windsurf/mcp_config.json under the key mcpServers.
VS Code
VS Code reads .vscode/mcp.json, where the key is servers rather than
mcpServers, and each entry takes "type": "stdio".
Codex CLI
Codex CLI reads ~/.codex/config.toml:
[mcp_servers.vimeo]
command = "npx"
args = ["-y", "@thenavidm/vimeo-mcp@latest"]
[mcp_servers.vimeo.env]
VIMEO_PAT = "your_token_here"Gemini CLI
Gemini CLI reads ~/.gemini/settings.json under the key mcpServers.
Everything else
Any stdio MCP client takes the same three things: the command npx, the args,
and the env block.
5. Check it worked 🩺
VIMEO_PAT=your_token npx -y @thenavidm/vimeo-mcp@latest doctorIt prints the account, the plan, every scope the token holds, and names any tool that a missing scope disables. Both of the things that actually go wrong show up here.
6. What it costs to have connected
Every MCP server sends its whole tool list to the model on every turn, whether you mention it or not. Measured on this one:
Sent per turn | |
43 tool definitions, plus the server instructions | ~8,000 tokens |
That is the price of it being connected at all, before you ask anything. It is not unusual, and almost nobody publishes it.
Two ways to spend less.
Turn it off when you are not using it. In Claude Code that is
@vimeo to toggle, and every client has an equivalent.
Or reach for a shell instead. A command is not in the context window, so it costs nothing on the turns you do not use it. It is not free either: an agent still needs the skill file, roughly 1,591 tokens, but only once the subject comes up rather than on every turn regardless.
7. Tools 🛠️
There are 43 tools, of which 17 are reads, and those are the only ones that
remain under VIMEO_READ_ONLY=1.
Videos
Tool | What it does |
| List your library, optionally filtered to one folder |
| Full detail on one video |
| Search your own library by title and description |
| Change title, description or privacy |
| Permanently delete. Needs |
| Upload by giving Vimeo a public URL to pull. Needs |
| Direct URLs for source and rendered files. Needs |
| Set the poster frame from a timecode. Needs |
Folders
Tool | What it does |
| Your folders with video counts |
| One folder and what is in it |
| Needs |
| Rename |
| Needs |
| Up to 100 videos in one call |
| Up to 100 in one call. Unfiles by default |
Showcases
Tool | What it does |
| Your showcases with video counts |
| One showcase and its videos in curated order |
| Needs |
| Name, description, privacy, sort order |
| Needs |
| Adds a reference, does not move the video |
| Removes the reference only |
Chapters
Tool | What it does |
| Chapters in timecode order |
| Add a marker at a timecode |
| Retitle it or move it |
| Needs |
Captions and transcripts
Tool | What it does |
| Caption tracks and their languages |
| The transcript as plain text, or raw WebVTT |
| Add captions from WebVTT you supply. Needs |
| Rename, change language, or set active |
| Needs |
Comments
Tool | What it does |
| Comments, wrapped as untrusted text |
| Post publicly as you. Needs |
| Edit your own |
| Needs |
Account, stats and settings
Tool | What it does |
| Account, plan, storage and the token's scopes |
| Lifetime plays, comments and likes. Every plan |
| Views over time and finish rate. Paid plans only |
| Replace a video's tags |
| Who can watch and embed, plus the domain whitelist |
| Allow one domain to embed |
| Your saved player presets |
| Apply one to a video |
8. Writing safely ✍️
Writes work by default. Organizing a library is the point of the tool.
Seven tools refuse to run without confirm: true: the six deletes, and
add_comment, because a comment is visible to everyone who can see the video
the moment it posts. Nothing else is gated, because moving a video between
folders or editing a title is one call to undo, and confirming everything
teaches a model to confirm reflexively.
Two flags deserve their own mention. delete_videos_too on delete_folder and
remove_videos_from_folder destroys videos rather than unfiling them. Both
default to false and both route through the confirm path when set.
Setting | Effect |
| Write tools are not registered at all. 17 tools remain |
| Keeps ordinary writes, blocks deletes and comments |
| One JSON line per attempted write, allowed and blocked |
|
|
| |
Reads | true | false | true |
Reversible writes | false | false | true |
Deletes and comments | false | true | false |
Comment text is written by other people and can contain instructions aimed at
whatever reads it. Every comment comes back wrapped and labeled as
viewer-authored data, which helps and is not a guarantee. For an agent working
unattended on other people's content, VIMEO_READ_ONLY=1 is the real defence.
9. How Vimeo actually behaves 🎬
Scopes are frozen at creation. A token cannot gain a scope later. delete
and video_files are both off by default, and Vimeo's 403 does not name the
missing scope, so a failing delete looks like a missing video. doctor names it.
A 404 can mean "your plan does not include this". Analytics and teams both
answer 404 rather than 402 on a free account. get_video_analytics translates
that into a plain sentence instead of passing the confusion along.
Two things are called analytics. stats.plays is a lifetime counter on
every plan. The analytics API is views over time and finish rate, on paid plans.
A video lives in exactly one folder. Adding it to a folder moves it. A showcase is different: any video can be in any number of showcases, and adding it there moves nothing.
Vimeo expands nested objects in full. Asking for a video's parent_folder
returns the folder, its owner, that owner's avatar in nine sizes and their
upload quota, about two kilobytes to learn a folder name. This server always
requests specific leaf fields, which is why its output is small.
The bulk endpoints are inconsistent. Folder add and remove take the video
list as a uris query parameter. The showcase bulk endpoint takes a videos
body field and it replaces the showcase contents rather than appending, which is
why this server does not expose it: adding to a showcase goes one video at a
time so a curated list cannot be wiped by accident.
Transcripts are two requests. The API returns caption metadata with a link, and the text lives at that link on a CDN. The link is signed and short-lived, so it cannot be cached or handed to someone to open later.
Uploads are asynchronous. upload_video returns a video id straight away
while transcoding continues. Watch status on get_video until it reads
available.
10. This and Vimeo's own connector ⚖️
Vimeo publishes its own hosted MCP connector at mcp.vimeo.com. It is good, it
is free with a Pro plan, and for a lot of people it is the right choice. Here is
the honest split, so you can pick rather than guess.
Use Vimeo's if you want analytics or their AI features. It has viewer retention curves and retention insights, AI video summaries, semantic search inside a video, teams, staff picks, and an editing and render pipeline. None of that is reachable through the public API, so nothing here can match it.
Use this one if you want to change your library rather than read it.
This | Vimeo's | |
Runs | Locally, your own token | Hosted by Vimeo, OAuth |
Plan needed | Any, including free | Pro or above |
Delete videos | Yes, guarded | No, blocked by design |
Upload videos | Yes | No upload tool |
Create and rename folders | Yes | Read only |
Move videos between folders | Yes, 100 per call | No |
Showcase create, edit, delete | Yes | Create and update only |
Chapters | Add, edit, delete | Add and read |
Captions | Upload, edit, delete | Read |
Comments | Post, edit, delete | Read |
Tags, embed presets, domain whitelist | Yes | No |
Original file downloads | Yes, with | No |
Viewer retention analytics | No | Yes |
AI summaries, moment search, editing | No | Yes |
They are not rivals and nothing stops you running both. Theirs answers what happened to a video. This one changes what the library looks like.
11. Your data 📂
There is no backend. This server runs on your machine and talks to
api.vimeo.com directly.
It stores nothing: there is no session file, no cache and no database. The only file it ever
writes is the audit log, and only when you set VIMEO_AUDIT_LOG to a path. That
file holds a timestamp, a tool name and a one-line summary per attempted write,
and it is created with 0600 permissions.
Your token lives wherever you put it, which is your MCP client's config file. Nothing else is transmitted anywhere.
12. Troubleshooting 🔧
Run doctor first. It catches most of this.
Symptom | Cause |
Every delete fails with a permission error | The token lacks the |
| The token lacks |
| The account is on a free plan. |
A video "does not exist" but you can see it on vimeo.com | Usually a scope problem rather than a missing video. Check |
A just-uploaded video will not play | Still transcoding. Watch |
A video vanished from its folder |
|
| Desktop does not inherit your shell PATH. Use the full path from |
Rate limited on a bulk job | Raise |
13. FAQ ❓
An MCP server is a standard way to give an AI assistant real access to a tool, so it can act rather than guess. You install it once, your assistant gains the tools, and it works in Claude, Cursor, ChatGPT and anything else that speaks MCP.
Vimeo is a video hosting platform. People use it for work that needs to look professional and stay private: course content, client work, internal training, webinars. Unlike a public video site, you control exactly who can watch each video and which sites are allowed to embed it.
You need to paste a token into a config file once. The setup section has a prompt you can hand to an agent that will do the config part for you. After that you talk to it in plain language.
There is no backend and nothing is collected. The server runs on your machine and talks to Vimeo's API directly. Whatever you ask your AI assistant is governed by that assistant's own privacy terms, not by this server.
It does bulk work, mostly. Filing a hundred videos into folders is one call here and a hundred drags in the web app. Reading a transcript and turning it into chapter markers is a normal request here and manual work there. Everything it does is something the Vimeo API allows.
Deleting is guarded twice. Six tools cannot run without confirm: true:
delete_video, delete_folder, delete_showcase, delete_chapter,
delete_texttrack and delete_comment. On top of that, most tokens do not hold
the delete scope, so those tools fail outright unless you deliberately ticked
that box.
The one to watch is delete_videos_too, an option on delete_folder and
remove_videos_from_folder that destroys videos instead of unfiling them. It
defaults to false and needs a confirm when set. If you want no risk at all, run
with VIMEO_READ_ONLY=1.
They do different jobs. Vimeo's is hosted, needs a Pro plan, and is built for reading: viewer retention, AI summaries, moment search and their editing pipeline. It deliberately cannot delete anything, cannot upload, and cannot write to folders.
This one runs locally on any plan including free, and is built for changing a library: uploading, deleting, moving videos between folders in bulk, writing chapters and captions, managing tags and embed presets.
If you want to know how a video performed, use theirs. If you want to reorganize a library, use this. Running both is fine. Section 9 has the full table.
The server is free and MIT licensed. You need a Vimeo account, and Vimeo's own plan limits apply: analytics and teams need a paid plan, and upload limits depend on your tier.
It works with any client that speaks MCP. Configs for Claude Code, Claude Desktop, claude.ai, Cursor, Windsurf, VS Code, Codex CLI and Gemini CLI are all in section 4.
You cannot do it in one server instance, because a token belongs to one account. To use two, add the server twice under different names with a different token in each.
Vimeo personal access tokens do not expire on a timer. They stop working when
you revoke them, or when the app they belong to is deleted. If calls suddenly
fail with an authentication error, run doctor.
Remove the server from your MCP client's config, then delete the token in your app's Authentication section at developer.vimeo.com. The second step matters: removing the config stops this server using it, revoking it stops anything using it.
14. What changed 📋
Every release is in CHANGELOG.md, newest first.
Questions
Run into a problem or have a question? Open an issue and I will help.
About the author
Navid Moazzez is a leading AI business strategist, and the host of the AI Creator Summit, watched by 100,000+ creators. He helps creators and founders master AI and build their own AI Operating System (AI OS) to automate their business and life. This MCP server is one piece of that system.
Links
Personal website: navid.me
Link in bio: navid.bio
Navid Media: navid.media
YouTube: @thenavidm and @thenavidai
X: @thenavidm
Instagram: @thenavidm
LinkedIn: thenavidm
If this is useful, star the repo and come say hi on X.
Dependencies
Package | License | Why |
MIT | The MCP protocol implementation | |
MIT | Tool input schemas and validation |
License
MIT. Free to use, modify, and share.
Not affiliated with, endorsed by, or connected to Vimeo.com, Inc. Vimeo is a trademark of Vimeo.com, Inc.
© 2026 NM Media. Made with ❤️ by Navid Moazzez.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/thenavidm/vimeo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server