mcpField
R
roboflow-data-management

roboflow-data-management

github.com/roboflowData & databases48313 installsUpdated today
Repository

About roboflow-data-management

A Roboflow data-management skill for computer-vision datasets, covering project setup, image and annotation uploads, search, versioning, and export. It is intended for agents managing dataset workflows through Roboflow and documents the relevant MCP tools.

Key features

  1. 01Create and inspect projects
  2. 02Upload images with annotations
  3. 03Search images with RoboQL
  4. 04Generate dataset versions
  5. 05Review dataset analytics
  6. 06Export in common formats

Use cases

  1. 01Import annotated images into a project
  2. 02Find images by split, class, or tag
  3. 03Prepare a version with preprocessing
  4. 04Export datasets for model training

MCP support

Documents Roboflow MCP tools for project management, image search and upload, version generation, inspection, and export.

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/roboflow/computer-vision-skills --skill roboflow-data-management

After installing, type/roboflow-data-managementin Claude Code to confirm it loaded.

Bundled fileslabeling.md

Details

From the project README

For agents: This skill is authored in roboflow/computer-vision-skills. If your client already has it loaded as a skill (for example from a Roboflow plugin), use that copy. The roboflow://skills/<name>/... MCP resources serve the same skills for clients that don't have them loaded.

Data Management on Roboflow

Project Types

TypeAnnotation FormatUse Case
Object DetectionBounding box (polygon/mask auto-converted)Locate objects with boxes
Instance SegmentationPolygon, MaskPixel-level per-object boundaries
Semantic SegmentationPolygon, MaskPixel-level class regions
Keypoint DetectionKeypoints (skeleton)Pose/skeleton estimation
Single-Label ClassificationImage-level label (no drawn annotations)One class per image
Multi-Label ClassificationImage-level labelsMultiple classes per image

Project type is set at creation and cannot be changed later.

Uploading Data

Methods
MethodBest ForFormats
Web UI drag-and-drop< 1,000 imagesJPG, PNG, WEBP, AVIF, BMP, MOV, MP4, PDF + 40+ annotation formats
CLI (roboflow import)> 1,000 images (images only)Same image formats, no video
MCP zip upload (image_upload)Agents uploading local files, up to 2 GB / 10,000 files per zipImages plus optional annotation files (see below)
Cloud storage bucket mirrorExtensive or continuously-growing data already in S3 / GCSSee roboflow://skills/roboflow-cloud-storage/SKILL
Dataset Upload Workflow BlockCollecting from production WorkflowsProgrammatic
Universe forkStarting from a public datasetAny Universe dataset

Limits: Max 20 MB per image, max 16,400 x 10,900 px. Duplicate images are skipped automatically.

Video Upload

Videos are split into frames at a configurable rate (1 frame/60s to 60 fps). Supported formats depend on browser (MP4 H.264 most compatible).

CLI Upload
pip install roboflow
roboflow import -w <workspace> -p <project-id> /path/to/dataset
MCP Zip Upload

image_upload returns a signed URL. The client zips the local files, PUTs the zip to that URL, and polls image_upload_status until it is completed or failed.

  • Annotations are imported. The zip can hold annotation files next to the images. They are parsed like in the web uploader: COCO JSON (_annotations.coco.json), YOLO TXT (with data.yaml or classes.txt), Pascal VOC XML, CreateML JSON, CSV, and more. Annotations are matched to images by file name. In classification projects, an image's parent folder name is its class.
  • Folders set splits. A train/, valid/ or test/ folder (also training/, validation/, val/, testing/) anywhere in an image's path sets its split. Other images use the split argument.
  • Annotated images go straight into the Dataset. There is no annotation job to accept, unless the workspace has annotation review turned on (then they wait in a review job). Images without annotations land in a batch (batch_name, default "Uploaded via API"); label them with annotations_save and add_to_dataset=true.
  • Duplicates still get their annotations. An image already in the project is not stored again, but its annotation from the zip is saved. If it already has an annotation, that one is kept and the image is listed in annotationErrors as "Image was already annotated"; pass annotation_overwrite=true to replace it. Classification labels are always replaced.
  • A failed chunk is safe to retry. The zip is processed in chunks. If the status is failed with an uploadErrors entry like chunk-0, that chunk's images may be stored without their annotations. Upload the same zip again: stored images come back as duplicates and their missing annotations are saved. "Image was already annotated" for images that made it the first time is expected.

Tags

Tags are free-form labels on images for organization and filtering.

ActionHow
Add during uploadTag selector in upload dialog or via API
Add to existing imagesSelect images -> "Images Selected" -> "Apply tags"
Rename/delete in bulkProject Settings -> Tags -> "Modify Tags"
Filter by tagSearch with tag:<name> or use Assign page filter
Use in versions"Filter by Tag" preprocessing step (require/exclude/allow)

Dataset Search (RoboQL)

Search images via the Images page search bar, or with the MCP images_workspace_search tool (add project:<slug> to stay inside one project). Combine filters with boolean logic.

The MCP images_search tool does not parse RoboQL. Its query is semantic text that ranks results without filtering them, so split:valid there changes nothing. It filters only through its own parameters (tag, class, Dataset, batch, annotation job). Use images_workspace_search for splits and other RoboQL filters.

Filters
FilterExampleDescription
(free text)person on sidewalkSemantic search (CLIP-based)
like-image:<ID>like-image:abc123Find visually similar images
filename:filename:*factory*Filename match (* for partial)
tag:tag:factoryFilter by tag
split:split:trainFilter by split
job:job:<JOB_ID>Filter by annotation job
class:class:helmetHas annotation with class
metadata:metadata:key=valueFilter by user metadata
project:project:my-projectFilter by project (workspace search)
dataset:dataset:my-projectImages in the project's Dataset; project:my-project NOT dataset:my-project finds the ones not in it yet
sort:sort:updatedSort results
min-width: / max-width:min-width:1000Image dimension filters
min-height: / max-height:max-height:800Image dimension filters
min-annotations: / max-annotations:max-annotations:1Annotation count filters
Boolean Logic
  • AND, OR, NOT, parentheses: class:helmet AND NOT (tag:v1 OR tag:v2)
  • Inverted filter with -: -class:vest
  • Comparison operators on numeric filters: >, <, >=, <=, = (e.g., class:helmet>=3)

Splits (Train / Valid / Test)

Images are assigned to train, valid, or test splits. Splits are rebalanced during version generation (Step 2 in version creation). Augmentations only apply to train split.

Dataset Versions

A version is a frozen snapshot of the dataset at a point in time. Changes to the project after version creation do not affect existing versions.

Version Creation Pipeline
  1. Source selection — images from the dataset split
  2. Train/Test split — rebalance percentages
  3. Preprocessing — applied to all splits (train + valid + test)
  4. Augmentation — applied only to train split
  5. Generate — creates immutable version
Preprocessing Options
StepEffect
Auto-OrientStrips EXIF, normalizes orientation
ResizeStretch to / Fit within / Fit (black edges) / Fit (white edges)
GrayscaleConvert RGB to single channel
Auto-Adjust ContrastContrast Stretching / Histogram Equalization / Adaptive (CLAHE)
Isolate ObjectsCrop each bbox into separate image (converts OD to classification)
Static CropCrop all images to fixed region
TileSplit images into NxN grid (default 2x2, helps small object detection)
Dynamic CropCrop images around a specific class
Modify ClassesRemap/omit classes for this version only
Filter NullControl percentage of unannotated images
Filter by TagRequire / Exclude / Allow images by tag
Random SampleSample a percentage of images per split
Augmentation Options

Applied to train images only. Configurable max version size (e.g., 3x = source + 2 augmented copies).

AugmentationImage LevelBBox LevelTier
FlipyesyesBasic
90 deg RotateyesyesBasic
CropyesyesBasic
RotationyesyesBasic
ShearyesyesBasic
GrayscaleyesnoBasic
HueyesnoBasic
SaturationyesnoBasic
BrightnessyesyesBasic
ExposureyesyesBasic
BluryesyesBasic
NoiseyesyesBasic
Camera GainyesyesBasic
Motion BluryesyesBasic
CutoutyesnoEnhanced (paid)
MosaicyesnoEnhanced (paid)

Dataset Analytics

Available at project sidebar -> "Analytics". Shows:

  • Image count, annotation count, avg image size, median aspect ratio
  • Missing and null annotation counts
  • Class distribution across train/valid/test
  • Image dimension insights (size + aspect ratio distribution)
  • Annotation heatmap (click-drag to filter images by region)
  • Object count histogram (click bars to see matching images)

Classes

Managed at Project Settings -> Classes.

ActionDescription
RenameType new name in Override column
MergeOverride multiple classes to same name
DeleteCheck Delete checkbox
Lock"Lock Annotation Classes" prevents new class creation

Warning: Class changes at project level affect all images (irreversible). Use version-level "Modify Classes" preprocessing for non-destructive changes.

Annotation Groups

Annotation group = the category encompassing all classes in a project. Projects sharing the same annotation group share their class list and annotations.

  • Enable during project creation: "Share image annotations with other projects"
  • Shared annotations: editing in one project affects all linked projects
  • Look for chain-link icon to identify shared images/projects
  • Images shared across projects count only once toward usage

Reusing a group name shares annotations, even with a project in the Trash. The group is just the annotation name given at creation. A new project created with a name that another project already uses (trashed projects included) silently joins that group: images uploaded to it that already exist in the workspace come with their annotations, and uploading them with annotations fails with "Image was already annotated". Unless the user wants shared annotations, check the annotation values from projects_list and trash_list before projects_create and pick a name no other project uses.

Project Folders

Folders group projects for organization. SSO workspaces can restrict folder access to specific team members.

ActionHow
Create"+ New Folder" from workspace view
Move projectProject menu -> "Move Project"
Delete folderFolder menu -> "Delete" (projects move to workspace root, not deleted)

Export Formats

Versions can be exported as .zip download or curl command. 40+ formats supported including COCO, YOLO, Pascal VOC, TFRecord, and more. Full list at roboflow.com/formats.

Export via Python SDK:

project.version(1).download("yolov8")

Project type and license

Don't guess a project's type or license. Confirm both with the user before calling projects_create.

MCP Tools Available

ToolPurpose
projects_createCreate a new project (specify type and an unused annotation group unless sharing is intended)
projects_list / projects_getList or get project details
images_searchSemantic search inside one project, with tag, class, Dataset, batch and job filters (no RoboQL)
images_workspace_searchRoboQL search across the workspace, e.g. project:my-project split:valid
image_upload / image_upload_statusPrepare a zip upload of images and optional annotations, and poll its status
versions_generateGenerate a dataset version with preprocessing/augmentation
versions_getInspect a version
versions_exportExport a version in a given format

Related Pages

  • roboflow://skills/roboflow-data-management/labeling — annotation tools, AI labeling, Label Assist, Smart Polygon, Auto Label, annotation jobs
  • roboflow://skills/roboflow-cloud-storage/SKILL — mirror an S3/GCS bucket into the workspace (credentials, datasources, glob rules, scheduled sync)

Comments

Markdown supported