virtualflybrain avatar

VirtualFlyBrain

virtualflybrain/vfb3-mcp

Connects Claude to the VirtualFlyBrain knowledge base for Drosophila melanogaster neuroscience research. Exposes three main operations: get_term_info retrieves details about VFB identifiers, run_query executes predefined queries like PaintedDomains against neural data, and search_terms queries the Solr search server for brain anatomy terms. You'd reach for this when working with fly brain connectomics, gene expression patterns, or standardized neuroanatomy terminology. Available as a hosted HTTP service at vfb3-mcp.virtualflybrain.org, so no local installation needed. Also ships as a Node.js package and Docker image if you want to run it yourself.

GitHub stars
9
tools
11
transport
HTTP
last updated
Nov 5, 2026

Install

From registry metadata
$ npx add-mcp https://vfb3-mcp.virtualflybrain.org --name vfb3-mcp

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http vfb3-mcp https://vfb3-mcp.virtualflybrain.org

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 11 tools

Verified live against the running server on Nov 6, 2026.

get_term_infoGet term info for a VFB or anatomy ontology entity (VFB_*, FBbt_*, etc.). THIS IS THE QUERY DISCOVERY TOOL: the response's "Queries" array lists the valid query_type values that run_query accepts for this entity. ALWAYS call get_term_info before run_query unless you already ob...2 params

Get term info for a VFB or anatomy ontology entity (VFB_*, FBbt_*, etc.). THIS IS THE QUERY DISCOVERY TOOL: the response's "Queries" array lists the valid query_type values that run_query accepts for this entity. ALWAYS call get_term_info before run_query unless you already ob...

Parameters* required
force_refreshboolean
Bypass the response cache and recompute this result. Expensive — leave it unset on a first call. Set it ONLY to re-try a call that, earlier in this same conversation, returned a result that was cle...
id*value
One or more VFB IDs to look up
run_queryRun a pre-computed query on a VFB entity. REQUIRED WORKFLOW: (1) call get_term_info on the ID first; (2) read the response's "Queries" array; (3) pass one of those values as query_type. Calling run_query with a guessed query_type will return an error. If a query returns empty...7 params

Run a pre-computed query on a VFB entity. REQUIRED WORKFLOW: (1) call get_term_info on the ID first; (2) read the response's "Queries" array; (3) pass one of those values as query_type. Calling run_query with a guessed query_type will return an error. If a query returns empty...

Parameters* required
force_refreshboolean
Bypass the response cache and recompute this result. Expensive — leave it unset on a first call. Set it ONLY to re-try a call that, earlier in this same conversation, returned a result that was cle...
idvalue
One or more VFB IDs to query
include_imagesboolean
Include the image/thumbnail column in result rows. Default false: the thumbnail is a long markdown image string that is rarely useful to reason over and greatly inflates every row, so it is strippe...
limitnumber
Max rows returned per call (default 25). The true total is always returned as "count"; broad queries (e.g. ListAllAvailableImages, or NeuronsSynaptic on a whole region) can have thousands to hundre...
offsetnumber
Row offset for paging (default 0). To get the next page, re-run with offset increased by limit; "count" gives the total.
queriesarray
Array of {id, query_type} pairs for mixed batch queries. When provided, id and query_type params are ignored.
query_typestring
A valid query type from the Queries array returned by get_term_info. Used for single id or array of ids.
search_termsSearch VFB terms. This is the search virtualflybrain.org itself runs — the same Solr query, the same ranking — so what comes back first here is what a user would see first on the site. USE filter_types BY DEFAULT. Unfiltered searches mix scRNAseq artifacts and developmental st...10 params

Search VFB terms. This is the search virtualflybrain.org itself runs — the same Solr query, the same ranking — so what comes back first here is what a user would see first on the site. USE filter_types BY DEFAULT. Unfiltered searches mix scRNAseq artifacts and developmental st...

Parameters* required
auto_fetch_term_infoboolean
When true and an exact label match is found, automatically fetch and include term info in the response.default: false
boost_typesarray
Float results matching these facets_annotation types to the top of the ranked list without excluding others
demote_typesarray
Sink results matching these facets_annotation types to the bottom of the ranked list without excluding them. Ignored for a type that also appears in boost_types.
exclude_typesarray
Exclude results matching ANY of these facets_annotation types (OR logic). Deprecated terms are already excluded.
filter_typesarray
Filter results to only include items matching ALL of these facets_annotation types (AND logic). Use list_search_facets for valid names.
minimize_resultsboolean
When true, return at most 10 results with only the essential fields. For exact matches, return only the matching result.default: false
query*string
Search query (e.g., medulla)
rowsnumber
Number of results to return (default 150, max 1000) - use smaller numbers for focused searchesdefault: 150
startnumber
Pagination start index (default 0) - use to get results beyond the first pagedefault: 0
uniqueboolean
One row per term (default true). Set false to get a row per matching synonym, which shows WHICH name matched at the cost of repeating IDs.default: true
list_search_facetsList the type names search_terms can filter, exclude, boost or demote by, with the number of terms carrying each one. Call this instead of guessing: there are over 200 names, they are the index's own annotations rather than a curated list, and they change as data is added. Use...1 params

List the type names search_terms can filter, exclude, boost or demote by, with the number of terms carrying each one. Call this instead of guessing: there are over 200 names, they are the index's own annotations rather than a curated list, and they change as data is added. Use...

Parameters* required
containsstring
Only return type names containing this text. Matched case- and separator-insensitively, so "nervous system" finds "Nervous_system".
resolve_entityResolve an unresolved FlyBase-related query string into VFB/FlyBase IDs and metadata. Pass the raw text exactly as the user wrote it (for example "P{VT054895-GAL4.DBD}", "Hb9-GAL4", "SS04495", "MB002B", "PAM cluster", or "dpp"). Do NOT pass resolved IDs such as FBgn/FBal/FBti/...1 params

Resolve an unresolved FlyBase-related query string into VFB/FlyBase IDs and metadata. Pass the raw text exactly as the user wrote it (for example "P{VT054895-GAL4.DBD}", "Hb9-GAL4", "SS04495", "MB002B", "PAM cluster", or "dpp"). Do NOT pass resolved IDs such as FBgn/FBal/FBti/...

Parameters* required
name*string
Unresolved FlyBase-related query string from the user. Pass the raw name/synonym exactly as written (e.g., "P{VT054895-GAL4.DBD}", "Hb9-GAL4", "SS04495", "MB002B", "PAM cluster", "dpp"). Do NOT pas...
resolve_combinationResolve an unresolved split-GAL4 combination name or synonym into its FBco ID and component hemidrivers. Pass the raw combination text exactly as the user wrote it (for example "MB002B" or "SS04495"). Do NOT pass an FBco ID; if you already have one, use the downstream tool dir...1 params

Resolve an unresolved split-GAL4 combination name or synonym into its FBco ID and component hemidrivers. Pass the raw combination text exactly as the user wrote it (for example "MB002B" or "SS04495"). Do NOT pass an FBco ID; if you already have one, use the downstream tool dir...

Parameters* required
name*string
Unresolved split-GAL4 combination name or synonym exactly as written by the user (e.g., "MB002B", "SS04495"). Do NOT pass an FBco ID here.
list_connectome_datasetsList available connectome datasets with their labels and symbols. Use the returned symbols when constructing exclude_dbs arguments for query_connectivity. Common datasets include Hemibrain (hb), FAFB (fafb), MANC, and others. Call this tool if unsure which dataset symbols are...

List available connectome datasets with their labels and symbols. Use the returned symbols when constructing exclude_dbs arguments for query_connectivity. Common datasets include Hemibrain (hb), FAFB (fafb), MANC, and others. Call this tool if unsure which dataset symbols are...

No parameters. Call it with no arguments.

query_connectivityQuery synaptic connectivity between Drosophila neuron classes across ALL connectome datasets simultaneously for comparative connectomics. This is NOT pre-cached — it runs live queries, so expect slow responses (up to several minutes). Set both upstream_type AND downstream_type...7 params

Query synaptic connectivity between Drosophila neuron classes across ALL connectome datasets simultaneously for comparative connectomics. This is NOT pre-cached — it runs live queries, so expect slow responses (up to several minutes). Set both upstream_type AND downstream_type...

Parameters* required
downstream_typestring
Downstream (postsynaptic) neuron class — OWL ID or full label. Must be a neuron type/class, NOT an anatomical region. If user asks about connectivity to a brain region, first find neuron classes in...
exclude_dbsarray
Dataset symbols to exclude (recommended default: ["hb", "fafb"] to focus on newer datasets). Pass empty array [] to include all datasets. Must be the exact `symbol` field from list_connectome_datas...
group_by_classboolean
If true, aggregate by class rolled up over the subclass hierarchy: a row appears for the queried class AND each subclass with data (a connection counts toward every ancestor pair up to the queried...
limitnumber
How many connection rows to return, strongest first (default 50). The summary always covers every connection found, not just the returned rows. Pass 0 for all rows — only do this on a query you alr...default: 50
offsetnumber
Row to start from within the strongest-first ranking (default 0). Re-running with the same limit and the next offset walks down the list.default: 0
upstream_typestring
Upstream (presynaptic) neuron class — OWL ID (e.g., "FBbt_00003789") or full label (e.g., "transmedullary neuron Tm1"). Must be a neuron type/class, NOT an anatomical region. Use search_terms with...
weightnumber
Minimum synapse count threshold (recommended default: 5). Lower to 1 if initial query returns zero results as first relaxation step.
get_predicted_neurotransmittersGet the PREDICTED neurotransmitter(s) for a Drosophila neuron class — itself or any subclass — from per-instance connectome predictions (each reconstructed neuron carries a predicted transmitter with a confidence). Use this for "what neurotransmitter does <cell type> use?" whe...5 params

Get the PREDICTED neurotransmitter(s) for a Drosophila neuron class — itself or any subclass — from per-instance connectome predictions (each reconstructed neuron carries a predicted transmitter with a confidence). Use this for "what neurotransmitter does <cell type> use?" whe...

Parameters* required
aggregateboolean
If true (default), aggregate to flat per-class rows {cell_type_id, cell_type, nt_id, nt_label, instances, percent_of_class, mean_confidence}. If false, return one row per individual neuron {..., ne...default: true
exclude_dbsarray
Dataset symbols to exclude (default ["hb","fafb"]). Pass [] to include all datasets. Same symbols as query_connectivity / list_connectome_datasets.
min_confidencenumber
Drop predictions below this confidence (0..1). Default 0 (keep all).default: 0
neuron_type*string
Neuron class — OWL ID (e.g. "FBbt_00003797") or label (e.g. "Tm9"). Means the class and all of its subclasses.
split_by_datasetboolean
If true (aggregate only), emit one row per (cell type, neurotransmitter, dataset) with a dataset column, so cross-connectome agreement is visible. Default false aggregates over all included datasets.default: false
get_known_neurotransmittersGet the KNOWN (curated) neurotransmitter(s) for a Drosophila neuron class and its subclasses, from the ontology's classification rather than per-instance predictions — so there is no confidence. Use this for "what neurotransmitter is <cell type> known to use?" when you want th...1 params

Get the KNOWN (curated) neurotransmitter(s) for a Drosophila neuron class and its subclasses, from the ontology's classification rather than per-instance predictions — so there is no confidence. Use this for "what neurotransmitter is <cell type> known to use?" when you want th...

Parameters* required
neuron_type*string
Neuron class — OWL ID (e.g. "FBbt_00003797") or label (e.g. "Tm9"). Means the class and all of its subclasses.
get_hierarchyBuild a hierarchy tree for a VFB term, showing ancestors (parents) and/or descendants (children). Use relationship "part_of" for brain region structure (e.g. "what are the parts of the mushroom body?") and "subclass_of" for cell type hierarchies (e.g. "what types of Kenyon cel...4 params

Build a hierarchy tree for a VFB term, showing ancestors (parents) and/or descendants (children). Use relationship "part_of" for brain region structure (e.g. "what are the parts of the mushroom body?") and "subclass_of" for cell type hierarchies (e.g. "what types of Kenyon cel...

Parameters* required
directionstring
Which direction to explore (default: "both")one of descendants · ancestors · bothdefault: both
id*string
VFB term ID (e.g. FBbt_00005801 for mushroom body, FBbt_00003686 for Kenyon cell)
max_depthnumber
Number of levels to expand. 1 = direct children/parents only. Higher values go deeper. -1 = full tree (use with caution on broad terms). Default: 1.default: 1
relationship*string
Type of hierarchy: "part_of" for brain region structure, "subclass_of" for cell type taxonomiesone of part_of · subclass_of

Sponsors

Readme

VFB3-MCP Server

A Model Context Protocol (MCP) server for Virtual Fly Brain (VFB): query Drosophila melanogaster neuroanatomy, connectomics, expression and reagent data from Claude, Copilot or any other MCP client.

Canonical repository: VirtualFlyBrain/VFB3-MCP (this one) — maintained by the Virtual Fly Brain team. Hosted service: https://mcp.virtualflybrain.org — no installation, no API key, no account. (The older address https://vfb3-mcp.virtualflybrain.org is the same server and keeps working.)

claude mcp add --transport http virtual-fly-brain https://mcp.virtualflybrain.org

The earlier copy at Robbie1977/VFB3-MCP is archived at v1.3.0 and is not maintained; use this repository and the URL above.

This server provides tools to query VFB data, run queries, and search for terms. In HTTP mode it runs statelessly (no session tracking), so any replica can handle any request and standard load balancing works.

🚀 Quick Start

Use the Live Service (Recommended)


View the full README on GitHub

Details

Repository
github.com/virtualflybrain/vfb3-mcp
Website
virtualflybrain.org
Category
Data & Analytics
Transport
HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related Data & Analytics MCP servers

View all
1wei avatarMymlh Mcp Serverwei/mymlh-mcp-serverOAuth-enabled MyMLH MCP server for accessing MyMLH data.9stars
2la-rebelion avatarLinkedIn MCP Serverla-rebelion/hapimcpLinkedIn API as MCP tools to retrieve profile data and publish content. Powered by HAPI MCP.0stars
3amirdaraee avatarLuxembourg MCPamirdaraee/luxembourg-mcpKeyless MCP access to official Luxembourg public data: laws, statistics, mobility, and more.8stars
4cryptoquantofficial avatarCryptoQuantcryptoquantofficial/cryptoquant-mcpQuery cryptocurrency on-chain data, OHLCV prices, market data, and Research & QuickTake insights.8stars
5hasdata avatarHasData Glassdoorhasdata/glassdoor-mcpGlassdoor job listings and full postings with company ratings and salary estimates, as JSON.8stars
6hasdata avatarHasData Redfinhasdata/redfin-mcpRedfin for-sale, for-rent and sold listings plus full property pages, as structured JSON.8stars