# How to Connect Seedance MCP to OpenCode for Terminal-Based Video Workflows

> Source: <https://dev.to/germey/how-to-connect-seedance-mcp-to-opencode-for-terminal-based-video-workflows-blk>
> Published: 2026-10-20 01:07:01+00:00

When a video task starts in a terminal, the awkward part is often context switching: leave the editor, open a separate tool, upload an image, copy the result back, and repeat. This guide shows how to connect a remote Seedance MCP server to OpenCode so a terminal session can request short videos through natural-language instructions.

The integration exposes two documented tools:

`seedance_generate_video` for text-to-video generation`seedance_generate_video_from_image` for image-to-video generation
That covers vertical short clips, product-demo animations, technical opening clips, and other cases where the first draft starts as either a description or an existing image. OpenCode connects to the remote MCP endpoint below; no local MCP server is required.

```
https://seedance.mcp.acedata.cloud/mcp
```

Authentication uses a Bearer token in the `Authorization` header. Keep the real token outside the configuration file and let OpenCode resolve it from an exported environment variable.

OpenCode reads MCP definitions from `opencode.json`. Use `~/.config/opencode/opencode.json` for a global setup, or `opencode.json` in a project root for a project-specific setup. The project-level file overrides the global one, so it is a useful place to test the integration first.

```
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "seedance": {
      "type": "remote",
      "url": "https://seedance.mcp.acedata.cloud/mcp",
      "enabled": true,
      "oauth": false,
      "headers": {
        "Authorization": "Bearer {env:ACEDATACLOUD_API_KEY}"
      }
    }
  }
}
```

`type` declares a remote MCP connection, `url` selects the Seedance server, and `enabled` controls whether OpenCode loads it. The `oauth` field must explicitly be `false`: this server expects Bearer authentication, not an OAuth challenge. The `headers.Authorization` value supplies the token without putting the secret in JSON.

Export the token before starting OpenCode:

```
export ACEDATACLOUD_API_KEY="replace with your real token"
```

Do not commit the real value to Git. If you keep it in a `.env` file, exporting matters. One documented way to load exported variables into the OpenCode process is:

```
set -a && source .env && set +a
```

Otherwise the placeholder may resolve to an empty value. The configuration can look correct while the request still carries an incomplete header.

Start with:

```
opencode mcp list
opencode mcp debug seedance
```

A successful setup should show the Seedance connection as `connected`. If you see HTTP 401 or an SSE non-200 error, check these items in order:

`ACEDATACLOUD_API_KEY` is exported in the shell that launches OpenCode.`Bearer` prefix.`oauth` is present and set to `false`.
This separates an environment-variable problem from an authentication-mode problem and avoids putting a real secret into debug output.

After the handshake succeeds, stay in the OpenCode session and describe the output. For example:

```
Generate a vertical short video: a girl turns under a cherry blossom tree, slow motion, beautiful light and shadow
```

Specify orientation, subject, movement, and lighting rather than asking for a vague “cool video.” OpenCode can then use `seedance_generate_video` through MCP while remaining the interface for the request.

A developer-focused smoke test is:

```
Generate a 3-second video intro: a glowing code symbol </> transitions from blurry to clear, with particle effects in the background, in a tech blue tone
```

Short prompts are easier to debug before adding references or several creative constraints.

When you already have a still image, use the image-to-video capability instead of describing every visual detail again:

```
Use this image as a cover, generate a video with the camera slowly zooming in
```

The relevant tool is `seedance_generate_video_from_image`. This is useful for turning a product screenshot, illustration, or existing cover into a motion asset while preserving the starting composition.

If the server does not connect, avoid changing several variables at once. Confirm the URL is exactly `https://seedance.mcp.acedata.cloud/mcp`, verify that the token is available to the OpenCode process, and run `opencode mcp debug seedance` again. If the connection is healthy but a generation request is not selected, use a model that supports native tool calls, since the available model and tool schema can change over time.

The complete configuration and current tool-list request are in the [OpenCode + Seedance MCP guide](https://platform.acedata.cloud/documents/opencode-mcp-seedance). The practical takeaway is simple: keep credentials in the environment, keep `oauth: false` explicit, verify the handshake first, and only then build more elaborate terminal workflows.
