WaveSpeed
# WaveSpeed MCP Server Add wavespeed MCP server to Cursor An MCP server for the [WaveSpeed](https://wavespeed.ai) platform: run any model on the **live catalog** — image, video, audio, 3D — from Claude Code, Claude Desktop, Cursor, Cline, or any MCP client. Built on the same design as the open-source [`@wavespeed/cli`](https://github.com/WaveSpeedAI/wavespeed-cli): - **No hardcoded models.** The catalog comes from the live API (1h cache); new platform models work the day they ship. - **One generation verb.** `run_model` executes anything; `get_model_schema` tells the agent what inputs a model actually accepts, so it reads before it writes. - **Inputs are never mutated.** The one explicit transform is the `@path` marker — a `"@./photo.jpg"` value inside `input` uploads the file and substitutes its hosted URL. Bare paths are passed through untouched. - **Honest pricing.** `get_price` quotes before you spend and names the inputs the quote was blind to (`unpriced_inputs`) instead of presenting a formula's floor as "the" price. ## Tools | Tool | What it does | |---|---| | `list_models` | Search the live catalog by text or modality type | | `get_model_schema` | A model's real input schema (required, properties, defaults) | | `run_model` | Submit + wait; rejects input keys the model doesn't accept; `@path` inputs upload automatically; returns output URLs | | `get_price` | Cost estimate with `unpriced_inputs` / `at_base_price` disclosure | | `get_balance` | Account credit balance | | `upload_file` | Local file → hosted URL (24h content-hash dedupe) | | `get_prediction` | Status/outputs of any run by id; optional `wait_seconds` to wait for it | Some generations take minutes to hours. `run_model` submits the run and returns the prediction id right away (`done: false`); the assistant then calls `get_prediction` with that id and `wait_seconds` (max 1800) until `done` is `true`. The task keeps running server-side, so a dropped connection loses nothing. Pass `wait_seconds` to `run_model` to wait for a quick model in the same call. While waiting, both tools send MCP progress notifications that carry the prediction id. ## Setup ### Remote (nothing to install) The same server is hosted at: ```text https://api.wavespeed.ai/mcp ``` - **Claude on the web / ChatGPT:** add a custom connector with that address and approve the connection on the WaveSpeed page that opens. Approving creates a dedicated API key (named `MCP · `) that you can delete on the [API Keys](https://wavespeed.ai/accesskey) page to disconnect. - **Claude Code:** `claude mcp add --transport http wavespeed https://api.wavespeed.ai/mcp` - **Cursor:** Add the hosted wavespeed MCP server to Cursor - **VS Code:** `code --add-mcp '{"name":"wavespeed","type":"http","url":"https://api.wavespeed.ai/mcp"}'` - **Any other client that sends request headers:** point it at the URL with `Authorization: Bearer `. The hosted server has the same tools, with one difference for files: it cannot read files on your computer, so pass public URLs, use `create_upload` from a tool that can send HTTP requests (it returns a temporary upload address and the `download_url` to use as an input), or, in ChatGPT, attach the file to the chat (the `upload_attachment` tool, which only ChatGPT can fill, imports it and returns a `download_url`). Full guide: [wavespeed.ai/docs/mcp](https://wavespeed.ai/docs/mcp). ### Local (npx) Auth resolves from `WAVESPEED_API_KEY`, or from the CLI's stored login (`wavespeed login`) — one login covers both tools. Keys: [wavespeed.ai/accesskey](https://wavespeed.ai/accesskey). **Claude Code** ```bash claude mcp add wavespeed -- npx -y @wavespeed/mcp ``` **Claude Desktop / other clients** (`mcpServers` config): ```json { "mcpServers": { "wavespeed": { "command": "npx", "args": ["-y", "@wavespeed/mcp"], "env": { "WAVESPEED_API_KEY": "wsk_..." } } } } ``` ## Example prompts - *"Generate a 16:9 hero image of a cyberpunk skyline at golden hour."* - *"Take ./photo.jpg and replace the background with a sunlit kitchen."* (the agent passes `"@./photo.jpg"`) - *"Animate ./hero.png with subtle parallax — check the price first."* ## Development ```bash npm install npm run dev # run from source (stdio) npm run lint # typecheck npm run build # tsc → dist/ ``` ## License [MIT](LICENSE) --- **[WaveSpeed AI](https://wavespeed.ai/)** — AI image & video generation platform. Try it in the browser: **[Image generator](https://wavespeed.ai/image-generator)** · **[Video generator](https://wavespeed.ai/video-generator)**