@vidalytics/mcp
One-command setup that connects your AI coding assistant to Vidalytics video analytics data via the Model Context Protocol.
Works with Claude (CLI & Desktop), Windsurf, Cursor, and any other MCP-compatible client.
Setup
npx @vidalytics/mcp install
That's it. The installer detects which AI clients you have installed, lets you pick which ones to configure, and wires them up. Restart the client — a browser window will open for OAuth authorization on first use.
Cursor
Or via the installer:
npx @vidalytics/mcp install --client cursor
Or manually — add this to ~/.cursor/mcp.json:
{
"mcpServers": {
"vidalytics": {
"url": "https://api.vidalytics.com/public/v1/mcp"
}
}
}
Restart Cursor. On first use a browser window opens for OAuth authorization with your Vidalytics account — no API key or environment variables to set.
What it does
- Detects installed MCP clients (Claude CLI, Claude Desktop, Windsurf, Cursor) by checking config files, app directories, binaries in
$PATH, and app bundles (e.g./Applicationson macOS) - Presents an interactive checklist (detected clients pre-selected) so you configure exactly the ones you want — or pick them non-interactively with
--client - Adds Vidalytics as an MCP server in each selected client's config
- Verifies after writing: the config is valid and the MCP server is reachable
- Non-interactive terminals (CI) and any explicit selection flag (
--client,--all,--yes) skip the checklist and behave predictably
Available tools
Once connected, your AI assistant gains access to the tools below.
Many write tools (settings, chapters, captions, tags, CTAs, pause screens, thumbnails) save
changes to the video's draft — call publish_video to make them live. Write tools require a
read+write authorization; a read-only connection returns SCOPE_INSUFFICIENT.
Previewing changes. update_video_settings accepts dryRun to validate and return a
before/after diff without saving. The other draft-based writes have no dryRun; preview them by
saving to the draft and reading it back with the matching get_*/list_* tool (e.g.
get_video_chapters, get_video_tags, get_video_captions) before you publish_video. A delete
that only removes an unpublished draft edit is likewise reversible until publish; a delete against
already-published content takes effect on the next publish.
Videos & metadata
| Tool | Description |
|---|---|
set_user_context | MUST be called before any other tool to enable analytics |
list_videos | List videos with pagination |
get_video | Get video details |
get_video_by_embed_guid | Find a video by its embed GUID |
update_video | Update a video's title or folder |
get_video_embed | Get the embed code and configuration |
get_video_settings | Get playback settings (autoplay, controls, etc) |
update_video_settings | Update playback settings as a draft (dryRun validates and returns the diff only) |
duplicate_video | Duplicate a video and publish the copy |
publish_video | Publish a video's pending draft settings |
Analytics
| Tool | Description |
|---|---|
get_video_stats | Views, play rate, watch time, conversions |
get_video_dropoff | Audience retention by percentage |
get_video_percentage_watched | % of viewers who reached each point |
get_video_live_metrics | Real-time active viewers and watch rate |
get_videos_stats_batch | Stats for up to 30 videos at once |
get_videos_timeline | Timeline stats for up to 5 videos |
Chapters, captions & tags
| Tool | Description |
|---|---|
get_video_chapters | List a video's chapters and whether they're enabled |
set_video_chapters | Replace a video's chapter markers (draft) |
get_video_captions | List a video's caption tracks |
add_video_caption | Add or replace a caption track from provided text (draft) |
delete_video_caption | Remove a caption language |
get_video_tags | List a video's tags and custom variables |
set_video_tags | Set a video's full tag list (draft) |
CTAs & pause screens
| Tool | Description |
|---|---|
get_video_ctas | Get CTAs for a video |
create_video_cta | Create a call-to-action on a video |
update_video_cta | Update an existing call-to-action on a video |
delete_video_cta | Delete a call-to-action from a video |
get_video_pause_screens | Get pause screens for a video |
create_video_pause_screen | Add a pause screen to a video (draft) |
update_video_pause_screen | Update a pause screen on a video (draft) |
delete_video_pause_screen | Remove a pause screen from a video |
Thumbnails
| Tool | Description |
|---|---|
get_video_thumbnail | Get the thumbnail image URL |
set_video_thumbnail_from_url | Set a video's thumbnail from a public image URL |
set_video_thumbnail_from_frame | Set a video's thumbnail from one of its frames |
delete_video_thumbnail | Remove a custom thumbnail and restore the default |
Folders & settings templates
| Tool | Description |
|---|---|
list_folders | List video folders |
create_folder | Create a video folder, optionally nested under another folder |
rename_folder | Rename a video folder |
list_settings_templates | List settings templates |
create_settings_template | Create a settings template from a video's current settings |
update_settings_template | Update a settings template (rename, re-describe, or re-snapshot from a video) |
delete_settings_template | Delete a settings template |
apply_settings_template | Apply a reusable player settings template to a video |
Uploads
| Tool | Description |
|---|---|
upload_video_from_url | Upload a video from a remote URL |
get_video_upload_url | Get a signed URL for local file upload |
validate_upload | Complete a direct video upload |
Account
| Tool | Description |
|---|---|
get_api_usage | Get current API usage and quota |
list_connections | List apps connected to your account |
revoke_connection | Disconnect an app or yourself |
Options
npx @vidalytics/mcp install [flags]
--client <names> Configure only these clients, comma-separated
(claude-cli, claude-desktop, windsurf, cursor)
--all Configure all known clients, even if not detected
--config <path> Also configure a custom config file (repeatable)
--force Re-apply even if already configured
--yes Skip prompts (configure detected clients)
Run with no flags in an interactive terminal to get a checklist of clients to configure (detected ones are pre-selected; use space to toggle, enter to confirm). --client cursor,windsurf does the same selection non-interactively.
The --config flag can be repeated for multiple files. The target file must follow the { "mcpServers": {} } format used by Claude Desktop, Cursor, and Windsurf — useful for unsupported clients like Zed or VS Code with an MCP plugin.
Troubleshooting
Authorization issues, or need to re-authenticate? Reset the credentials that
mcp-remote caches in your home directory, then restart the client:
| OS | Command |
|---|---|
| macOS / Linux | rm -rf ~/.mcp-auth |
| Windows (CMD) | rd /s /q "%USERPROFILE%\.mcp-auth" |
| Windows (PowerShell) | Remove-Item -Recurse -Force "$HOME\.mcp-auth" |
MCP Registry
This server is published to the official MCP Registry as com.vidalytics/mcp. It is a remote (streamable-http) server, so registry-aware MCP clients can connect to it directly at:
https://api.vidalytics.com/public/v1/mcp
No API key or environment variables are required — authorization is handled via OAuth on first use.
Requirements
- Node.js 18+
- A Vidalytics account