Vimeo MCP Server & CLI

A free, open source Vimeo MCP server and CLI that lets Claude Code, Codex, Cursor and other AI agents read transcripts and organize your Vimeo library.

Navid Moazzezby Navid Moazzez·Updated 30 sept. 2026·10 min read
~/vimeo-mcp-cli
$ claude
Claude Code v2.1.220
>
Rate this tool

This free Vimeo MCP server and CLI gives your AI real access to your Vimeo library: videos, folders, showcases, chapters, captions, comments and settings. It reads transcripts, files a back catalog into folders 100 videos at a time, builds showcases, and adds chapters and captions.

It's one install with 2 ways in. Claude, Codex, Cursor or any other MCP app calls its 43 tools for you, and the same tools work as a CLI that agents like Claude Code, Codex and OpenCode run, or that you type yourself.

Here's what the Vimeo MCP server and CLI is, how to set it up in each app, and every tool it has.

What is the Vimeo MCP server & CLI?

The Vimeo MCP server & CLI is a free, open source program that lets AI agents read and organize your Vimeo library for you, in 2 ways. The MCP server is what an AI app like Claude, Codex or Cursor connects to, through MCP (Model Context Protocol), the open standard AI apps use to call outside tools.

You ask in plain language. Your AI picks the right tool, and the server makes the call to Vimeo's API, with your own token.

The CLI is the same program as commands. vimeo-cli list-videos runs the same code your AI runs when you ask what's in your library, whether an agent like Claude Code runs it or you do.

What can you ask it?

Once it's set up, you ask the way you'd ask an assistant. These are real prompts it handles:

Try asking
What's in my Vimeo library, and how much of it is unfiled?
Read the transcript of the 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?
Which of my videos have no tags?

The fourth one shows why this is useful. Filing a back catalog on vimeo.com is one drag per video, and here it's one call for up to 100.

How to install the Vimeo MCP server

Pick your app in the box at the top of this page. Each one is a single command or a pasted block, after you create a Vimeo personal access token.

Before you start0/3
⚠️

Watch out: A token's scopes are fixed when you create it. Tick delete and video_files if you want deletes and download links, because both are off by default and can't be added later.

Set up Vimeo

The server uses a personal access token from your own Vimeo app. It takes about 2 minutes.

Create your token0/5

Set it as VIMEO_PAT in your app's config. To revoke it, delete it in the same Authentication section, and it stops working everywhere at once.

Check that it works

Run the doctor. It checks the token, names any missing scope, and says which plan the account is on.

npx -y @thenavidm/vimeo-mcp-cli doctor

A delete that fails with a permission error almost always means the token lacks the delete scope. Scopes can't be added, so generate a new token.

Use the Vimeo CLI

The CLI is the same 43 tools as commands. AI agents that run commands, like Claude Code, Codex and OpenCode, use it on their own, and you can type the same commands in a terminal or a script.

Every tool name becomes a command with dashes, so add_videos_to_folder runs as vimeo-cli add-videos-to-folder.

npm install -g @thenavidm/vimeo-mcp-cli
vimeo-cli
vimeo-cli get-me
vimeo-cli search-videos --query "workshop"
vimeo-cli get-transcript --video-id 1096473192

The bare vimeo-cli lists every command, and vimeo-cli <command> --help shows what a command takes. The 6 deletes and posting a comment ask for --confirm first, like they do for your AI.

These flags work on every command:

FlagWhat it does
--jsonPrints JSON
--compactPrints the JSON on one line
--agentMachine mode: JSON, compact, no prompts and no color
--select a,b.cKeeps only those fields, and a dotted path goes deeper
--confirmLets a write that asks first go ahead

A script can branch on the exit code:

Exit codeWhat it means
0It worked
2The command was typed wrong, or a write needed --confirm
3It wasn't found
4Vimeo rejected the credentials
5Vimeo's API failed
7You hit a rate limit, so wait and try again
10Nothing is set up yet

MCP server or CLI: which one?

Both are the same program with the same 43 tools. The difference is when your AI pays for them, in the tokens it reads.

Every message, in an app that loads every tool
MCP server
10,700 tokens
CLI
Nothing
Every message, in Claude Code
MCP server
1,200 tokens
CLI
Nothing
When Vimeo comes up
MCP server
Nothing more, or in Claude Code the tools it picks
CLI
3,000 tokens, once
20 messages with Vimeo in 1, every tool loaded
MCP server
213,000 tokens
CLI
3,000 tokens
Works in Claude Desktop's chat
MCP server
Yes
CLI
No, there's no terminal there
Works in a script, a cron job or CI
MCP server
No
CLI
Yes

An app that loads every tool up front sends the full list with every message, whether you mention Vimeo or not. Claude Code doesn't by default: its tool search sends only the tool names and the server's instructions, and loads a tool's full definition when your AI reaches for it.

The CLI costs nothing until Vimeo comes up. Then your agent reads its skill file once and runs the commands it needs. With the skill added, Claude Code also lists its one-line description with every message, about 210 tokens.

When the whole conversation is about Vimeo, the gap closes. Then the MCP server is the better experience, because you ask in plain language and your AI never has to look up a command.

How to spend less

In Claude Code, leave tool search on, which it is unless you've set ENABLE_TOOL_SEARCH=false.

Turn the server off when you aren't using Vimeo, with your AI app's own switch. VIMEO_READ_ONLY=1 cuts it to the 17 reading tools.

Or install the CLI and connect the server later, on the days it earns its place. Every tool stays in reach, and the standing cost drops to nothing.

Every number here was measured on September 27, 2026 in Claude Code 2.1.257 with Claude Opus 5. It's the same one-line prompt with and without the server connected, once with tool search off so every tool loads, and once with Claude Code's default. The skill was measured the same way, and other apps and models count tokens a little differently.

How Vimeo actually behaves

A few things on Vimeo's side explain most surprises.

Scopes are frozen

A token can't gain a scope later, and Vimeo's permission error doesn't name the missing one. A failing delete looks like a missing video, which is why the doctor names the scope.

A video lives in exactly one folder

Adding a video to a folder moves it. A showcase is different: a video can be in any number of showcases, and adding it there moves nothing.

Some things depend on your plan

Lifetime plays work on every plan. Views over time and finish rate come from Vimeo's analytics, which only paid plans have, and a free account gets a plain sentence saying so rather than an error.

Uploads keep processing

upload_video returns the video's ID right away while Vimeo transcodes it. Check the status on get_video until it reads available.

Every Vimeo tool

All 43 tools, grouped the way the repo groups them. 17 only read, and 26 change something in your Vimeo library.

Videos

list_videos
What it does
List videos in your Vimeo library, newest first by default.
Kind
Reads
get_video
What it does
Get the full details of one video: description, embed URL, thumbnail, privacy, tags and transcode status.
Kind
Reads
search_videos
What it does
Search your own library by title and description.
Kind
Reads
update_video
What it does
Update a video's title, description or privacy.
Kind
Writes
delete_video
What it does
Permanently delete a video.
Kind
Asks first
upload_video
What it does
Upload a video to Vimeo by giving it a public URL to fetch.
Kind
Writes
get_download_links
What it does
Get direct download URLs for a video's source and rendered files.
Kind
Reads
set_video_thumbnail
What it does
Set a video's thumbnail from a timecode in the video itself.
Kind
Writes

Folders

list_folders
What it does
List your Vimeo folders with a video count for each.
Kind
Reads
get_folder
What it does
Get one folder's details and the videos inside it.
Kind
Reads
create_folder
What it does
Create a folder.
Kind
Writes
update_folder
What it does
Rename a folder.
Kind
Writes
delete_folder
What it does
Delete a folder.
Kind
Asks first
add_videos_to_folder
What it does
Add one or many videos to a folder in a single call.
Kind
Writes
remove_videos_from_folder
What it does
Remove videos from a folder in one call.
Kind
Writes

Showcases

list_showcases
What it does
List your showcases, which the API calls albums.
Kind
Reads
get_showcase
What it does
Get one showcase and the videos in it, in their curated order.
Kind
Reads
create_showcase
What it does
Create a showcase.
Kind
Writes
update_showcase
What it does
Update a showcase's name, description, privacy or sort order.
Kind
Writes
delete_showcase
What it does
Delete a showcase.
Kind
Asks first
add_video_to_showcase
What it does
Add one video to a showcase.
Kind
Writes
remove_video_from_showcase
What it does
Remove one video from a showcase.
Kind
Writes

Chapters

list_chapters
What it does
List a video's chapters in timecode order.
Kind
Reads
add_chapter
What it does
Add a chapter marker at a timecode.
Kind
Writes
update_chapter
What it does
Change a chapter's title or move it to a different timecode.
Kind
Writes
delete_chapter
What it does
Delete one chapter marker.
Kind
Asks first

Captions and transcripts

list_texttracks
What it does
List the caption and subtitle tracks on a video, with their languages and which one is active.
Kind
Reads
get_transcript
What it does
Get a video's transcript as plain readable text.
Kind
Reads
upload_texttrack
What it does
Add a caption or subtitle track to a video from WebVTT content you supply.
Kind
Writes
update_texttrack
What it does
Rename a caption track, change its language, or make it the active one.
Kind
Writes
delete_texttrack
What it does
Delete a caption track from a video.
Kind
Asks first

Comments

list_comments
What it does
List the comments on a video.
Kind
Reads
add_comment
What it does
Post a comment on a video as you.
Kind
Asks first
edit_comment
What it does
Edit one of your own comments.
Kind
Writes
delete_comment
What it does
Delete a comment from a video.
Kind
Asks first

Account, stats and settings

get_me
What it does
Show the Vimeo account this server is connected to: name, plan, upload quota and the scopes the token holds.
Kind
Reads
get_video_stats
What it does
Get a video's lifetime play count plus its comment and like totals.
Kind
Reads
get_video_analytics
What it does
Get real analytics for a video: views over time, unique viewers, finish rate and where views came from.
Kind
Reads
set_video_tags
What it does
Replace a video's tags.
Kind
Writes
get_video_privacy
What it does
Show exactly who can watch and embed a video, including the domain whitelist when embedding is restricted.
Kind
Reads
allow_embed_domain
What it does
Allow a specific domain to embed a video.
Kind
Writes
list_embed_presets
What it does
List your saved embed presets, which control player colors, controls and branding.
Kind
Reads
apply_embed_preset
What it does
Apply a saved embed preset to a video, so its player matches your branding.
Kind
Writes

Is the Vimeo MCP server safe?

Writes work from the start, because organizing a library is the point of the tool. The ones that can't be undone ask first.

The 6 deletes and add_comment ask for a confirm check first, marked Asks first in the tool tables above, because a comment is public the moment it posts. delete_videos_too on a folder deletes the videos themselves, so it goes through the same check.

Make it read-only

Set VIMEO_READ_ONLY=1 and the write tools aren't registered at all, leaving 17. VIMEO_ALLOW_DESTRUCTIVE=0 keeps ordinary writes and blocks the deletes and comments.

Keep a log of every write

Set VIMEO_AUDIT_LOG to a file path. The server writes one line per attempted write, allowed or blocked.

⚠️

Watch out: Comments are written by other people and can contain text aimed at whatever reads them. The server labels them as viewer-written data, but for an agent working on its own, VIMEO_READ_ONLY=1 is the real defense.

Your data

There's no server of ours in between. The server runs on your computer and talks to Vimeo's API directly.

It stores nothing: no session, no cache and no database. The only file it writes is the audit log, and only when you set VIMEO_AUDIT_LOG. Whatever your AI reads, it sends to its own model provider, like anything you paste into a chat.

Vimeo MCP server settings

Every setting is an environment variable in your app's config. Only the token is required.

VIMEO_PAT
Default
none
What it does
Holds your personal access token. VIMEO_ACCESS_TOKEN works too
VIMEO_READ_ONLY
Default
off
What it does
1 removes every write tool
VIMEO_ALLOW_DESTRUCTIVE
Default
on
What it does
0 keeps ordinary writes and blocks deletes and comments
VIMEO_AUDIT_LOG
Default
none
What it does
Names a file that gets one line per attempted write
VIMEO_MIN_REQUEST_INTERVAL_MS
Default
100
What it does
Sets the pause between requests, for big bulk jobs
VIMEO_MAX_RETRIES
Default
2
What it does
Sets how often a failed request is retried
VIMEO_REQUEST_TIMEOUT_MS
Default
30000
What it does
Sets how long one request may take

Troubleshooting

Run the doctor first. It names the step that failed and the fix.

What you seeWhat to do
Every delete fails with a permission errorThe token lacks the delete scope. Generate a new token with it
Download links come back emptyThe token lacks video_files, or downloads are off for that video
Analytics says it's unavailableThe account is on a free plan. get_video_stats still works
A video you can see on vimeo.com doesn't existUsually a missing scope rather than a missing video. Run the doctor
A video vanished from its folderAdding a video to a folder moves it, so it's in the new one

If the server doesn't show up in your app at all, run the command your app runs, in a terminal, and read the error.

More free tools for your videos

Turn a transcript into chapter timestamps, or summarize a video before you file it.

Vimeo MCP Server FAQs

Here are the questions people ask most about the Vimeo MCP server and CLI.

The Vimeo MCP server & CLI is a free, open source program that lets an AI app like Claude, Codex or Cursor read and organize your Vimeo library.

It has 43 tools for videos, folders, showcases, chapters, captions, comments and your account, and the same tools run as a CLI that agents like Claude Code and Codex use, or that you type yourself.

An MCP server is a standard way to give an AI app real access to a tool, so it can act instead of guessing.

MCP stands for Model Context Protocol, and Claude, Codex, Cursor and many other AI apps speak it.

The Vimeo CLI is the same program as the Vimeo MCP server, run as commands.

AI agents like Claude Code, Codex and OpenCode run them for you, and you can type them in a terminal or a script.

Use the Vimeo MCP server in an AI app with no terminal, like Claude Desktop's chat, and the CLI in a terminal, a script or a cron job.

In an AI app that can run commands, like Claude Code, Codex or Cursor, the CLI is the lighter choice, because it costs nothing until it runs.

Yes, the Vimeo MCP server is free and open source under the MIT license, and it works on every Vimeo plan, including free.

The only thing you pay for is your own AI app.

Yes, every tool works on a free plan except views over time, which Vimeo only gives paid plans.

Lifetime play counts work everywhere.

Your token lacks the delete scope, which is off by default.

Scopes can't be added to a token, so generate a new one with delete ticked.

Only when you ask, and only after a confirm check, because a deleted video can't be restored.

VIMEO_READ_ONLY=1 removes every write.

Yes, upload_video sends a file from your computer and returns the new video's ID right away.

Vimeo keeps transcoding for a while after that.

The Vimeo MCP server works with any app that speaks MCP.

That includes Claude Code, Claude Desktop, Codex, Cursor, VS Code, GitHub Copilot CLI, Gemini CLI, OpenCode, OpenClaw, Antigravity and Hermes.

Navid Moazzez built the Vimeo MCP server and maintains it.

The code is on GitHub under the MIT license, and the package is on npm.

Navid Moazzez

AI business strategist & AI OS builder

Navid Moazzez helps creators and founders master AI and build their own AI Operating System (AI OS) to automate their business and life.

Navid.me is reader-supported. When you buy through links on this site, I may earn an affiliate commission. Learn more.

More MCP servers & CLIs

Free AI newsletter

The most actionable AI newsletter for founders

Every week, get proven AI strategies, curated tools, and step-by-step systems to grow your audience, create better content, and build a profitable creator business.

No fluff, no filler, no BS. Just five minutes each week that might level up your online business and life.

P.S. Sign up now to get free access to my ultimate AI tools guide for creators.

Loved by 10,000+ readers