Narva MCP server
by Negmus
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.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues