OpenCode Integration with Veo MCP
📘 Overview:OpenCode MCP Overview →
The Google Veo series is currently the most distinctive video generation model in "native audio + high resolution" — veo3 / veo31 can generate synchronized ambient sounds and music while creating images, while the veo2-fast series is the most practical for "image-to-video" and "frame interpolation." After connecting to the Veo MCP Server in OpenCode, you can produce videos with sound in one go, eliminating the need for post-production audio tracks.
Veo MCP is suitable for creating product introduction videos that require native audio, film storyboard samples, and scenarios such as "transition animations between two design drafts."
¶ Obtain API Token
Before using the Veo MCP Server, you need to prepare an Ace Data Cloud API Token. OpenCode and Claude Code share the same Token, and the acquisition process is the same:
- Open the Ace Data Cloud Console - Application List to obtain your API Token for backup.
- If you are not logged in or registered, you will be automatically redirected to the login page; after logging in or registering, you will be automatically returned to the current page.
- The first application will grant a free quota, allowing you to experience the Veo MCP service for free.

One Token can be used for all MCP Servers provided by Ace Data Cloud, and there is no need to apply separately for Veo. The documentation and screenshots suggest displaying only the desensitized form, such as YOUR_ACEDATACLOUD_API_KEY, and do not paste the complete Token into public repositories, Issues, screenshots, or chat records.
Want to use Claude Desktop / Claude.ai web version for direct OAuth one-click authorization? Please see the Claude.ai / Desktop tutorial for Veo MCP.
¶ Configure OpenCode
OpenCode uses a single opencode.json file to describe all MCP Servers, which can be placed in two locations; choose one according to the "scope of effect" below. The field structure in both locations is exactly the same, with the only difference being priority.
It is strongly recommended to first write the Token to an environment variable:
export ACEDATACLOUD_API_KEY="replace with your real Token"
Then reference it in opencode.json using the {env:ACEDATACLOUD_API_KEY} placeholder to avoid writing the real Token into the file.
¶ Global: Shared by all projects
File location: ~/.config/opencode/opencode.json, suitable for "my own machine, configured once, usable by all projects."
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"veo": {
"type": "remote",
"url": "https://veo.mcp.acedata.cloud/mcp",
"enabled": true,
"oauth": false,
"headers": { "Authorization": "Bearer {env:ACEDATACLOUD_API_KEY}" }
}
}
}
⚠️
"oauth": falsecannot be omitted. AceData's MCP Server uses Bearer Token authentication and does not go through the OAuth process; OpenCode will automatically redirect 401 as an OAuth challenge, resulting inopencode mcp listshowingSSE error: Non-200 status code (401). Explicitly declaring"oauth": falseallows OpenCode to call directly withAuthorization: Bearer ..., andopencode mcp debug veowill also echoOAuth explicitly disabled, indicating it is effective.
¶ Project-level: Effective only for the current project
File location: opencode.json in the root directory of the current project, which will override the global configuration. Suitable for team sharing, single repository customization, or temporarily enabling a specific MCP in a certain project.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"veo": {
"type": "remote",
"url": "https://veo.mcp.acedata.cloud/mcp",
"enabled": true,
"oauth": false,
"headers": { "Authorization": "Bearer {env:ACEDATACLOUD_API_KEY}" }
}
}
}
If the project-level opencode.json will be committed to Git, please ensure to use the {env:ACEDATACLOUD_API_KEY} placeholder instead of the real Token to avoid leakage.
💡 If the
.envin Shell is not explicitlyexported, you need to useset -a && source .env && set +ato pass the variables to the OpenCode process; otherwise,opencode debug configwill show"Authorization": "Bearer "(placeholder not resolved).
¶ Verify Connection
After configuration, run:
opencode mcp list
opencode mcp debug veo
Seeing veo connected indicates a successful handshake. If it fails, check whether ACEDATACLOUD_API_KEY has been exported, whether oauth is set to false, and whether Authorization includes the Bearer prefix. The model and tool Schema will continue to change, so please select models that support native tool calls from the current directory.
¶ Typical Scenarios
After configuration, you can directly call using natural language in the OpenCode session without switching to /mcp:
Image-to-video + Frame interpolation + 1080p
Use these two design drafts to generate a transition animation with the first and last frames, then export it as 1080p.
Video with native audio
Generate a video with veo3: a convenience store on a rainy night, the sound of rain on the glass door, the doorbell ringing, and soft background music.
Video extension
Extend this video by 8 seconds, maintaining the same atmosphere.
¶ Tool List
The table below lists the main tools; you can obtain the current complete list by executing curl -X POST https://veo.mcp.acedata.cloud/mcp -H 'Authorization: Bearer <token>' -H 'Accept: application/json' -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","id":1,"method":"tools/list"}':
| Tool | Description |
|---|---|
| veo_text_to_video | Text to video generation |
| veo_image_to_video | Image to video generation (supports first/last frames) |
| veo_extend_video | Video extension |
| veo_get_1080p | Get 1080p HD version |
