MCP Hub
Back to servers

Roboflow MCP Server

Integrates the Roboflow platform with Claude Code to manage computer vision datasets, trigger training runs, and perform inference directly from the CLI. It enables users to search Roboflow Universe for public datasets and handle image uploads or model evaluations using natural language commands.

glama
Updated
Mar 25, 2026

roboflow-mcp

A Model Context Protocol (MCP) server that exposes the Roboflow platform API as tools in Claude Code. Manage datasets, trigger training runs, search Universe, and run inference — all from the CLI.


Setup

Requirements: Python 3.10+, a Roboflow API key, Claude Code installed.

git clone https://github.com/nickedridge-wq/roboflow-mcp.git
cd roboflow-mcp
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Configure Claude Code

Option A — project-level (recommended, checked into the repo):

claude mcp add roboflow \
  --env ROBOFLOW_API_KEY=your_api_key_here \
  -- /path/to/roboflow-mcp/venv/bin/python /path/to/roboflow-mcp/server.py

This writes a .mcp.json file in the current project directory.

Option B — user-level (available in all projects):

claude mcp add roboflow --scope user \
  --env ROBOFLOW_API_KEY=your_api_key_here \
  -- /path/to/roboflow-mcp/venv/bin/python /path/to/roboflow-mcp/server.py

Restart Claude Code — the mcp__roboflow__* tools will be available immediately.


Tools

ToolDescription
list_workspacesShow workspace name, URL slug, and project count
list_projectsList all projects in a workspace with type and image counts
get_projectGet classes, annotation type, and metadata for a project
list_versionsList all dataset versions with image counts per split
upload_imageUpload an image and optional annotation to a project
create_versionGenerate a new dataset version with preprocessing and augmentation
download_datasetDownload a version locally (yolov8, coco, voc, and more)
download_universe_datasetDownload a public dataset directly from Roboflow Universe
search_universeSearch Universe for public datasets and pre-trained models
run_inferenceRun inference via a deployed model on a local file or URL
get_model_metricsFetch mAP, precision, and recall for a trained version

Example Workflows

Find and download a public dataset

search_universe("hard hat detection")
→ pick a result, note workspace + project + version

download_universe_dataset(
  universe_workspace="roboflow-universe-projects",
  universe_project="hard-hat-universe",
  version_number=1,
  model_format="yolov8",
  location="./datasets/hard-hat"
)

Upload images and generate a training version

upload_image(project_url="my-project", image_path="/data/img001.jpg",
             annotation_path="/data/img001.xml", split="train")

create_version(
  project_url="my-project",
  preprocessing={"auto-orient": True, "resize": {"width": 640, "height": 640, "format": "Stretch to"}},
  augmentation={"flip": {"horizontal": True}, "rotation": {"degrees": 15}}
)

Run inference and check model performance

run_inference(project_url="my-project", version_number=3,
              image_path="/data/test.jpg", confidence=60)

get_model_metrics(project_url="my-project", version_number=3)

Tests

python -m unittest test_server -v

21 tests covering output suppression, lazy init thread safety, input validation, null model guard, auth error propagation, and parameter contracts. No live API key required.


Implementation Notes

  • Lazy authentication — the Roboflow SDK authenticates once per session on first tool call, with double-checked locking for thread safety.
  • Output suppression — the SDK prints to both stdout and stderr on init, which corrupts MCP's stdio transport. All SDK calls redirect both streams.
  • search_universe and get_model_metrics call the Roboflow REST API directly for endpoints not exposed cleanly through the SDK.

Reviews

No reviews yet

Sign in to write a review