RunAPI Vidu MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@RunAPI Vidu MCP ServerGenerate a video from this image and give me the task id and output URLs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Why This Package?
@runapi.ai/vidu-mcp is a focused Model Context Protocol server for the Vidu model line on RunAPI.
It gives MCP-compatible assistants direct access to 2 endpoints and 2 model variants without loading the full RunAPI catalog.
Use this per-model server when an agent should stay scoped to Vidu. Use @runapi.ai/mcp when one assistant should discover every RunAPI model line.
Related MCP server: PixVerse MCP
Install
Add it to Claude Code:
claude mcp add vidu -s user -- npx -y @runapi.ai/vidu-mcpUse project scope when the server should be shared with a repository:
claude mcp add vidu -s project -- npx -y @runapi.ai/vidu-mcpCodex, Cursor, Windsurf, VS Code, Roo Code, and other MCP hosts can use the same stdio command:
{
"mcpServers": {
"vidu": {
"command": "npx",
"args": ["-y", "@runapi.ai/vidu-mcp"]
}
}
}check_pricing works before sign-in. For task creation and status polling, ask your assistant to call the login tool. It opens a browser login and saves credentials to ~/.config/runapi/config.json, the same file used by runapi login.
Headless and CI hosts can still set RUNAPI_API_KEY before starting the MCP host.
Ready-made examples are in examples/ for Claude, Cursor, Windsurf, VS Code, and Roo Code.
Tools
Tool | Auth | Purpose |
| Yes | Create a Vidu image to video task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Vidu reference to video task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Fetch the current status and latest payload for an existing task. |
| No | Look up current pricing for a Vidu model and endpoint. |
Models
Vidu covers 2 model variants across 2 endpoints. Each tool accepts the models listed for it:
Tool | Models |
|
|
|
|
Model availability can change between releases. Use check_pricing or the Vidu model page for the current catalog view.
Agent Prompts
Ask your assistant in natural language; it can inspect pricing, create the task, and return the task id plus output URLs.
Create a task
Run a Vidu image to video task with RunAPI.The assistant can call check_pricing, then image_to_video, and return the task id, status, and output URLs.
Submit without waiting
Create the task but don't wait for it to finish.The assistant calls the create tool with wait: false and returns the task id. Check on it later with get_task.
Check pricing before creating
Check current Vidu pricing, then create the task if it matches my request.The assistant calls check_pricing and can link to the Vidu model page for the canonical catalog entry.
Configuration
The server resolves auth in this order:
RUNAPI_API_KEYenvironment variable, useful for headless and CI hosts~/.config/runapi/config.json, created by the MCPlogintool orrunapi loginNo key, which still allows
check_pricing
The config file is normally managed by login. A pre-provisioned headless config can use:
{
"apiKey": "your_runapi_key"
}Do not commit real API keys.
Links
Resource | URL |
Vidu model page | |
npm package | |
GitHub repository | |
RunAPI MCP overview | |
RunAPI docs |
License
Licensed under the Apache License, Version 2.0.
Available Tools
5 toolscheck_pricingC
Look up RunAPI pricing for the vidu model line.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model slug. Defaults to the line's primary model. | |
| action | No | Endpoint name. Defaults to the endpoint that offers the model. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it does not say whether this requires authentication (a sibling named 'login' hints at an auth model that is never confirmed), whether results are cached or live, or whether any side effects occur. One sentence of pure intent leaves the agent without the operational context a zero-annotation tool needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the purpose front-loaded and no filler or redundancy. It is arguably under-specified rather than bloated, which is penalized in other dimensions, but as written every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must explain the shape of the result, and it does not: an agent cannot tell whether pricing is per-request, per-second of video, per endpoint, or returned as a table. For a lookup tool whose entire value is the returned pricing data, this is a meaningful incompleteness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'model' and 'action' are already documented with their defaults, making the schema the primary source of parameter meaning. The description adds only the enclosing context ('vidu model line'), which mildly clarifies the valid model space but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Look up') and resource ('RunAPI pricing') scoped to the 'vidu model line', which is enough for an agent to distinguish it from siblings like login, get_task, or image_to_video that perform entirely different jobs. It does not explicitly contrast with a sibling, but none of the listed siblings overlap in function, so differentiation is effectively achieved.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no when-to-use guidance: it never says to call this before invoking image_to_video/reference_to_video, nor whether it is a prerequisite, cacheable, or optional. There are no exclusions or named alternatives, leaving the agent to infer the tool's role in a workflow entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskA
Fetch the current status and latest result payload for a vidu task.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Asynchronous endpoint the task was created on. | |
| task_id | Yes | Task id returned when the task was created. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that the operation is a read ('Fetch') and what it returns ('current status and latest result payload'), but omits auth requirements, rate limits, error behavior, and whether calls are safe to repeat. This is a clear gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single front-loaded sentence with no filler; it states the action and the two pieces of information returned. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter fetch tool with full schema coverage and no annotations, the description is largely sufficient for invocation. However, since there is no output schema, it only vaguely describes the return ('status and latest result payload') and omits polling or retry context, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description does not mention task_id or action, adding no meaning beyond the schema; the baseline of 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'Fetch' with a clear resource ('current status and latest result payload') and target ('vidu task'). This distinguishes it from sibling creation tools like image_to_video and reference_to_video, which start tasks rather than check them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance, no mention of polling after task creation, and no alternatives named (e.g., that this is the tool to call after image_to_video or reference_to_video). Usage is only implied by the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_to_videoB
Create a Vidu task on RunAPI (image to video). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| audio | No | Generate synchronized audio. False produces a silent video. Declared type: boolean. | |
| model | No | RunAPI model slug for this model line. | |
| prompt | No | Optional video description, up to 20,000 characters. Declared type: string. | |
| timeout_ms | No | ||
| callback_url | No | RunAPI customer callback URL for the terminal task result. Declared type: string. | |
| duration_seconds | No | Video duration in seconds. Declared type: integer. | |
| poll_interval_ms | No | ||
| output_resolution | No | Output video resolution. Declared type: string. Known values: "540p", "720p", "1080p", "2k", "4k". | |
| first_frame_image_url | Yes | HTTP(S) URL of a JPG, JPEG, PNG or WEBP first frame, up to 50 MB. The provider validates the remote file. Declared type: string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the asynchronous submit-task pattern and the shape of the return (task id, status, output URLs), which is real value. However, it says nothing about auth requirements, cost implications (a check_pricing sibling exists), or how wait/poll_interval_ms change behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the action is front-loaded and the return contract follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no annotations and no output schema, the description does cover the return values (compensating for the missing output schema) but leaves the async/polling workflow, auth, and cost context unexplained. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents most parameters including the image URL constraints and resolution values. The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a Vidu task ... image to video') and the parenthetical disambiguates it from the sibling reference_to_video. It stops short of explicitly routing the agent between the two video-generation siblings, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to pick this over reference_to_video, no mention that get_task exists for retrieving results of a submitted task, and no prerequisites (e.g. login) are stated. The agent is left to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginA
Authenticate RunAPI by opening a browser PKCE login flow and saving the API key to ~/.config/runapi/config.json.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Re-run browser login when the current credential comes from the local config file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the interactive browser flow and the file write side effect (config.json). However, it does not mention that it may overwrite existing credentials or that it could block waiting for user input, though these are implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action ('Authenticate RunAPI') and provides necessary details without extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple login tool with one optional parameter and no output schema, the description covers the core purpose and side effect. It lacks an explicit statement that this is a prerequisite for other tools, but that is implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the only parameter 'force' has a description). The tool description adds no additional meaning about parameters beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Authenticate'), target resource ('RunAPI'), method ('browser PKCE login flow'), and side effect (saving to config.json). It is distinct from sibling tools, none of which relate to authentication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (to authenticate RunAPI) but does not explicitly say when to run it (e.g., before other RunAPI tools) or when to use the 'force' parameter. Since there are no alternative auth tools among siblings, 'vs alternatives' is not applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reference_to_videoC
Create a Vidu task on RunAPI (reference to video). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| audio | No | Generate synchronized audio. False produces a silent video. Declared type: boolean. | |
| model | No | RunAPI model slug for this model line. | |
| prompt | Yes | Video description, up to 20,000 characters. Declared type: string. | |
| timeout_ms | No | ||
| aspect_ratio | No | Output video aspect ratio. Declared type: string. Known values: "16:9", "9:16", "1:1", "4:3", "3:4". | |
| callback_url | No | RunAPI customer callback URL for the terminal task result. Declared type: string. | |
| duration_seconds | No | Video duration in seconds. Declared type: integer. | |
| poll_interval_ms | No | ||
| output_resolution | No | Output video resolution. Declared type: string. Known values: "540p", "720p", "1080p", "2k", "4k". | |
| reference_audio_urls | No | Up to 3 HTTP(S) URLs of MP3 references, each 3 to 12 seconds and up to 50 MB. The provider validates the remote files. Declared type: array. | |
| reference_image_urls | Yes | Ordered HTTP(S) URLs of 1 to 15 JPG, JPEG, PNG or WEBP reference images. The provider validates the remote files. Declared type: array. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it only discloses return values (task id, status, output URLs). It omits that the call is asynchronous, that wait=true (the default) blocks until a terminal status, that timeouts/poll intervals are configurable, and that the provider validates and may reject remote reference files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action and return shape front-loaded and no filler. It is tight but arguably too terse for a 12-parameter, async, no-annotation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter async generation tool with no annotations and no output schema, the description leaves out the polling/wait semantics, validation failure behavior, and two undocumented params. Mentioning the return fields is a partial offset, but an agent cannot call this correctly without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents most parameters (audio, aspect_ratio, reference URLs with their limits, callback_url, etc.). The description adds nothing beyond that, and two parameters (timeout_ms, poll_interval_ms) are undocumented in both places. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create), resource (a Vidu task on RunAPI), and modality (reference to video), which implicitly separates it from the sibling image_to_video. It never names the sibling explicitly, so the differentiation relies on the reader parsing 'reference' vs 'image'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no condition for choosing this over image_to_video, and no mention that reference_image_urls is mandatory or what happens when reference images conflict with the prompt. The agent gets no routing help from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
check_pricing - First observed
get_task - First observed
image_to_video - First observed
login - First observed
reference_to_video
TDQS
Scored across 5 tools
Each tool maps to a distinct purpose: login, task creation (two variants), task polling, and pricing. The image_to_video vs reference_to_video pair shares the same 'create a Vidu task' framing and could momentarily confuse, but the descriptions clearly distinguish the two input modes.
Most names follow a verb_noun convention (get_task, check_pricing) or a clear X_to_video pattern shared by the two generation tools. login is a bare verb that breaks the pattern slightly, but the set remains readable and predictable overall.
Five tools is well-scoped for a video-generation API: auth, two generation modes, polling, and pricing. Nothing feels redundant, though the surface is on the leaner side.
Core workflow (login, create task, poll task, check pricing) is covered, but there is no tool to list existing tasks, cancel a task, or access other plausible Vidu modes (e.g. text-to-video). get_task partially compensates but leaves dead ends for task management.
Maintenance
Related MCP Connectors
Plan, compare, price, generate, and recover AI video from compatible MCP clients.
Generate AI video from any MCP client. Pick the model, see the per-second price before you spend.
Create and manage cinematic AI video renders through the Future Video Studio Agent API.
Create images & video from any MCP agent — 17 models, spend limits, one URL.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides access to Vidu's video generation models for creating high-quality videos from text, images, and reference content. It enables users to generate creative video content directly within MCP-compatible applications like Claude and Cursor.55MIT

PixVerse MCPofficial
AlicenseNot gradedqualityFmaintenanceEnables video generation from text, images, and more through MCP-compatible apps like Claude and Cursor.52MIT- FlicenseAqualityDmaintenanceEnables video generation using the Seedance 2.0 model through MCP, supporting both OpenAI and Volcengine API formats with tools for creating, monitoring, and downloading videos.6-
- AlicenseAqualityCmaintenanceEnables MCP-compatible agents to access KaiRouter's video generation API, providing tools to list available video models, generate videos (text-to-video or image-to-video) asynchronously, check job status, and list recent jobs.4MIT