Skip to main content
Glama
README.md
<p align="center"><img src="assets/icon.png" width="96" alt="Narva"></p>

# Narva MCP server

[Narva](https://narva.app) makes faceless YouTube videos: give it a topic, a finished script or a recorded voiceover and it delivers a ready-to-upload video or Short, with the script, natural AI narration in 32 languages, AI visuals in 12 styles with camera moves, real archive footage, animated maps and charts, word-synced captions, music and thumbnails. Then it publishes to your YouTube channel, now or scheduled.

This repository holds the public manifests for Narva's hosted MCP server, so Claude, ChatGPT, Cursor or any MCP client can make and publish videos for you mid-conversation.

- **Server URL:** `https://narva.app/mcp` (Streamable HTTP)
- **Auth:** OAuth 2.1 with PKCE and dynamic client registration, or a personal access token for headless agents
- **Requires:** a Narva account with a plan (from $29/month). Videos cost credits (about 16 per finished minute of long video); the cost is shown before rendering.

Try: *"Make a 10-minute documentary about the Great Emu War in a dark documentary style and publish it to my channel tomorrow at 6pm."*

## Install

### Claude

Claude.ai (web or desktop): Settings → Connectors → Add custom connector → paste the server URL and approve the consent screen.

Claude Code:

```bash
claude mcp add --transport http narva https://narva.app/mcp
```

Or install this repository as a plugin, which adds the server together with a skill that teaches Claude the Narva workflow:

```bash
claude plugin marketplace add Negmus/narva-mcp
claude plugin install narva@narva-mcp
```

### ChatGPT

Settings → Security and login → turn on Developer mode, then Plugins → + → paste the server URL. The OAuth prompt signs you in to Narva.

### Cursor

[Add to Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=narva&config=eyJ1cmwiOiJodHRwczovL25hcnZhLmFwcC9tY3AifQ==), or in `~/.cursor/mcp.json`:

```json
{ "mcpServers": { "narva": { "url": "https://narva.app/mcp" } } }
```

### VS Code

```bash
code --add-mcp '{"name":"narva","type":"http","url":"https://narva.app/mcp"}'
```

### Codex

Install this repository as a plugin, which adds the server together with the same skill:

```bash
codex plugin marketplace add Negmus/narva-mcp
codex plugin add narva@narva
codex mcp login narva
```

Or only the server, in `~/.codex/config.toml`:

```toml
[mcp_servers.narva]
url = "https://narva.app/mcp"
```

then `codex mcp login narva` to approve the consent screen.

### Gemini CLI

```bash
gemini extensions install https://github.com/Negmus/narva-mcp
```

Sign in with `/mcp auth narva`.

### Google Antigravity

In `mcp_config.json` (Agent panel → MCP Servers → Manage → View raw config):

```json
{ "mcpServers": { "narva": { "serverUrl": "https://narva.app/mcp" } } }
```

Or install this repository as a plugin: `agy plugin install https://github.com/Negmus/narva-mcp`

### Windsurf

In `~/.codeium/windsurf/mcp_config.json`:

```json
{ "mcpServers": { "narva": { "serverUrl": "https://narva.app/mcp" } } }
```

### Kiro

[Add to Kiro](https://kiro.dev/launch/mcp/add?name=narva&config=%7B%22url%22%3A%22https%3A%2F%2Fnarva.app%2Fmcp%22%7D), or in `.kiro/settings/mcp.json`:

```json
{ "mcpServers": { "narva": { "url": "https://narva.app/mcp" } } }
```

### Cline, Kilo Code and Roo Code

MCP Servers → Remote Servers → name `narva`, URL `https://narva.app/mcp`, transport Streamable HTTP.

### Goose

`goose configure` → Add Extension → Remote Extension (Streamable HTTP) → `https://narva.app/mcp`.

### LM Studio

[Add to LM Studio](lmstudio://add_mcp?name=narva&config=eyJ1cmwiOiJodHRwczovL25hcnZhLmFwcC9tY3AifQ==)

### n8n, Make, containers and other headless clients

The OAuth callback cannot reach a client that runs on a server, so create a personal access token under **Settings → API & MCP** on narva.app and send it as a header:

```yaml
mcp_servers:
  narva:
    url: https://narva.app/mcp
    headers:
      Authorization: Bearer YOUR_TOKEN
```

The same token works with the [REST API](https://narva.app/settings/api) (`https://narva.app/api/v1`).

## Tools

Everything is scoped to the signed-in user's own account and videos.

| Tool | Kind | What it does |
|---|---|---|
| `get_account` | read | Credits, plan, price per minute and connected YouTube channels |
| `list_options` | read | Formats, niches, tones, languages, visual and caption styles, music moods, voices |
| `list_videos` / `get_video` | read | Your videos with status, progress, cost, script, scenes, download and editor links |
| `list_youtube_channels` | read | Channels connected for publishing |
| `create_video` | write | Start a video from a topic or a script; on autopilot it renders by itself |
| `update_script` | write | Replace the script of a video that has not been rendered yet |
| `plan_video` | write | Cut the script into scenes and direct them; shows the exact credit cost |
| `render_video` | write | Render a planned video (charges the shown credits; failures are refunded) |
| `edit_scene` | write | Change one scene's line, image or motion graphic |
| `edit_video` | write | Describe a change in words; Narva proposes the edits, then applies them |
| `create_short_from_video` | write | Turn a finished long video into a 9:16 Short |
| `publish_to_youtube` | write | Upload to your channel now or scheduled, with title, description, tags and thumbnail |
| `delete_video` | write | Delete a video and its files (not copies already on YouTube) |

Every tool carries `readOnlyHint`, `destructiveHint`, `openWorldHint` and `idempotentHint` annotations. Rendering spends credits and publishing posts public content, so the server tells the assistant to confirm both with you first.

## What is in this repository

- `server.json`: the entry in the [official MCP Registry](https://registry.modelcontextprotocol.io) as `app.narva/mcp`
- `.claude-plugin/` + `.mcp.json` + `skills/narva/SKILL.md`: a Claude Code plugin bundling the server with a skill
- `plugin.json` + `mcp.json`: the same as an [Agent Plugin](https://agent-plugins.org) for Codex (OpenAI settings under `extensions.com.openai`), Cursor and compatible clients; `.agents/plugins/marketplace.json` makes the repository a Codex marketplace
- `gemini-extension.json`: a Gemini CLI extension
- `.antigravity-plugin/plugin.json` + `mcp_config.json`: an Antigravity plugin; `plugins/narva/` holds the same without the skill
- `SETUP.md`: the connection walkthrough a client can follow after install

The server itself is part of the Narva web application and is not open source. The manifests and skill here are MIT licensed.

## Privacy Policy

The server only reads and writes the signed-in user's own Narva data, and publishes to YouTube only the channels the user connected. Privacy policy: https://narva.app/privacy. Terms: https://narva.app/terms. Support: support@narva.app.