Docs

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/mcp

Authentication

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.

  1. Open your dashboard and go to Settings → API Keys.
  2. Create a private key and copy it (it is shown only once).
  3. 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:

AreaWhat you can ask
LibraryList videos, get a video's details, rename or recategorize, delete, list collections
SearchFind a phrase inside a video's transcript
AI generationGenerate a summary, chapters, a mind map, an ebook, or an interactive quiz from a video
Learning packGenerate a mind map, ebook, and quiz together in one step
Dubbing & subtitlesDub a video into another language, or translate its subtitles
Status & retrievalCheck whether a generation is done, then fetch the finished asset
Player & embedGet ready-to-paste embed code, or manage call-to-action buttons
AnalyticsRead plays, watch time, retention, and geography for a video or the whole account
CreditsCheck 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.

On this page