WaveSpeed MCP Server
The WaveSpeed MCP server lets an AI tool search the live model catalog, read a model’s real input schema, check prices, and run image, video, audio, and 3D models on your WaveSpeed account.
There are two ways to connect, with the same tools:
| Remote (URL) | Local (command) | |
|---|---|---|
| Address | https://api.wavespeed.ai/mcp | npx -y @wavespeed/mcp |
| Runs on | WaveSpeed | Your computer |
| Sign in | OAuth in your browser, or an API key header | WAVESPEED_API_KEY, or wavespeed login |
| Good for | Claude on the web, ChatGPT, tools that add a server by URL | Claude Code, Claude Desktop, Cursor, Cline, and other tools that start a local command |
| Local files | Pass public URLs | "@./photo.jpg" is uploaded for you |
Remote server
The address is:
https://api.wavespeed.ai/mcpClaude on the web
Add a custom connector and enter the address above. Claude opens a WaveSpeed page where you sign in and approve the connection.
ChatGPT
Add a custom connector (this needs Developer Mode in ChatGPT), enter the address above, and choose OAuth. Approve the connection on the WaveSpeed page that opens.
Claude Code
# Sign in through your browser the first time you use it.
claude mcp add --transport http wavespeed https://api.wavespeed.ai/mcpOr skip the browser and use an API key:
claude mcp add --transport http wavespeed https://api.wavespeed.ai/mcp \
--header "Authorization: Bearer $WAVESPEED_API_KEY"Cursor
{
"mcpServers": {
"wavespeed": {
"url": "https://api.wavespeed.ai/mcp",
"headers": { "Authorization": "Bearer YOUR_WAVESPEED_API_KEY" }
}
}
}VS Code
Add this to .vscode/mcp.json:
{
"servers": {
"wavespeed": {
"type": "http",
"url": "https://api.wavespeed.ai/mcp",
"headers": { "Authorization": "Bearer YOUR_WAVESPEED_API_KEY" }
}
}
}Machines without a browser
On a server, in a container, or in CI, send an API key instead of signing in through a browser. Create a key at wavespeed.ai/accesskey from any device and pass it in the Authorization: Bearer header, as in the examples above.
Signing in
When a tool connects with OAuth, WaveSpeed creates a new API key for that connection and names it MCP · <app>, for example MCP · Claude. The app can run models and use your credits with that key, the same as any other API key on your account.
To disconnect, delete the key on the API Keys page. The next request from that app is refused.
If you are asked to approve an app that WaveSpeed has not verified, the page shows its address and an unverified warning. Only approve it if you started that connection yourself.
Tools
| Tool | What it does |
|---|---|
list_models | Search the live catalog by text or type (for example text-to-image, image-to-video) |
get_model_schema | Show a model’s required fields, accepted inputs, and defaults |
create_upload | Remote server only: get a temporary address to upload a file from a tool that can send HTTP requests, and the download_url to use as an input |
run_model | Run a model and return the output URLs |
get_price | Estimate the cost of a run before you spend |
get_balance | Show your credit balance |
get_prediction | Check on, or keep waiting for, a run that has not finished |
Files
Model inputs that take a file take a URL.
- Local server: write
"@./photo.jpg"as the value and the file is uploaded for you, or callupload_fileto get a hosted URL. - Remote server: it cannot read files on your computer. Pass a public URL. If the tool you use can send HTTP requests itself (a coding agent with a shell, for example), call
create_uploadwith the file name and exact size, send the file with an HTTPPUTto the address it returns using the headers it returns, and pass the returneddownload_urlas the input. The upload address works for a short time and takes the file directly; do not send your API key to it.
Running models
run_model takes the model ID and an input object whose keys come from get_model_schema.
- Unknown input names are rejected. The API ignores input names a model does not accept and still charges for the run, so the server refuses the request before it is submitted and suggests the closest valid name. Older names a model still accepts are allowed.
- Long runs.
run_modelwaits up to 50 seconds by default. If the run is not done, it returnsdone: falseand the prediction ID, and the run keeps going. Check it withget_prediction. On the remote serverwait_secondscan be up to 100. - Files. See Files above.
Checking prices
get_price returns an estimate. Pricing for some models depends on inputs such as duration or resolution. If you leave those out, the result lists the inputs it could not take into account and says when it is only the minimum price. The amount actually charged for a run is what counts.
Troubleshooting
| Problem | What to do |
|---|---|
| Requests are refused after it worked before | The key for that connection was deleted or disabled. Reconnect, or create a new key. |
Invalid API key | Check the key on the API Keys page. |
| A tool says an input is not accepted | Call get_model_schema and use the names it lists. |
A run returns done: false | The run is still going. Call get_prediction with the ID. |
| You cannot create more keys | An organization has a limit on active keys. Delete ones you no longer use. |