A Model Context Protocol (MCP) server for AI video generation using Sora through the AceDataCloud API.
Generate AI videos directly from Claude, VS Code, or any MCP-compatible client.
- Text-to-Video - Generate videos from text descriptions
- Image-to-Video - Animate images and create videos from reference images
- Character Videos - Reuse characters across different scenes
- Async Generation - Webhook callbacks for production workflows
- Multiple Orientations - Landscape, portrait, and square videos
- Task Tracking - Monitor generation progress and retrieve results
Get your API token from AceDataCloud Platform:
- Sign up or log in
- Navigate to Sora Videos API
- Click "Acquire" to get your token
# Clone the repository
git clone https://github.com/AceDataCloud/mcp-sora.git
cd mcp-sora
# Install with pip
pip install -e .
# Or with uv (recommended)
uv pip install -e .# Copy example environment file
cp .env.example .env
# Edit with your API token
echo "ACEDATACLOUD_API_TOKEN=your_token_here" > .env# Run the server
mcp-sora
# Or with Python directly
python main.pyAdd to your Claude Desktop configuration:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"sora": {
"command": "mcp-sora",
"env": {
"ACEDATACLOUD_API_TOKEN": "your_api_token_here"
}
}
}
}Or if using uv:
{
"mcpServers": {
"sora": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-sora", "mcp-sora"],
"env": {
"ACEDATACLOUD_API_TOKEN": "your_api_token_here"
}
}
}
}| Tool | Description |
|---|---|
sora_generate_video |
Generate video from a text prompt |
sora_generate_video_from_image |
Generate video from reference images |
sora_generate_video_with_character |
Generate video with a character from reference video |
sora_generate_video_async |
Generate video with callback notification |
| Tool | Description |
|---|---|
sora_get_task |
Query a single task status |
sora_get_tasks_batch |
Query multiple tasks at once |
| Tool | Description |
|---|---|
sora_list_models |
List available Sora models |
sora_list_actions |
List available API actions |
User: Create a video of a sunset over mountains
Claude: I'll generate a sunset video for you.
[Calls sora_generate_video with prompt="A beautiful sunset over mountains..."]
User: Animate this image of a city skyline
Claude: I'll bring this image to life.
[Calls sora_generate_video_from_image with image_urls and prompt]
User: Use the robot character in a new scene
Claude: I'll create a new scene with the robot character.
[Calls sora_generate_video_with_character with character_url and prompt]
| Model | Max Duration | Quality | Features |
|---|---|---|---|
sora-2 |
15 seconds | Good | Standard generation |
sora-2-pro |
25 seconds | Best | Higher quality, longer videos |
Size:
small- Lower resolution, faster generationlarge- Higher resolution (recommended)
Orientation:
landscape- 16:9 (YouTube, presentations)portrait- 9:16 (TikTok, Instagram Stories)square- 1:1 (Instagram posts)
Duration:
10seconds - All models15seconds - All models25seconds - sora-2-pro only
| Variable | Description | Default |
|---|---|---|
ACEDATACLOUD_API_TOKEN |
API token from AceDataCloud | Required |
ACEDATACLOUD_API_BASE_URL |
API base URL | https://api.acedata.cloud |
SORA_DEFAULT_MODEL |
Default model | sora-2 |
SORA_DEFAULT_SIZE |
Default video size | large |
SORA_DEFAULT_DURATION |
Default duration (seconds) | 15 |
SORA_DEFAULT_ORIENTATION |
Default orientation | landscape |
SORA_REQUEST_TIMEOUT |
Request timeout (seconds) | 3600 |
LOG_LEVEL |
Logging level | INFO |
mcp-sora --help
Options:
--version Show version
--transport Transport mode: stdio (default) or http
--port Port for HTTP transport (default: 8000)# Clone repository
git clone https://github.com/AceDataCloud/mcp-sora.git
cd mcp-sora
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # or `.venv\Scripts\activate` on Windows
# Install with dev dependencies
pip install -e ".[dev,test]"# Run unit tests
pytest
# Run with coverage
pytest --cov=core --cov=tools
# Run integration tests (requires API token)
pytest tests/test_integration.py -m integration# Format code
ruff format .
# Lint code
ruff check .
# Type check
mypy core tools# Install build dependencies
pip install -e ".[release]"
# Build package
python -m build
# Upload to PyPI
twine upload dist/*MCPSora/
├── core/ # Core modules
│ ├── __init__.py
│ ├── client.py # HTTP client for Sora API
│ ├── config.py # Configuration management
│ ├── exceptions.py # Custom exceptions
│ ├── server.py # MCP server initialization
│ ├── types.py # Type definitions
│ └── utils.py # Utility functions
├── tools/ # MCP tool definitions
│ ├── __init__.py
│ ├── video_tools.py # Video generation tools
│ ├── task_tools.py # Task query tools
│ └── info_tools.py # Information tools
├── prompts/ # MCP prompt templates
│ └── __init__.py
├── tests/ # Test suite
│ ├── conftest.py
│ ├── test_client.py
│ ├── test_config.py
│ ├── test_integration.py
│ └── test_utils.py
├── .env.example # Environment template
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── main.py # Entry point
├── pyproject.toml # Project configuration
└── README.md
This server wraps the AceDataCloud Sora API:
- Sora Videos API - Video generation
- Sora Tasks API - Task queries
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing) - Open a Pull Request
MIT License - see LICENSE for details.
Made with love by AceDataCloud