Content
# Seedance Polza MCP Server
`mcp-name: io.github.ivanantigravity-lgtm/seedance-polza-mcp-server`
MCP server for generating video through `bytedance/seedance-2` (and other Seedance models) on Polza.ai.
## What it can do
- text-to-video and image-to-video generation
- reading generation status
- polling until video is ready
- returns compact result (id, status, url, usage, warnings)
## Requirements for installation
- `Claude Desktop` or `Claude Code`
- [`uv`](https://docs.astral.sh/uv/)
- Python 3.11+
- `POLZA_AI_API_KEY` — key taken from [polza.ai/dashboard/api-keys](https://polza.ai/dashboard/api-keys)
Install `uv`:
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
## Installation in 2 minutes (via PyPI + uvx)
### Claude Code / VS Code
Create `.mcp.json` in project root:
```json
{
"mcpServers": {
"seedance-polza": {
"command": "uvx",
"args": ["seedance-polza-mcp-server@latest"],
"env": {
"POLZA_AI_API_KEY": "your-polza-api-key-here"
}
}
}
}
```
Restart Claude Code.
### Claude Desktop (macOS)
File `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"seedance-polza": {
"command": "uvx",
"args": ["seedance-polza-mcp-server@latest"],
"env": {
"POLZA_AI_API_KEY": "your-polza-api-key-here"
}
}
}
}
```
### Claude Desktop (Windows)
File: `%APPDATA%\Claude\claude_desktop_config.json`. Contents are identical.
## How to check if it works
After restarting Claude, ask:
> Make a short video through seedance: sunset over the ocean, 16:9, 5 seconds
Claude should call `seedance_create_video` and wait for completion via `seedance_wait_for_completion`.
## Tools
- `seedance_create_video` — start generation
- `seedance_get_status` — check status by `id`
- `seedance_wait_for_completion` — wait by polling until ready
- `seedance_model_guide` — brief guide on parameters
## Defaults
- model: `bytedance/seedance-2`
- polling interval: `8` seconds
- max wait: `900` seconds
## Environment Variables
| Variable | Required | Default |
| --- | --- | --- |
| `POLZA_AI_API_KEY` | yes | — |
| `POLZA_BASE_URL` | no | `https://polza.ai/api/v1` |
| `SEEDANCE_MODEL` | no | `bytedance/seedance-2` |
| `SEEDANCE_POLL_INTERVAL` | no | `8` |
| `SEEDANCE_MAX_WAIT` | no | `900` |
| `LOG_LEVEL` | no | `INFO` |
## Supported input parameters
Basic parameters for video:
- `prompt`
- `aspect_ratio` (`16:9`, `9:16`, `1:1`, `4:3`, `3:4`, `21:9` etc.)
- `resolution` (`480p`, `720p`, `1080p`)
- `duration` (`5s`, `10s`, `15s` — depends on model)
- `images` — references for image-to-video
- `videos` — references for video-to-video
- `seed`
- `async`
- `user`
Format `images` / `videos`:
```json
{ "type": "url", "data": "https://example.com/file.png" }
```
or
```json
{ "type": "base64", "data": "data:image/png;base64,..." }
```
## What the server returns
The server does not perform extra magic. It returns:
- `id` generation
- `status`
- `model`
- `usage` (including `cost_rub`)
- `url` result, if video is ready
- `warnings` / `error` in case of problems
## Local development
```bash
git clone https://github.com/ivanantigravity-lgtm/seedance-polza-mcp-server.git
cd seedance-polza-mcp-server
uv sync
POLZA_AI_API_KEY=your_key uv run python -m seedance_polza_mcp_server.server
```
## Important
This server does not run live preview and does not spend tokens itself.
Generation is started only by explicit tool call.
## License
MIT.