Fiftyone MCP Server
Control FiftyOne computer vision datasets through AI assistants using 80+ operators.
Connector by AdonaiVera · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying Fiftyone MCP Server?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/adonaivera-fiftyone-mcp-server
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: data-analysis
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 25 read · 15 write · 4 delete · 3 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 47
Read from the source code; the running server may list different tools.
Read 25 · Look things up without changing anything.
boundscount_sample_tagscount_valuesdataset_summarydistinctget_app_configget_color_schemeget_context_infoget_field_schemaget_operator_schemaget_plugin_infoget_sidebar_groups
Show 13 more tools
get_valueshistogram_valueslist_brain_runslist_datasetslist_delegated_operationslist_evaluationslist_me_scenarioslist_open_panelslist_operatorslist_pluginsmeanstdsum
Write 15 · Create, change, send or run things.
add_sample_fieldadd_samplesdownload_pluginenable_pluginexecute_operatorexecute_pipelineset_active_fieldsset_color_schemeset_filtersset_session_color_schemeset_sidebar_groupsset_spaces
Show 3 more tools
set_valuesset_viewtag_samples
Delete 4 · Delete, drop, revoke or wipe things.
clear_viewdisable_pluginreset_color_schemeuntag_samples
Not yet classified 3 · We could not tell from the name and description.
annotatelaunch_appload_dataset
Files it touches
- Any path the agent passes to its tools
Tools (47)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_sample_fieldAdd a new field with an explicit type to a dataset. Use this to define a typed field before assigning values with set_values. Unlike add_dynamic_sample_fields (which auto-detects types), this requires you to specify the type explicitly. Supported types: StringField, IntField, FloatField, BooleanField, ListField, EmbeddedDocumentField, DateTimeField, GeoPointField. This is an MCP tool, not FiftyOne's Dataset.add_sample_field() method -- it still requires dataset_name as an explicit argument, and field_type is a string name (e.g. 'StringField'), not a Python class object.
add_samplesAdd new samples to an existing dataset. Each sample requires a 'filepath' key and can include any additional field values. Returns the IDs of the added samples. Use this for programmatic sample creation from Python dicts — use the import_samples operator for file/dir imports instead. This is an MCP tool, not FiftyOne's Dataset.add_samples() method -- it still requires dataset_name as an explicit argument, unlike the bound SDK method which needs none, and takes plain dicts rather than Sample objects.
annotateEnter annotation mode for a specific sample in the App. Opens the sample modal and focuses on the given label field and label ID. Useful for directing a user to a specific annotation that needs review or correction.
boundsGet the min and max values for a numeric field. Returns {min, max}. Useful for understanding the range of confidence scores, image dimensions, or any numeric field. This is an MCP tool, not FiftyOne's Dataset.bounds() method -- pass dataset_name and field as separate keyword arguments, not field_or_expr.
clear_viewClears the current view from the session, showing all samples. Requires an execution context (call via MCPToolExecutor).
count_sample_tagsCount how many samples have each tag in a dataset. Returns a {tag: count} dict and total number of distinct tags. Useful for understanding tag distributions before filtering or after tagging operations. This is an MCP tool, not FiftyOne's Dataset.count_sample_tags() method -- it still requires dataset_name as an explicit argument, unlike the bound SDK method which needs none.
count_valuesCount occurrences of each value for a field across a dataset. Returns a {value: count} dict. Useful for understanding label distributions, tag frequencies, or any categorical field. Optionally filter with view_stages before counting. This is an MCP tool, not FiftyOne's Dataset.count_values() method -- pass dataset_name and field as separate keyword arguments, not field_or_expr.
dataset_summaryGet detailed summary statistics and metadata for a dataset
disable_pluginDisables a FiftyOne plugin, removing its operators from availability.
distinctGet the list of unique values for a field across a dataset. Returns an array of distinct values with a count. Useful for discovering all classes, categories, or unique identifiers in a field. This is an MCP tool, not FiftyOne's Dataset.distinct() method -- pass dataset_name and field as separate keyword arguments, not field_or_expr.
download_pluginDownloads and installs a FiftyOne plugin from GitHub. Plugins immediately add new operators to the system (accessible via list_operators and execute_operator). Common repo: 'voxel51/fiftyone-plugins' contains all official plugins. After installation, use enable_plugin to activate the plugin's operators.
enable_pluginEnables a downloaded FiftyOne plugin, making its operators immediately available through list_operators and execute_operator. Required after download_plugin to activate the plugin's functionality.
execute_operatorExecute any FiftyOne operator. Provides access to 80+ operators from the plugin ecosystem. WORKFLOW: (1) Call list_operators to discover available operators, (2) Call get_operator_schema to see required parameters, (3) Call execute_operator with the operator URI and params. Set delegate=true for long-running operations to queue them for background execution. Requires either an execution context or dataset_name.
execute_pipelineExecute a multi-stage operator pipeline. Stages run sequentially sharing the same execution context (dataset, view, selection). If a stage fails, subsequent stages are skipped unless marked with always_run=true. Supports delegation for background execution. WORKFLOW: (1) Use list_operators + get_operator_schema to plan stages, (2) Call execute_pipeline with the stages array. Requires either an execution context or dataset_name.
get_app_configGet the full app config for a dataset including color scheme, sidebar groups, active fields, and media field settings.
Show 32 more tools
get_color_schemeGet the color scheme configuration for a dataset. Returns color_by mode, color pool, and per-field color settings.
get_context_infoGets information about the current FiftyOne App context, including whether it's active and what dataset is loaded.
get_field_schemaGet the full field schema for a dataset with complete type information. Returns field_name -> {type, subfield, embedded_doc_type, description, required, read_only} for every sample field and every frame field (for video datasets). More detailed than load_dataset, which only returns field names. This is an MCP tool, not FiftyOne's Dataset.get_field_schema() method -- it still requires dataset_name as an explicit argument, unlike the bound SDK method which needs none.
get_operator_schemaGet the input schema for a specific operator. Returns a filtered schema by default (UI-only metadata stripped, choices capped at 20). Pass verbose=true only if you need the raw schema. Schemas are context-aware and change based on the current dataset/view/selection. Use this AFTER list_operators to understand what parameters an operator accepts. For dynamic operators, pass 'params' with partial values to resolve fields that depend on earlier selections. Requires either an execution context or dataset_name.
get_plugin_infoGets detailed information about a specific FiftyOne plugin including its operators, version, and metadata.
get_sidebar_groupsGet the sidebar group configuration for a dataset. Returns the list of groups with their field paths and expanded state.
get_valuesGet the raw values of a field for all samples in a dataset. Returns a list of values in sample order. Useful for reading custom field data, scores, or metadata. Capped at 10,000 samples by default to avoid large responses. This is an MCP tool, not FiftyOne's Dataset.values() method -- pass dataset_name and field as separate keyword arguments, not field_or_expr.
histogram_valuesCompute a histogram of values for a numeric field. Returns bin counts, bin edges, and the count of values outside the range. Useful for visualizing distributions of confidence scores, object sizes, etc. This is an MCP tool, not FiftyOne's Dataset.histogram_values() method -- pass dataset_name and field as separate keyword arguments, not field_or_expr.
launch_appLaunches the FiftyOne App server. Required for executing delegated operators that need background execution (e.g., brain operators like find_near_duplicates).
list_brain_runsList brain method run keys for a dataset. Brain runs include: similarity indexes (used for nearest-neighbour search), visualization embeddings (UMAP, t-SNE), uniqueness scores, and hardness scores. Filter by type (e.g. 'similarity', 'visualization') or method (e.g. 'umap', 'resnet50'). Returns a list of run keys you can pass to get_brain_info or load_brain_results. This is an MCP tool, not FiftyOne's Dataset.list_brain_runs() method -- it still requires dataset_name as an explicit argument, unlike the bound SDK method which needs none.
list_datasetsList all available FiftyOne datasets with metadata. Capped at 50 by default; check 'total' in the response to see if more exist.
list_delegated_operationsList delegated (background) operations and their status. Use this to check on operations that were queued via execute_operator or execute_pipeline with delegate=true. Filter by run state, dataset, or operator URI.
list_evaluationsList evaluation run keys for a dataset. Evaluation runs include model performance assessments (detection, classification, segmentation). Filter by type (e.g. 'detection', 'classification') or method (e.g. 'coco', 'open-images'). Returns a list of eval keys you can pass to get_evaluation_info or load_evaluation_results. This is an MCP tool, not FiftyOne's Dataset.list_evaluations() method -- it still requires dataset_name as an explicit argument, unlike the bound SDK method which needs none.
list_me_scenariosList model evaluation scenarios for a dataset. Scenarios are configurations stored by the ME panel that define how an evaluation is sliced for comparative analysis (by field value, saved view, or custom code). Requires the @voxel51/model_evaluation plugin and at least one scenario to have been configured.
list_open_panelsList all panels currently open in the FiftyOne App. Returns each panel's id (use this with set_panel_state, patch_panel_state, or close_panel), name (e.g. 'Samples', 'Histograms', 'Embeddings', 'Map'), and pinned status. Use this before calling set_panel_state to discover the panel_id you need.
list_operatorsDiscover all available FiftyOne operators (80+ built-in operators from plugins). Returns operators from installed plugins including: @voxel51/operators (50+ core operators like tag_samples, clone_samples), @voxel51/brain (similarity, duplicates, visualization), @voxel51/utils (create_dataset, delete_dataset, clone_dataset), @voxel51/io (import/export), @voxel51/evaluation, @voxel51/annotation, @voxel51/zoo. Use this FIRST to discover what operators are available before executing them. Returns a slim summary (uri, label, description) by default; pass verbose=true only if you need full operator …
list_pluginsLists available FiftyOne plugins and their operators. Plugins extend functionality by providing additional operators. Key plugins: @voxel51/brain (16 operators for similarity/duplicates/visualization), @voxel51/utils (12 operators for dataset CRUD), @voxel51/io (5 operators for import/export), @voxel51/evaluation (5 operators), @voxel51/annotation (6 operators), @voxel51/zoo (2 operators). Use this to discover what plugins are installed and what operators they provide. Capped at 50 by default; check 'total' in the response to see if more exist.
load_datasetLoad a FiftyOne dataset by name and return basic information
meanCompute the mean (average) of a numeric field across all samples. Returns a single float. Useful for average confidence, uniqueness scores, etc. This is an MCP tool, not FiftyOne's Dataset.mean() method -- pass dataset_name and field as separate keyword arguments, not field_or_expr.
reset_color_schemeReset the App color scheme to the dataset or global config defaults for the current session. Session-only — does not persist to the database. Use set_color_scheme to persist changes.
set_active_fieldsControl which fields are visible in the App sidebar. Persists to the database. Use exclude=false (default) to show only the listed paths, or exclude=true to hide them.
set_color_schemeSet the color scheme for a dataset. Persists to the database. Supports setting color_by mode, a shared color pool, and per-field color overrides.
set_filtersSet the sidebar filter state in the App. Filters are applied on top of the current view and control what samples are shown in the grid. This is NOT the same as adding view stages — it sets the Recoil fos.filters UI state directly. Pass a {field_path: FilterState} dict. Label field filters support: values (list), exclude, isMatching, onlyMatch. Numeric field filters support: range ([min, max]), none, nan. Boolean filters support: true, false, none.
set_session_color_schemeSet the live color scheme for the current App session. Updates the in-memory Recoil color state immediately — session-only, lost on page reload. Use set_color_scheme to persist to the database. Supports a color-blind-friendly preset via color_pool_preset='color-blind-friendly'.
set_sidebar_groupsReplace the sidebar group configuration for a dataset. Persists to the database. Each group has a name, a list of field paths, and an optional expanded flag.
set_spacesSets the workspace (spaces layout) in the App by loading a saved workspace by name.
set_valuesBulk-assign values to a field across multiple samples. Accepts either a list of values (one per sample in dataset order) or a {sample_id: value} dict for explicit assignment. Use this when you need to write computed scores, labels, or metadata back to the dataset. Note: the edit_field_values operator does value remapping (old->new), not bulk assignment. This is an MCP tool, not FiftyOne's Dataset.set_values() method -- it still requires dataset_name as an explicit argument, unlike the bound SDK method which needs none.
set_viewSets a filtered view in the FiftyOne App. Supports dynamic stage-based views (Match, FilterLabels, SortBy, Limit, etc. with F() expressions), saved views, or simple convenience filters. The view updates immediately in the App UI. Requires an execution context (call via MCPToolExecutor).
stdCompute the standard deviation of a numeric field across all samples. Returns a single float. This is an MCP tool, not FiftyOne's Dataset.std() method -- pass dataset_name and field as separate keyword arguments, not field_or_expr.
sumCompute the sum of a numeric field across all samples. Returns a single number. This is an MCP tool, not FiftyOne's Dataset.sum() method -- pass dataset_name and field as separate keyword arguments, not field_or_expr.
tag_samplesAdd tags to samples in a dataset. Optionally filter which samples to tag using view_stages or sample_ids. Returns the count of samples that were tagged. Tags can be used to mark subsets for review, training splits, or any custom categorization. This is an MCP tool, not FiftyOne's Dataset.tag_samples() method -- it still requires dataset_name as an explicit argument, unlike the bound SDK method which needs none.
untag_samplesRemove tags from samples in a dataset. Optionally filter which samples to untag using view_stages or sample_ids. Returns the count of samples that were processed. This is an MCP tool, not FiftyOne's Dataset.untag_samples() method -- it still requires dataset_name as an explicit argument, unlike the bound SDK method which needs none.
Signals
- Stars
- 26
- Forks
- 7
- Open issues
- 0
- Weekly downloads
- 4,780
- Last commit
- Sep 24, 2026 (1 month ago)
- Last release
- Dec 20, 2025 (10 months ago)
- Last package publish
- Sep 22, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.AdonaiVera/fiftyone-mcp-server- Version
- 0.1.2
- Auth
- No auth
- Packages
- pypi fiftyone-mcp-server
- License
- License unknown
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get Fiftyone MCP Server running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
Fiftyone MCP Server. Agent Mart. https://agentmart.dev/connectors/adonaivera-fiftyone-mcp-server (last updated 2026-10-25)