sora-mcp-server
Provides tools for generating, managing, and downloading AI videos using OpenAI's Sora API, including text-to-video, image-to-video, remixing, and progress monitoring.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sora-mcp-server Create a video of a cat playing piano on stage"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Related MCP server: Sora MCP Server
Prerequisites
Node.js 18+
OpenAI API key with Sora access
Installation
npm install
npm run buildConfiguration
Set your OpenAI API key as an environment variable:
export OPENAI_API_KEY=your-api-key-hereUsage with Claude Code
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 videomodel:sora-2(faster) orsora-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 stagecreate_video_with_image
Create a video using an image as the first frame.
Parameters:
prompt(required): Description of the motion/actionimage_url: URL of the reference imageimage_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 IDvariant:video(MP4),thumbnail, orspritesheet
list_videos
List all your video generation jobs.
Parameters:
limit: Number of results (1-100)order:ascordescafter: 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 remixprompt(required): Description of changes to apply
wait_for_video
Poll until a video completes or fails.
Parameters:
video_id(required): The video job IDpoll_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
Available Tools
9 toolscreate_videoA
Create a new video generation job using OpenAI's Sora model. Returns a job ID that can be used to check status and download the video when complete. Video generation is asynchronous and may take several minutes.
Inputs: prompt (required), size, model, seconds.
create_video_with_imageB
Create a video using an image as the first frame reference. The image guides the visual style and composition of the generated video.
Inputs: prompt (required), size, model, seconds, +2 more.
delete_videoA
Delete a video from OpenAI's storage. This action cannot be undone.
Inputs: video_id (required).
download_videoA
Get a download URL for a completed video. The URL is valid for 1 hour. Only works for videos with 'completed' status.
Inputs: video_id (required), variant.
get_video_statusA
Get the current status of a video generation job. Returns progress percentage and status (queued, in_progress, completed, failed).
Inputs: video_id (required).
list_videosA
List all video generation jobs for your account with pagination support.
Inputs: after, limit, order.
remix_videoA
Create a variation of an existing completed video with targeted adjustments. Preserves the original structure while applying the specified changes. Best for single, well-defined modifications.
Inputs: prompt (required), video_id (required).
save_videoB
Download and save a completed video to a local file. This handles authentication internally so the API key is not exposed.
Inputs: video_id (required), variant, output_path.
wait_for_videoA
Poll a video job until it completes or fails. Returns the final status. Useful for waiting on video generation without manual polling.
Inputs: video_id (required), timeout_seconds, poll_interval_seconds.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
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.
Related MCP Connectors
Make AI images, video, voiceovers and music, and edit video, from your assistant. Paid in credits.
Generate AI images, videos, music, SFX & speech in any AI assistant. Results appear inline in chat.
Image and video AI tools and your own pipelines, run from any AI assistant.
Make images and video with 30+ AI models from your assistant, on your own credits and library.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables video generation from text prompts or images using Google's Veo 3 API. Supports multiple models, audio generation, and various aspect ratios for creating high-quality videos.2MIT
- AlicenseNot gradedqualityDmaintenanceIntegrates with OpenAI's Sora 2 API to generate, remix, and manage AI-generated videos from text prompts. Supports video creation, status monitoring, downloading, and remixing through natural language commands.207MIT
- AlicenseAqualityDmaintenanceEnables programmatic creation, management, and remixing of AI-generated videos using OpenAI's Sora API. Supports video generation with customizable parameters, status monitoring, downloading, and video remixing capabilities.66 npm3MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to generate images and videos through natural language using ImaginePro's API. Supports text-to-image generation, video creation, image upscaling, variants, inpainting, and multi-modal generation with real-time progress tracking.820 npmMIT