Skip to main content
Model Context ProtocolOAuth 2.1

ModelRunner MCP Server

The ModelRunner MCP server is a hosted Model Context Protocol server that gives Claude, Cursor, VS Code, and any other MCP client the 164 public models in the ModelRunner catalog — image, video, audio, 3D, and text — as 23 callable tools, authorized over OAuth 2.1 with usage-based billing.

one config · one catalog· no API key in your setup
mcp config (bridge)OAuth
1Add the server
{
  "mcpServers": {
    "modelrunner": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.modelrunner.run/mcp"]
    }
  }
}
No API key — your browser opens once to authorize via OAuth.
2Ask in your assistant
you
Generate 3 reference frames for a misty-forest-at-dawn video.
mcp
run(nano-banana-2)×3
Misty forest reference frame 1Misty forest reference frame 2Misty forest reference frame 3
ref_01–03.png ↳ hosted
you
Animate those into an 8s clip with veo-3.1.
mcp
run(veo-3.1/reference-to-video, refs=ref_01–03)
you
Now subtitle it from the voiceover track.
mcp
run(whisper)
Dawn breaks over the silent pine · captions.srt ↳ hosted
23 tools registered · run_model · search · get_model · wait_for_request
Transport
Streamable HTTP
Auth
OAuth 2.1 + PKCE
Tools
All annotated
Billing
Per run, from your balance
Setup

Connect your client

One paste plus one authorization. No API key is written to disk anywhere.

  1. 1

    Add it to Claude Code

    terminal

    Paste the snippet below — it already carries the server URL.

  2. 2

    Authorize in your browser

    Then run /mcp in Claude Code to finish browser authorization.

terminal
claude mcp add --transport http modelrunner https://mcp.modelrunner.run/mcp
Any other MCP client works too — Streamable HTTP clients take the URL directly, stdio-only clients use the bridge tab. Only the clients above have had their setup verified.Full setup guide
Workflows

Ask for it in your own words

You

Search the ModelRunner catalog for text-to-video models, show me the three cheapest per second with their real prices, then run the cheapest one on: a paper boat drifting down a rain-flooded gutter at night.

search → get_model → run_model
Tool surface

All 23 tools

The complete surface, not a summary. Each badge is the tool’s own MCP annotation — the thing your client reads to decide what to prompt for.

readAnnotated read-only — changes nothing and costs nothing.writeAnnotated write, additive — creates something new.spendAnnotated write and destructive — irreversibly spends from your balance.destructiveAnnotated write and destructive — modifies or removes existing data.

Discover

5 toolsFind a model and read its real input schema before spending anything on it.
searchreadlist_modelsreadrecommended_modelsreadget_modelreadget_model_raw_schemaread
What each one does
search
Relevance-ranked free-text search across models and wrappers in one list.
list_models
Page the public catalog, filtered by category or input/output modality.
recommended_models
A curated shortlist per category — the opinionated alternative to paging.
get_model
One model's inputs, outputs, pricing and examples, trimmed for reading.
get_model_raw_schema
The untruncated OpenAPI-style JSON Schema, for when the summary elides an enum.

Run

3 toolsSubmit a job and collect the result. Media runs are async — submit, then poll; language (chat) models answer in the same call.
run_modelspendwait_for_requestreadget_requestread
What each one does
run_model
Run a catalog model or wrapper by its owner/alias endpoint. The one tool that spends money.
wait_for_request
Poll server-side for up to 2 minutes by default (10 max), returning the run’s latest status. The run continues regardless — call again to keep waiting.
get_request
Status, hosted output URLs, price snapshot and error for one of your requests.

Files & history

3 toolsGet local media to a URL a model input accepts, and find your past runs again.
create_upload_urlwriteupload_filewritelist_my_requestsread
What each one does
create_upload_url
A presigned URL to PUT bytes to directly — the path that keeps files out of the context window.
upload_file
Re-host a remote URL, or push base64 bytes when the assistant has no shell.
list_my_requests
Your own run history, newest first, filterable by status, endpoint and metadata tags.

Author wrappers

12 toolsTurn a working prompt into a named endpoint you and your team can re-run.
wrapper_authoring_guidereadlist_wrappersreadlist_my_wrappersreadrecommended_wrappersreadget_wrapperreadget_wrapper_raw_schemareadget_wrapper_prompt_templatereadget_wrapper_field_mappingsreadpreview_wrapperreadcreate_wrapperwritepatch_wrapperdestructivedelete_wrapperdestructive
What each one does
wrapper_authoring_guide
The full authoring guide as text, so the assistant reads the rules before writing one.
list_wrappers
Public wrappers in the catalog, as compact summaries.
list_my_wrappers
Your own wrappers, including the private and draft ones the public list hides.
recommended_wrappers
The curated shortlist per category.
get_wrapper
One wrapper's inputs, base models and description, trimmed for reading.
get_wrapper_raw_schema
Just the input schema, with the full enum lists the summary abbreviates.
get_wrapper_prompt_template
Just the Handlebars prompt template and its template context.
get_wrapper_field_mappings
Just the base-model wiring — default base model and per-model field mappings.
preview_wrapper
Render the prompt and mapped payload for sample inputs without running anything.
create_wrapper
Create a new wrapper owned by you — a private draft until you publish it.
patch_wrapper
Change one of your wrappers; only the fields you pass are touched.
delete_wrapper
Permanently remove one of your wrappers. Cannot be undone.
Wrappers

Turn a working prompt into an endpoint

12 of the 23 tools exist for one thing: once you and your assistant have tuned a prompt that works, publish it as a wrapper — a base model plus a prompt template and a simplified input schema, at your own owner/alias endpoint.

Browse wrappers15 public in the catalog
1
wrapper_authoring_guide

The assistant reads the authoring rules first, so what it writes is valid rather than plausible.

2
preview_wrapper

Renders the prompt and mapped payload for sample inputs without running anything, so nothing is charged while you iterate.

3
create_wrapper

Creates it under your own owner name as a private draft — nothing is public until you publish it.

FAQ

Frequently asked questions

What is the ModelRunner MCP server?

It is a hosted Model Context Protocol server at https://mcp.modelrunner.run/mcp that exposes the public ModelRunner catalog — image, video, audio, 3D and text models — as 23 tools any MCP client can call. Your assistant can search models, read their input schemas, run them, upload files, and get hosted result URLs back in the conversation.

What is the Model Context Protocol?

The Model Context Protocol (MCP) is an open standard that lets AI assistants use external tools and data through one common interface: a client such as Claude, Cursor, or VS Code connects to an MCP server, discovers the tools it exposes, and calls them during a conversation. The ModelRunner MCP server implements that standard, so any MCP client can work with the public ModelRunner catalog without a custom integration.

How is it different from a single-vendor MCP server?

A vendor MCP server exposes one company’s models. The ModelRunner MCP server exposes the public cross-provider catalog through one config entry, so your assistant can search the catalog and choose a model per task — or you name one — and models published to the catalog become available without you changing anything.

Which clients does it work with?

Any client that speaks MCP. Setup is verified for Claude Code, Claude Desktop and claude.ai (as a custom connector), Cursor, and VS Code with Copilot. Clients that only speak stdio connect through the mcp-remote bridge.

Do I need an API key in my MCP config?

No. The server speaks Streamable HTTP at https://mcp.modelrunner.run/mcp and authorizes over OAuth 2.1 — authorization code with PKCE (S256), scope mcp — so the first connection opens a browser window to authorize your ModelRunner account. It supports dynamic client registration (RFC 7591), refresh tokens, and revocation (RFC 7009), and advertises itself at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server, so a client discovers all of this from the URL alone. No credential is written into a config file — your client holds a token it can refresh, and disconnecting the server in your client ends its access.

How does pricing work through MCP?

Exactly as it does through the API: usage-based, charged per run against your account balance. Running a model costs that model’s published price; running a wrapper costs the wrapper’s published price, which includes whatever markup its author set over the base model. Connecting over MCP adds nothing on top of either. run_model is the only tool that spends money — the upload and wrapper-authoring tools change your own data, and are annotated so your client can prompt before each one.

How long does a generation take?

It depends entirely on the model and the parameters, so runs are asynchronous: run_model returns a request id immediately and never blocks your assistant. wait_for_request then watches that request server-side for up to 2 minutes per call (10 at most) and returns its latest status. The run keeps going regardless of whether anyone is waiting, so if a long render outlasts the wait, calling wait_for_request or get_request again picks it up — nothing is lost and nothing is charged twice.

What happens to my files and results?

Every file input is a URL, so a local file needs hosting first: create_upload_url returns a presigned URL your assistant PUTs the bytes to directly, which keeps them out of the conversation entirely. Inputs you upload and outputs a model produces are stored on ModelRunner and returned as hosted URLs. Requests are private to your account by default; list_my_requests reads only your own history and can filter by status, endpoint, and metadata tags you set at submit time.

Can my assistant spend money without asking?

Every tool is annotated, and clients use those annotations to decide what to prompt for: run_model is marked as a spending, destructive operation, so a client that honours annotations asks before each run. Runs are also gated on your account balance when they are submitted, which does not depend on client behaviour.

What happens if my balance cannot cover a run?

The run is rejected at submission: run_model returns an insufficient-balance error stating your current balance and the minimum that endpoint requires, no request is created, and nothing is charged. Runs that were already accepted keep going. Top up your balance and submit again.

Can I turn a prompt I keep reusing into something callable?

Yes — that is what wrappers are. A wrapper is a base model plus a prompt template and a simplified input schema, living at your own owner/alias endpoint. It is created as a private draft and is yours to publish when you are ready. 12 of the tools are for authoring them, including a guide the assistant reads first and a preview tool that renders the mapped payload without running anything.

Can I use it alongside the REST API and SDKs?

Yes. MCP, the REST API, and the JavaScript and Python SDKs all hit the same catalog, the same endpoints and the same balance. A run started from your assistant appears in your dashboard next to one started from code.

Set up MCPBrowse the cataloghttps://mcp.modelrunner.run/mcp