Connect via MCP
Operate your Moviie library and AI features from an AI assistant using the Model Context Protocol (MCP).
Moviie exposes a Model Context Protocol (MCP) server so AI assistants can operate your account by natural language: manage videos, generate AI learning assets, read analytics, and check credits, all scoped to your organization.
It works with any MCP client that connects to a remote server over streamable
HTTP with an Authorization header — including Claude Code, Claude
Desktop, Cursor, Windsurf, and VS Code. Per-client setup is below.
The server is a small, curated set of opinionated tools, not a one-to-one mirror of the REST API. Each tool is designed so the assistant picks the right one and knows how to use it.
Endpoint
https://mcp.moviie.ai/mcpAuthentication
The MCP server authenticates with a private API key (the same mvi_ keys you
use for the REST API), passed as a Bearer token. Publishable keys are rejected,
because MCP tools can create, update, and delete content.
- Open your dashboard and go to Settings → API Keys.
- Create a private key and copy it (it is shown only once).
- Give it to your MCP client as shown for your client below.
Keep the key server-side
Treat the key like a password. Where your client supports it, reference the key
through an environment variable (e.g. ${env:MOVIIE_API_KEY}) instead of pasting
it into a shared config file. If a key leaks, delete it from Settings → API
Keys and issue a new one.
Set up your client
Claude Code
Add the server from the terminal:
claude mcp add --transport http moviie https://mcp.moviie.ai/mcp \
--header "Authorization: Bearer mvi_your_private_api_key"Cursor
Add it to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):
{
"mcpServers": {
"moviie": {
"url": "https://mcp.moviie.ai/mcp",
"headers": {
"Authorization": "Bearer mvi_your_private_api_key"
}
}
}
}Windsurf
Add it to mcp_config.json (Cascade → Manage MCP servers → View raw config).
Note the field is serverUrl:
{
"mcpServers": {
"moviie": {
"serverUrl": "https://mcp.moviie.ai/mcp",
"headers": {
"Authorization": "Bearer mvi_your_private_api_key"
}
}
}
}VS Code
Add it to .vscode/mcp.json (workspace) or your user mcp.json. VS Code uses the
servers key with "type": "http":
{
"servers": {
"moviie": {
"type": "http",
"url": "https://mcp.moviie.ai/mcp",
"headers": {
"Authorization": "Bearer mvi_your_private_api_key"
}
}
}
}Claude Desktop
Claude Desktop connects to remote servers through the mcp-remote bridge. Add
this to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"moviie": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.moviie.ai/mcp",
"--header",
"Authorization:${MOVIIE_AUTH}"
],
"env": {
"MOVIIE_AUTH": "Bearer mvi_your_private_api_key"
}
}
}
}Why the header is split
The Authorization value is passed via the MOVIIE_AUTH env var (with no space
after the colon in args) to sidestep a known bug where some desktop clients
mangle spaces inside args. Env-var values keep their spaces, so Bearer …
arrives intact.
Any other client
Any client that supports a remote streamable-HTTP MCP server works: point it at
https://mcp.moviie.ai/mcp and set an Authorization: Bearer mvi_… header. If
your client only speaks stdio (no header field), use the mcp-remote bridge
shown for Claude Desktop.
Once connected, ask the assistant to list your videos to confirm it works.
What the assistant can do
The tools are grouped by intent:
| Area | What you can ask |
|---|---|
| Library | List videos, get a video's details, rename or recategorize, delete, list collections |
| Search | Find a phrase inside a video's transcript |
| AI generation | Generate a summary, chapters, a mind map, an ebook, or an interactive quiz from a video |
| Learning pack | Generate a mind map, ebook, and quiz together in one step |
| Dubbing & subtitles | Dub a video into another language, or translate its subtitles |
| Status & retrieval | Check whether a generation is done, then fetch the finished asset |
| Player & embed | Get ready-to-paste embed code, or manage call-to-action buttons |
| Analytics | Read plays, watch time, retention, and geography for a video or the whole account |
| Credits | Check your credit balance, and preview what a generation will cost before running it |
How generations work
- A transcript is required. AI generations run from the video's transcript. Transcription happens automatically after upload; if it is not ready yet, the tool says so and no credits are charged. Try again shortly.
- Generations are asynchronous. The assistant triggers the work, then polls for status and retrieves the finished asset. Text assets are usually ready in a minute or two; dubbing and translation take longer and scale with video length.
- Costs are transparent. You can preview a generation's cost and check your balance before committing. A generation you cannot afford is not started.
- Destructive actions confirm first. Deleting a video (or removing a call-to-action) is a two-step action: the assistant previews exactly what will change, then applies it only after you confirm.
Rate limits
MCP requests count against the same per-key and per-organization limits as the REST API. See Rate Limits for the budgets and how throttling is signaled.