> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/agents/mcp-server.md).

# MCP Server

Work on your Roboflow projects together with AI. Connect Claude Code (or any MCP-compatible agent) to your workspace. It can create projects, upload data, train models, build Workflows, and guide you through the visual steps in the Roboflow UI. You handle what you're best at (seeing, labeling, judging results), your agent handles the rest.

## Demo

{% embed url="<https://www.youtube.com/watch?v=wgp6If3wi0o>" %}

<https://mcp.roboflow.com/>

## Adding MCP

The Roboflow MCP server uses OAuth for authentication - no API key needed. You'll be prompted to sign in to Roboflow on first use.

### Claude Connector (Recommended)

Add Roboflow as a connector in your Claude account. Once connected, it works everywhere - Claude.ai, Claude Desktop, and Claude Code.

[**Add Roboflow to Claude**](https://claude.ai/directory/connectors/dbbc26cf-80b0-4a85-9877-f85874282794) - click the link, confirm, and you're done. You'll be prompted to sign in to Roboflow with OAuth on first use.

### Claude Code CLI

```bash
claude mcp add -s user roboflow \
  --transport http https://mcp.roboflow.com/mcp
```

### Cursor

Install the Roboflow plugin from the [Cursor marketplace](https://cursor.com/marketplace/roboflow), or run `/add-plugin roboflow` in Cursor. Either installs the MCP server along with Roboflow's skills. Sign in to Roboflow with OAuth on first use.

To configure the server manually instead, add this to Cursor's MCP config (`~/.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "roboflow": {
      "type": "http",
      "url": "https://mcp.roboflow.com/mcp"
    }
  }
}
```

### Codex

Add this to `~/.codex/config.toml`:

```toml
[mcp_servers.roboflow]
url = "https://mcp.roboflow.com/mcp"
```

### Connecting MCP Gateways (Pre-Registered Credentials)

Most MCP clients (Cursor, Claude Desktop, VS Code, Claude Code) register automatically using Dynamic Client Registration. Some platforms require a pre-registered `client_id` and `client_secret` instead - for example, Azure AI Foundry agents, Microsoft Copilot Studio, and TrueFoundry AI Gateway.

To connect one of these platforms:

1. Go to **Workspace Settings > Developer** in the Roboflow dashboard
2. Click "Create OAuth App" and fill in a name, redirect URI (matching your gateway's callback URL), and allowed scopes
3. Set "Token endpoint authentication" to match your gateway: `client_secret_basic` (HTTP Basic header, used by Azure and TrueFoundry) or `client_secret_post` (secret in the form body)
4. Copy the Client ID and Client Secret (shown once)
5. In your gateway's connector form, enter:

| Field                         | Value                                                                               |
| ----------------------------- | ----------------------------------------------------------------------------------- |
| MCP Server URL                | `https://mcp.roboflow.com/mcp`                                                      |
| Authorization URL             | `https://app.roboflow.com/oauth/authorize`                                          |
| Token URL                     | `https://app.roboflow.com/oauth/token`                                              |
| Discovery (OAuth AS metadata) | `https://app.roboflow.com/.well-known/oauth-authorization-server`                   |
| Scopes                        | Space-separated list (ex: `workspace:read project:read model:infer offline_access`) |

Include `offline_access` in your scope list if the gateway supports refresh tokens.

For the full scope catalog, see [Available Scopes](https://docs.roboflow.com/reference/authentication/authentication/sign-in-with-roboflow-getting-started#available-scopes).

## Tools

The server exposes 141 tools. Most MCP clients namespace them, so `projects_list` appears as `mcp__roboflow__projects_list`. Each tool declares the OAuth scopes it needs, and your client only gets the scopes you approve at sign-in.

### Agent

Hand a task to the Roboflow agent and collect what it produced.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>agent_chat</code></td><td>Chat with the Roboflow AI agent for Q&#x26;A, Workflow building, and solution planning.</td></tr><tr><td><code>agent_chat_result</code></td><td>Collect the result of an agent_chat run that was still working.</td></tr><tr><td><code>agent_conversations_list</code></td><td>List agent conversations in the workspace.</td></tr><tr><td><code>agent_conversation_get</code></td><td>Get one conversation with its message history.</td></tr><tr><td><code>agent_workflow_publish</code></td><td>Publish the latest agent-edited draft of a Workflow.</td></tr></tbody></table>

### Projects

Create and inspect projects in your workspace.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>projects_list</code></td><td>List projects in the workspace.</td></tr><tr><td><code>projects_get</code></td><td>Get project detail including versions, classes, splits, and trained models.</td></tr><tr><td><code>projects_create</code></td><td>Create a new computer vision project.</td></tr><tr><td><code>projects_delete</code></td><td>Delete a project, moving it to the workspace Trash.</td></tr><tr><td><code>projects_fork</code></td><td>Enqueue an async fork of a public Universe project into your workspace.</td></tr><tr><td><code>projects_health</code></td><td>Get the dataset health check for a project.</td></tr><tr><td><code>datasets_rebalance_splits</code></td><td>Enqueue an async rebalance of a project's train, valid, and test splits.</td></tr></tbody></table>

### Images

Upload images and find them again later.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>image_upload</code></td><td>Upload local image files to a project via a zip.</td></tr><tr><td><code>image_upload_status</code></td><td>Check the status of an image zip upload task.</td></tr><tr><td><code>images_search</code></td><td>Search for images inside a project.</td></tr><tr><td><code>images_workspace_search</code></td><td>Search images across the entire workspace using RoboQL.</td></tr><tr><td><code>images_update_metadata</code></td><td>Update metadata and tags on a single image.</td></tr><tr><td><code>images_batch_update_metadata</code></td><td>Batch-update metadata and tags on multiple images.</td></tr></tbody></table>

### Annotation

Save labels and run automatic labeling.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>annotations_save</code></td><td>Save an annotation for an existing image.</td></tr><tr><td><code>autolabel_start</code></td><td>Start a hosted auto label job over a batch of images.</td></tr><tr><td><code>autolabel_job_get</code></td><td>Get per-subjob status and progress for an auto label job.</td></tr></tbody></table>

### Batches

Group uploaded images before they enter labeling.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>annotation_batches_list</code></td><td>List upload batches in a project.</td></tr><tr><td><code>annotation_batches_get</code></td><td>Get details about one upload batch.</td></tr><tr><td><code>annotation_batches_create</code></td><td>Move selected images from one batch into a new batch.</td></tr><tr><td><code>annotation_batches_merge</code></td><td>Move all images from source batches into a target batch.</td></tr><tr><td><code>annotation_batches_delete</code></td><td>Delete a batch and move its images to unassigned.</td></tr><tr><td><code>annotation_batches_admin_list</code></td><td>List annotation board batches with cursor pagination.</td></tr><tr><td><code>annotation_batches_admin_get</code></td><td>Get details about one annotation board batch.</td></tr><tr><td><code>annotation_batches_admin_images_list</code></td><td>List image IDs in a batch with cursor pagination.</td></tr></tbody></table>

### Annotation Jobs

Assign labeling work, run review, and accept results into the Dataset.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>annotation_jobs_list</code></td><td>List annotation jobs in a project.</td></tr><tr><td><code>annotation_jobs_get</code></td><td>Get details about one annotation job.</td></tr><tr><td><code>annotation_jobs_create</code></td><td>Create a job and move images from a batch into it.</td></tr><tr><td><code>annotation_jobs_update</code></td><td>Update a job's labeler, reviewer, or instructions.</td></tr><tr><td><code>annotation_jobs_images_list</code></td><td>List image IDs assigned to a job.</td></tr><tr><td><code>annotation_jobs_images_add</code></td><td>Move images into an existing job.</td></tr><tr><td><code>annotation_jobs_images_reassign</code></td><td>Create a job from selected images and clear their prior assignment.</td></tr><tr><td><code>annotation_jobs_submit_for_review</code></td><td>Advance a labeling job into review.</td></tr><tr><td><code>annotation_jobs_return_for_edits</code></td><td>Move a review job back to labeling, optionally with a new labeler.</td></tr><tr><td><code>annotation_jobs_review_image</code></td><td>Set the review status for one image in a job.</td></tr><tr><td><code>annotation_jobs_review_images</code></td><td>Set a status for every job image matching a current status.</td></tr><tr><td><code>annotation_jobs_accept_into_dataset</code></td><td>Finalize job images into the Dataset and assign splits.</td></tr><tr><td><code>annotation_jobs_move_to_unassigned</code></td><td>Remove a job and move its images to an unassigned batch.</td></tr><tr><td><code>annotation_jobs_delete_annotations</code></td><td>Delete the annotation data for every image assigned to a job.</td></tr></tbody></table>

### Versions

Freeze a dataset version and export it.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>versions_generate</code></td><td>Create a version with optional preprocessing and augmentation.</td></tr><tr><td><code>versions_get</code></td><td>Get version info including splits and its trainings.</td></tr><tr><td><code>versions_export</code></td><td>Check or trigger a dataset export for a version.</td></tr><tr><td><code>versions_delete</code></td><td>Delete a version, moving it to the workspace Trash.</td></tr></tbody></table>

### Models and Training

Train models, watch progress, and run inference.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>trainings_describe_recipe</code></td><td>Describe the tuning options for a model type and return a ready-to-submit recipe.</td></tr><tr><td><code>trainings_create</code></td><td>Start a training run on a dataset version.</td></tr><tr><td><code>trainings_list</code></td><td>List the training runs on a dataset version.</td></tr><tr><td><code>trainings_get</code></td><td>Get a training's status, produced models, and metrics.</td></tr><tr><td><code>trainings_stop</code></td><td>Request an early stop on an in-flight training run.</td></tr><tr><td><code>trainings_cancel</code></td><td>Cancel an in-flight training run.</td></tr><tr><td><code>trainings_delete</code></td><td>Delete a training run, moving it to the workspace Trash.</td></tr><tr><td><code>models_list</code></td><td>List trained models in a project.</td></tr><tr><td><code>models_get</code></td><td>Get details for a trained model.</td></tr><tr><td><code>models_infer</code></td><td>Run hosted inference on an image using a trained model.</td></tr><tr><td><code>models_upload_custom_weights</code></td><td>Get the recipe for uploading locally trained weights to Roboflow.</td></tr><tr><td><code>models_star_nas</code></td><td>Star or unstar a model found by neural architecture search.</td></tr></tbody></table>

### Model Evaluations

Read mAP, confusion matrices, and per-class results.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>model_evals_list</code></td><td>List model evaluations in the workspace.</td></tr><tr><td><code>model_evals_get</code></td><td>Get the top-level summary for one evaluation.</td></tr><tr><td><code>model_evals_get_map_results</code></td><td>Get per-split mAP results.</td></tr><tr><td><code>model_evals_get_confidence_sweep</code></td><td>Get the precision, recall, and F1 confidence sweep.</td></tr><tr><td><code>model_evals_get_performance_by_class</code></td><td>Get per-class performance metrics for one split.</td></tr><tr><td><code>model_evals_get_confusion_matrix</code></td><td>Get the confusion matrix.</td></tr><tr><td><code>model_evals_get_image_predictions</code></td><td>Get per-image prediction stats, paginated.</td></tr><tr><td><code>model_evals_get_vector_analysis</code></td><td>Get clustering of image embeddings for the evaluation.</td></tr><tr><td><code>model_evals_get_recommendations</code></td><td>Get generated recommendations for the evaluation, if available.</td></tr></tbody></table>

### Workflows

Build, validate, and run inference pipelines.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>workflows_list</code></td><td>List saved Workflows in the workspace.</td></tr><tr><td><code>workflows_get</code></td><td>Get details for a saved Workflow.</td></tr><tr><td><code>workflows_create</code></td><td>Create and save a new Workflow.</td></tr><tr><td><code>workflows_update</code></td><td>Update a saved Workflow's name and definition.</td></tr><tr><td><code>workflows_delete</code></td><td>Delete a saved Workflow, moving it to the workspace Trash.</td></tr><tr><td><code>workflows_run</code></td><td>Execute a saved Workflow on one or more images.</td></tr><tr><td><code>workflow_specs_validate</code></td><td>Validate a Workflow JSON definition without running it.</td></tr><tr><td><code>workflow_specs_run</code></td><td>Execute a Workflow from an inline JSON definition.</td></tr><tr><td><code>workflow_blocks_list</code></td><td>List all available Workflow blocks with a short summary of each.</td></tr><tr><td><code>workflow_blocks_get_schema</code></td><td>Get the full schema of one Workflow block.</td></tr></tbody></table>

### Project Deployment

Manage a project's stable live endpoint and Active Learning.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>project_deployment_get</code></td><td>Get the live endpoint state for a project.</td></tr><tr><td><code>project_deployment_launch</code></td><td>Create or prepare a Project Deployment.</td></tr><tr><td><code>project_deployment_set_model</code></td><td>Change the default model behind a deployment without changing its endpoint.</td></tr><tr><td><code>project_deployment_run</code></td><td>Run inference through the project's live endpoint.</td></tr><tr><td><code>project_deployment_enable_active_learning</code></td><td>Enable Active Learning for a deployment.</td></tr><tr><td><code>project_deployment_disable_active_learning</code></td><td>Pause Active Learning collection.</td></tr><tr><td><code>project_deployment_configure_active_learning</code></td><td>Configure how a deployment collects Active Learning data.</td></tr><tr><td><code>project_deployment_list_review_queues</code></td><td>List review queues fed by production inference.</td></tr></tbody></table>

### Vision Events

Query production events and manage use cases.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>vision_events_query</code></td><td>Query production vision events with filters and pagination.</td></tr><tr><td><code>vision_events_use_cases_list</code></td><td>List the vision event use cases in the workspace.</td></tr><tr><td><code>vision_events_custom_metadata_schema_get</code></td><td>Get the custom metadata schema discovered for a use case.</td></tr><tr><td><code>vision_events_use_case_create</code></td><td>Create a new use case.</td></tr><tr><td><code>vision_events_use_case_rename</code></td><td>Rename an existing use case.</td></tr><tr><td><code>vision_events_use_case_archive</code></td><td>Archive a use case.</td></tr><tr><td><code>vision_events_use_case_unarchive</code></td><td>Restore a previously archived use case.</td></tr></tbody></table>

### Devices and Streams

Monitor and configure edge devices managed by Deployment Manager.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>devices_list</code></td><td>List devices registered in the workspace.</td></tr><tr><td><code>devices_get</code></td><td>Get a single device by id.</td></tr><tr><td><code>devices_create</code></td><td>Provision a new device.</td></tr><tr><td><code>devices_get_snapshot</code></td><td>Get the full current state of a device in one call.</td></tr><tr><td><code>devices_get_config</code></td><td>Get the device's current runtime configuration.</td></tr><tr><td><code>devices_update_config</code></td><td>Update the device's runtime configuration.</td></tr><tr><td><code>devices_get_default_config</code></td><td>Get the workspace's default device configuration.</td></tr><tr><td><code>devices_get_config_history</code></td><td>List prior configuration revisions, newest first.</td></tr><tr><td><code>devices_streams_list</code></td><td>List streams configured on the device.</td></tr><tr><td><code>devices_streams_get</code></td><td>Get a single stream by id.</td></tr><tr><td><code>devices_get_logs</code></td><td>Fetch device logs.</td></tr><tr><td><code>devices_get_telemetry</code></td><td>Get aggregated hardware metrics and device health.</td></tr><tr><td><code>devices_get_deployments</code></td><td>Get the device's deployment history with per-deployment activity.</td></tr><tr><td><code>devices_get_events</code></td><td>List device and stream lifecycle events.</td></tr><tr><td><code>devices_get_exception_occurrences</code></td><td>List raw occurrences of one exception fingerprint, newest first.</td></tr></tbody></table>

### Cloud Storage

Mirror an S3 or GCS bucket into a project.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>connect_cloud_storage</code></td><td>Set up a bucket mirror end to end, from credential to first run.</td></tr><tr><td><code>credentials_list</code></td><td>List cloud storage credentials in the workspace.</td></tr><tr><td><code>credentials_create</code></td><td>Create a cloud storage credential.</td></tr><tr><td><code>credentials_delete</code></td><td>Delete a credential.</td></tr><tr><td><code>datasources_list</code></td><td>List bucket mirror configurations in the workspace.</td></tr><tr><td><code>datasource_get</code></td><td>Get full detail for a single datasource.</td></tr><tr><td><code>datasource_create</code></td><td>Create a datasource that mirrors a bucket path into a project.</td></tr><tr><td><code>datasource_update</code></td><td>Update a datasource. Only the fields you pass change.</td></tr><tr><td><code>datasource_delete</code></td><td>Delete a datasource. Already mirrored images stay in the project.</td></tr><tr><td><code>datasource_validate</code></td><td>Check that Roboflow can reach the datasource's bucket.</td></tr><tr><td><code>datasource_trigger</code></td><td>Start a mirror run.</td></tr><tr><td><code>datasource_job_get</code></td><td>Get the status and statistics of one mirror run.</td></tr></tbody></table>

### Universe

Search public datasets and models on Roboflow Universe.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>universe_search</code></td><td>Search Roboflow Universe for datasets or models.</td></tr><tr><td><code>universe_dataset_images_search</code></td><td>Search images inside a public Universe dataset given its URL.</td></tr></tbody></table>

### Media

Look at an image or video before deciding what to build.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>media_upload</code></td><td>Prepare a local image or video for analysis.</td></tr><tr><td><code>media_upload_finalize</code></td><td>Validate a staged upload and publish it.</td></tr><tr><td><code>media_analyze</code></td><td>Analyze an image or short video with a vision model to understand its contents.</td></tr><tr><td><code>media_trim</code></td><td>Cut a clip from an Asset Library video and get an analyzable public URL.</td></tr></tbody></table>

### API Keys

Create and retire keys for your workspace.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>api_keys_list</code></td><td>List all API keys for the workspace.</td></tr><tr><td><code>api_keys_get</code></td><td>Get metadata for a single key.</td></tr><tr><td><code>api_keys_get_publishable</code></td><td>Get the workspace's publishable key.</td></tr><tr><td><code>api_keys_create</code></td><td>Create a new API key.</td></tr><tr><td><code>api_keys_update</code></td><td>Update a key's name, scopes, or metadata.</td></tr><tr><td><code>api_keys_protect</code></td><td>Mark a key as protected so it cannot be revoked or disabled.</td></tr><tr><td><code>api_keys_disable</code></td><td>Disable or re-enable a key without revoking it.</td></tr><tr><td><code>api_keys_revoke</code></td><td>Permanently revoke a key.</td></tr></tbody></table>

### Trash

Restore something that was deleted.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>trash_list</code></td><td>List soft-deleted items currently in the workspace Trash.</td></tr><tr><td><code>trash_restore_project</code></td><td>Restore a deleted project.</td></tr><tr><td><code>trash_restore_version</code></td><td>Restore a deleted dataset version.</td></tr><tr><td><code>trash_restore_workflow</code></td><td>Restore a deleted Workflow.</td></tr><tr><td><code>trash_restore_training</code></td><td>Restore a deleted training run.</td></tr></tbody></table>

### Other

Poll long-running work and send feedback.

<table data-search="false"><thead><tr><th width="330">Tool</th><th>Description</th></tr></thead><tbody><tr><td><code>async_tasks_get</code></td><td>Poll an async task by id, such as a project fork or a split rebalance.</td></tr><tr><td><code>meta_feedback_send</code></td><td>Report a bug, missing feature, or documentation issue to the Roboflow team.</td></tr></tbody></table>
