Seedance 2 MCP Server

September 7, 2026 ยท View on GitHub

Powered by MuAPI MCP compatible

A focused Model Context Protocol server for generating Seedance 2 videos through MuAPI. It exposes only the Seedance 2 workflows, so an assistant gets useful model-specific schemas instead of a large general-purpose catalog.

The implementation is informed by SamurAIGPT/muapi-mcp-server: it forwards a MuAPI key, keeps generation asynchronous, and provides both an MCP stdio transport and a small HTTP bridge.

๐Ÿ“บ Video Tutorial

How to Access Seedance 2.5 API (Step-by-Step Guide)

How to Access Seedance 2.5 API (Step-by-Step Guide) โ€” a full walkthrough of getting an API key and making your first Seedance 2.5 call via MuAPI.

Included tools

ToolPurpose
seedance_2_text_to_videoText-to-video generation; standard or fast quality route
seedance_2_image_to_videoAnimate one or more image references
seedance_2_first_last_frameGenerate a transition from one or two frame images
seedance_2_omni_referenceCombine image, video, and audio references
muapi_predict_resultPoll a MuAPI prediction by request_id
muapi_account_balanceRead the MuAPI credit balance

Generation tools return the completed prediction when used over stdio. The HTTP bridge returns a local request ID immediately and exposes the result at /mcp/predictions/{request_id} or as server-sent events.

Quick start

git clone https://github.com/Anil-matcha/seedance-2-mcp.git
cd seedance-2-mcp
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
export MUAPI_API_KEY=your_muapi_key_here

Run the standards-based stdio server for an MCP client:

python mcp_stdio.py

Run the local HTTP bridge instead:

python mcp_server.py
# http://localhost:8000/docs

MUAPIAPP_API_KEY is accepted as a backwards-compatible alternative. MUAPI_BASE_URL, MUAPI_HTTP_TIMEOUT, MUAPI_POLL_INTERVAL, and MUAPI_POLL_TIMEOUT can be used for local testing or a compatible MuAPI deployment.

Claude Code

With MUAPI_API_KEY exported in the shell used by Claude Code:

claude mcp add seedance-2 -- python /absolute/path/to/seedance-2-mcp/mcp_stdio.py

Cursor, Windsurf, and Claude Desktop

Copy the mcp.json entry and replace the placeholder path. Keep the API key in the client environment; do not commit it.

{
  "mcpServers": {
    "seedance-2": {
      "command": "python",
      "args": ["/absolute/path/to/seedance-2-mcp/mcp_stdio.py"],
      "env": {
        "MUAPI_API_KEY": "${MUAPI_API_KEY}"
      }
    }
  }
}

HTTP bridge

The HTTP process is useful for local integrations that need a simple request/poll surface:

curl http://localhost:8000/mcp/tools

curl -X POST http://localhost:8000/mcp/tools/seedance_2_text_to_video/call \
  -H "Authorization: Bearer $MUAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "arguments": {
      "prompt": "A red paper boat drifting through a sunlit forest stream, cinematic camera movement",
      "duration": 5,
      "aspect_ratio": "16:9",
      "quality": "standard"
    }
  }'

Poll the returned local ID:

curl http://localhost:8000/mcp/predictions/REQUEST_ID
curl -N http://localhost:8000/mcp/predictions/REQUEST_ID/stream

The bridge allowlists all upstream paths and never accepts an arbitrary endpoint URL. Generation and polling consume MuAPI credits according to the selected route.

Model notes

The server uses MuAPI's Seedance 2 API routes. A single image is a start frame; multiple images can be referenced in the prompt as @image1, @image2, and so on. Omni reference inputs use @imageN, @videoN, and @audioN. For reproducible prompts, keep the full scene, camera, lighting, and motion direction in the prompt.

Docker

docker build -t seedance-2-mcp .
docker run --rm -p 8000:8000 -e MUAPI_API_KEY="$MUAPI_API_KEY" seedance-2-mcp

Development

python -m unittest discover -s tests -v
python -m compileall -q server_core.py mcp_server.py mcp_stdio.py

License

MIT. See LICENSE.