sora-mcp-server
# Sora MCP Server
An MCP (Model Context Protocol) server for OpenAI's Sora video generation API. This server allows AI assistants to generate, manage, and download AI-generated videos using OpenAI's Sora models.
## Features
- **Create videos** from text prompts using Sora-2 or Sora-2-Pro models
- **Image-to-video** generation using reference images
- **Remix existing videos** with targeted modifications
- **Monitor video generation** progress
- **Download completed videos**, thumbnails, and spritesheets
- **List and manage** your video library
## Prerequisites
- Node.js 18+
- OpenAI API key with Sora access
## Installation
```bash
npm install
npm run build
```
## Configuration
Set your OpenAI API key as an environment variable:
```bash
export OPENAI_API_KEY=your-api-key-here
```
## Usage with Claude Code
```bash
claude mcp add-json sora '{
"command": "node",
"args": ["/path/to/sora-mcp-server/dist/index.js"],
"env": {
"OPENAI_API_KEY": "your-api-key-here"
}
}'
```
## Available Tools
### create_video
Create a new video from a text prompt.
**Parameters:**
- `prompt` (required): Text description of the video
- `model`: `sora-2` (faster) or `sora-2-pro` (higher quality)
- `size`: Resolution (`1920x1080`, `1080x1920`, `1280x720`, `720x1280`, `1024x1024`)
- `seconds`: Duration (5, 10, 15, or 20)
**Example:**
```
Create a video of a cat playing piano on stage
```
### create_video_with_image
Create a video using an image as the first frame.
**Parameters:**
- `prompt` (required): Description of the motion/action
- `image_url`: URL of the reference image
- `image_base64`: Base64-encoded image (alternative to URL)
- `model`, `size`, `seconds`: Same as create_video
### get_video_status
Check the status of a video generation job.
**Parameters:**
- `video_id` (required): The video job ID
### download_video
Get download URL for a completed video.
**Parameters:**
- `video_id` (required): The video job ID
- `variant`: `video` (MP4), `thumbnail`, or `spritesheet`
### list_videos
List all your video generation jobs.
**Parameters:**
- `limit`: Number of results (1-100)
- `order`: `asc` or `desc`
- `after`: Pagination cursor
### delete_video
Delete a video from OpenAI's storage.
**Parameters:**
- `video_id` (required): The video job ID
### remix_video
Create a variation of an existing video.
**Parameters:**
- `video_id` (required): The completed video to remix
- `prompt` (required): Description of changes to apply
### wait_for_video
Poll until a video completes or fails.
**Parameters:**
- `video_id` (required): The video job ID
- `poll_interval_seconds`: Time between checks (default: 10)
- `timeout_seconds`: Maximum wait time (default: 600)
## Prompting Tips
For best results with Sora, describe:
- **Shot type**: Wide shot, close-up, tracking shot
- **Subject**: What/who is in the video
- **Action**: What is happening
- **Setting**: Where it takes place
- **Lighting**: Time of day, mood
Example: "Wide tracking shot of a teal coupe driving through a desert highway, heat ripples visible, hard sun overhead."
## Content Restrictions
The Sora API enforces these restrictions:
- Content must be suitable for audiences under 18
- No copyrighted characters or music
- No real people or public figures
- No human faces in reference images
## Models
| Model | Best For | Speed | Quality |
|-------|----------|-------|---------|
| sora-2 | Prototyping, iteration | Fast | Good |
| sora-2-pro | Production, final output | Slow | Excellent |
## License
MIT
TDQS
Scored across 9 tools
Each tool targets a distinct operation: creation (with and without image), status checking (one-time and polling), retrieval (URL and local save), listing, deletion, and remixing. The overlapping pairs like wait_for_video vs get_video_status and download_video vs save_video are clearly differentiated by their descriptions.
All tool names follow a consistent verb_noun pattern in snake_case, such as create_video, get_video_status, download_video, and delete_video. The only deviation, create_video_with_image, still follows the same structural convention with a descriptive modifier, maintaining overall consistency.
With 9 tools, the server is well-scoped for its domain of video generation. Each tool serves a clear purpose in the workflow—creation, status monitoring, retrieval, management, and remixing—without bloat or redundancy.
The tool set covers the entire video generation lifecycle: create (both text and image-based), wait for completion, check status, list, download (via URL or local save), delete, and remix. No significant gaps are apparent; the only potential addition would be cancellation, but this is likely unsupported by the underlying API.