A side-by-side look at the Relay and Replicate MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Relay for conversational ai work as a local process; choose Replicate for conversational ai as a local process. You can also run both side by side in one mcpServers block.
RELAY_API_KEY, RELAY_BASE_URL.search_models, get_model, get_pricing.PLATFORM_REPLICATE_KEY.list_models, model, model_versions.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Conversational AI | Conversational AI |
| Quality signal | 61/100 · Good | 56/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | RELAY_API_KEYRELAY_BASE_URL | PLATFORM_REPLICATE_KEY |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 0 |
| Directory activity | 1 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 14 | 16 |
| Full listing | View Relay | View Replicate |
search_modelsLists Relay models by tag and/or text. Common tags: text-to-image, image-to-image, text-to-video, image-to-video, video-to-video, text-to-speech, speech-to-text, text-to-text, text-to-embedding. image-to-image also lists every image model that takes an input image. Returns name, tag, route and accepts (input media the model takes, e.g. ["image"]; [] for none) per model (at most 50). Then call get_model with a name for its input schema.get_modelReturns one model's route, request_schema (what run_model's input must follow), request_example, pricing and availability. Then call run_model with an input shaped like request_example.get_pricingReturns Relay's public list prices (USD), optionally for one model, plus media_storage: the per-file fees of the store_output / upload retention SKUs (relay1d, relay7d, …). Then estimate_cost for a number.estimate_costEstimates the USD cost of a call from the public price list: an estimate, not an invoice (the bill uses provider-reported usage and any custom pricing on your account). Pass only the usage fields the model's billing_type (see get_model or get_pricing) reads: per_token: input_tokens, output_tokens, cached_input_tokens; per_image: image_count, resolution_tier; per_second_video: duration_seconds, quality_mode, sound; per_second_audio: duration_seconds; per_character: character_count; per_media_token: media_input_tokens, media_output_tokens. Add store_output / retention / file_count for storage fees.run_modelRuns any Relay model by name (billed to your key). input follows get_model's request_schema (request_example runs as is). Every model whose schema takes async (image, video, audio) is submitted as a task: it waits up to 45 s, past that it returns a task_id — do not resubmit, call check_task. Chat models answer inline. Result links expire 1 h after completion unless store_output names a media_storage SKU from get_pricing. Pass an idempotency_key if you may retry the same submit. Needs a Relay credential.check_taskChecks a task run_model returned (no key needed: the task_id is the capability). Waits up to 30 s for it to finish; returns the result when completed, else its status: then call check_task again, never resubmit. Task results are kept 1 h after they finish.upload_fileHosts an image, video or audio file on Relay and returns its url: pass that url to any *_url input of run_model. Give exactly one of path (local server only, ≤ 100 MB), base64 (≤ 4 MB) or url (a public link Relay copies). retention: relay1h (default, free within a daily quota) or a media_storage SKU from get_pricing. Needs a Relay credential.list_workflowsList Relay's workflow templates: multi-step pipelines (e.g. script → voiceover) run as one call. Each entry has workflow_id, input_schema and its steps (step_id + model). Run one with run_workflow; inputs follow input_schema.run_workflowStart a workflow run (one submit) and wait up to wait_seconds (≤ 45) for it to finish. Completed → the final output; still running → run_id: call check_workflow_run with it, never resubmit (a new run bills again). Each step is billed as an ordinary request. webhook_url gets ONE signed workflow.completed / workflow.failed delivery when the run ends. Get workflow_id and the inputs shape from list_workflows. Needs a Relay credential.check_workflow_runPoll a workflow run by run_id, waiting up to wait_seconds (≤ 30) for it to end. Completed → the final output; failed / cancelled → the error; still running → its steps so far: call check_workflow_run again. No key needed: the run_id is the access token.cancel_workflow_runCancel a workflow run. Cancels between steps only: a step already running completes and bills. A run that has already ended answers WORKFLOW_RUN_NOT_CANCELLABLE. Needs a Relay credential.get_creditsRead the account's credit balance, active promo credits and consumption. Needs a dashboard JWT or a custom-tier superkey; a plain inference key gets PERMISSION_DENIED (403). Needs a Relay credential.list_modelsList all public models available on Replicate, paginated via cursor; returns owner, name, description, run count, and latest version id for each model.modelFetch metadata for a specific Replicate model by owner and name, including description, visibility, run count, latest version, and GitHub URL.model_versionsList all published versions of a Replicate model by owner and name; returns version ids, creation timestamps, and input/output schema for each version.model_versionFetch full metadata for a specific Replicate model version by owner, name, and version_id, including the complete input/output OpenAPI schema and Cog version.search_modelsSearch public Replicate models by keyword query; returns matching models with owner, name, description, and run count.collectionsList all curated Replicate model collections (e.g. "text-to-image", "speech-to-text"); returns collection slug, name, and description.collectionFetch models belonging to a specific Replicate collection by slug (e.g. "text-to-image"); returns the collection description and a list of model objects.create_predictionStart a Replicate model run by submitting a version id and input object; returns a prediction id and status that can be polled with the prediction tool until output is ready.predictionPoll the status and retrieve output for a Replicate prediction by id; returns status (starting/processing/succeeded/failed/canceled), output URLs, and logs.list_predictionsList your recent Replicate predictions in reverse chronological order, paginated via cursor; returns prediction id, model version, status, and creation timestamp.cancel_predictionCancel a prediction.list_deploymentsList your Replicate model deployments (dedicated, auto-scaled endpoints), paginated via cursor; returns owner, name, current model version, and scaling config.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"relay-4": {
"command": "npx",
"args": [
"-y",
"@relaygpu/mcp"
],
"env": {
"RELAY_API_KEY": "YOUR_RELAY_API_KEY_HERE",
"RELAY_BASE_URL": "YOUR_RELAY_BASE_URL_HERE"
}
}
}
}
{
"mcpServers": {
"replicate": {
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-replicate"
],
"env": {
"PLATFORM_REPLICATE_KEY": "YOUR_PLATFORM_REPLICATE_KEY_HERE"
}
}
}
}