VirtualFlyBrain

org.virtualflybrainPublished by virtualflybrain.orgOfficial publisherv1.11.4Updated Nov 5, 2026

MCP server for Drosophila neuroscience data from VirtualFlyBrain

VerifiedStreamable HTTPWeb executableKnowledge & MemoryData & Analytics

Overview

AI-generated overview

Remote MCP server for VirtualFlyBrain, letting an assistant search Drosophila neuroanatomy terms, run VFB queries and explore connectome connectivity.

What you can do
  • Search VFB terms with the same Solr ranking as the site, and list the facet types used to filter, exclude, boost or demote results
  • Resolve raw FlyBase-style strings and split-GAL4 combination names into VFB/FlyBase IDs and component hemidrivers
  • Fetch term metadata and run precomputed per-entity queries, including stock and combination-publication lookups
  • List connectome datasets and query synaptic connectivity between neuron classes across datasets, with paging and summaries
  • Retrieve predicted or curated neurotransmitters for a neuron class, and traverse part_of or subclass_of hierarchies
When to use it
Useful when working with Drosophila melanogaster neuroscience: looking up neuron types, brain regions, genes and reagents, or comparing synaptic connectivity and neurotransmitter predictions across connectome datasets.
Requirements
Remote streamable HTTP endpoint; no installation, API key or account needed. A local install is also documented, requiring Node.js 18 or higher with npm or yarn, or Docker.
Before you install
Connectivity queries run live and can take several minutes; broad queries can return tens of thousands of connections, so paging and filters matter. force_refresh is expensive and only works from whitelisted hosts. Queries are read-only lookups against a third-party research service.

Installation

In SourceWeft

  1. Open VirtualFlyBrain in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/org.virtualflybrain%2Fvfb3-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "virtualflybrain": {
      "type": "http",
      "url": "https://vfb3-mcp.virtualflybrain.org/"
    }
  }
}

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://vfb3-mcp.virtualflybrain.org — no installation, no API key, no account.

bash
claude mcp add --transport http virtual-fly-brain https://vfb3-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)

The easiest way to use VFB3-MCP is through our hosted service at https://vfb3-mcp.virtualflybrain.org. This requires no installation or setup on your machine.

Claude Desktop Setup
  1. Open Claude Desktop and go to Settings
  2. Navigate to the MCP section
  3. Add a new MCP server with these settings:
    • Server Name: virtual-fly-brain (or any name you prefer)
    • Type: HTTP
    • Server URL: https://vfb3-mcp.virtualflybrain.org

Configuration JSON (alternative method):

json
{  "mcpServers": {    "virtual-fly-brain": {      "type": "http",      "url": "https://vfb3-mcp.virtualflybrain.org",      "tools": ["*"]    }  }}
Claude Code Setup
  1. Locate your Claude configuration file:

    • macOS/Linux: ~/.claude.json
    • Windows: %USERPROFILE%\.claude.json
  2. Add the VFB3-MCP server to your configuration:

json
{  "mcpServers": {    "virtual-fly-brain": {      "type": "http",      "url": "https://vfb3-mcp.virtualflybrain.org",      "tools": ["*"]    }  }}
  1. Restart Claude Code for changes to take effect
GitHub Copilot Setup
  1. Open VS Code with GitHub Copilot installed
  2. Open Settings (Ctrl/Cmd + ,)
  3. Search for "MCP" in the settings search
  4. Find the MCP Servers setting
  5. Add the server URL: https://vfb3-mcp.virtualflybrain.org
  6. Give it a name like "Virtual Fly Brain"

Alternative JSON configuration (in mcp.json):

json
{  "servers": {    "virtual-fly-brain": {      "type": "http",      "url": "https://vfb3-mcp.virtualflybrain.org"    }  }}
Visual Studio Code (with MCP Extension)
  1. Install the MCP extension for VS Code from the marketplace
  2. Open the Command Palette (Ctrl/Cmd + Shift + P)
  3. Type "MCP: Add server" and select it
  4. Choose "HTTP" as the server type
  5. Enter the server details:
    • Name: virtual-fly-brain
    • URL: https://vfb3-mcp.virtualflybrain.org
  6. Save and restart VS Code if prompted
Other MCP Clients

For any MCP-compatible client that supports HTTP servers:

json
{  "mcpServers": {    "virtual-fly-brain": {      "type": "http",      "url": "https://vfb3-mcp.virtualflybrain.org",      "tools": ["*"]    }  }}
Gemini Setup

To use the Virtual Fly Brain (VFB) Model Context Protocol (MCP) server with Google Gemini, you can connect through custom Python/Node.js clients that support MCP.

Note: Direct Gemini web interface integration with MCP is not currently supported. Developer tools are needed to connect the two.

Option 1: Using Python

For application development, use the mcp and google-genai libraries to connect.

Setup: pip install google-genai mcp

Implementation: Use a streamable HTTP transport in JSON response mode (e.g. enableJsonResponse: true) to connect to the VFB URL, list its tools, and pass their schemas to the Gemini model as Function Declarations.

Testing the Connection

Once configured, you can test that VFB3-MCP is working by asking your AI assistant questions like:

Basic Queries:

  • "Get information about the neuron VFB_jrcv0i43"
  • "Search for terms related to medulla in the fly brain"
  • "What neurons are in the antennal lobe?"

Advanced Queries:

  • "Find all neurons that connect to the mushroom body"
  • "Show me expression patterns for gene repo"
  • "What brain regions are involved in olfactory processing?"
  • "Run a connectivity analysis for neuron VFB_00101567"

Search Examples:

  • "Search for adult neurons in the visual system"
  • "Find genes expressed in the central complex"
  • "Show me all templates available in VFB"

If you see responses with VirtualFlyBrain data, including neuron names, brain regions, gene expressions, or connectivity information, the setup is successful!

For more detailed usage examples and API calls, see examples.md.

Example Workflow

  1. Search for a term: "Search for neurons in the optic lobe"
  2. Get detailed info: "Get information about VFB_00101567"
  3. Run specific queries: "Show connectivity for VFB_00101567"
  4. Explore relationships: "What neurons synapse in the mushroom body?"

🛠️ Available Tools

The MCP server exposes the following tools (available to assistants like Claude and Copilot):

  • get_term_info — Get detailed metadata for a VFB ID
  • run_query — Run a precomputed analysis query for a VFB ID (see the Queries field from get_term_info)
  • search_terms — Search VFB entities by text with filtering / boosting options. This is the same search virtualflybrain.org itself runs
  • list_search_facets — List the facets_annotation type names that search_terms' filter_types / exclude_types / boost_types / demote_types accept, optionally filtered by substring
  • resolve_entity — Resolve an unresolved FlyBase-related query string (e.g., P{VT054895-GAL4.DBD} or a driver line / cell type label) to VFB/FlyBase IDs and metadata (not the same as VFB term search)
  • resolve_combination — Resolve an unresolved split-GAL4 combination name or synonym into its component IDs
  • list_connectome_datasets — List available connectome datasets (e.g., Hemibrain, FAFB)
  • query_connectivity — Query connectivity across connectome datasets using upstream/downstream filters, returned as a strongest-first page plus a summary computed over every connection found
  • get_predicted_neurotransmitters — Predicted neurotransmitter(s) for a neuron class (and its subclasses) from per-instance connectome predictions, per instance or aggregated with mean confidence, optionally split by dataset
  • get_known_neurotransmitters — Known (curated) neurotransmitter(s) for a neuron class and its subclasses, from the ontology classification (no confidence)
  • get_hierarchy — Traverse the ontology hierarchy for a VFB ID: part_of (region/tissue structure) and/or subclass_of (cell-type taxonomy), ancestors and/or descendants

🛠️ Local Installation

Prerequisites

  • Node.js 18 or higher
  • npm or yarn

Step-by-Step Installation

  1. Clone the repository:

    bash
    git clone https://github.com/VirtualFlyBrain/VFB3-MCP.gitcd VFB3-MCP
  2. Install dependencies:

    bash
    npm install
  3. Build the project:

    bash
    npm run build
  4. Start the server:

    bash
    npm start

Platform-Specific Setup

Claude Desktop (Local Development)

For local development with Claude Desktop, add this to your MCP configuration:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

json
{  "mcpServers": {    "vfb3-mcp": {      "command": "node",      "args": ["/absolute/path/to/VFB3-MCP/dist/index.js"]    }  }}
Claude Code

Add to your claude.json file:

json
{  "mcpServers": {    "vfb3-mcp": {      "command": "node",      "args": ["/absolute/path/to/VFB3-MCP/dist/index.js"]    }  }}
Visual Studio Code
  1. Install the MCP extension for VS Code
  2. Press Cmd + Shift + P (macOS) or Ctrl + Shift + P (Windows/Linux)
  3. Select MCP: Add server…
  4. Choose Command type
  5. Enter:
    • Name: vfb3-mcp
    • Command: node
    • Arguments: /absolute/path/to/VFB3-MCP/dist/index.js
GitHub Copilot

Configure the MCP server URL in your Copilot settings to point to your local server:

http://localhost:3000

For HTTP mode testing:

bash
MCP_MODE=http PORT=3000 node dist/index.js

Docker Installation

Using Docker Compose (Recommended):

bash
docker-compose up --build

Manual Docker Build:

bash
# Build the imagedocker build -t vfb3-mcp .
# Run the containerdocker run -p 3000:3000 vfb3-mcp

Pull Pre-built Image:

bash
docker pull virtualflybrain/vfb3-mcp:latestdocker run -p 3000:3000 virtualflybrain/vfb3-mcp:latest

Available Tools

get_term_info

Retrieve detailed information about VFB terms using their IDs.

Parameters:

  • id (string): VFB ID (e.g., "VFB_jrcv0i43")
  • force_refresh (boolean, optional): Bypass the response cache and recompute (see run_query below for the cost and the whitelisting caveat)

run_query

Execute predefined queries on VFB data.

Parameters:

  • id (string or array): One or more VFB IDs (e.g., "VFB_00101567")
  • query_type (string): Query type from the entity's Queries array (e.g., "PaintedDomains")
  • queries (array, optional): {id, query_type} pairs for mixed batch queries
  • limit (number, optional): Max rows per call (default 25). The true total is always returned as count; use 0 for all rows (still capped ~25000)
  • offset (number, optional): Row offset for paging (default 0); re-run with offset += limit for the next page
  • include_images (boolean, optional): Include the thumbnail column (default false — it is stripped to save space, and the response _note says how to re-add it)
  • force_refresh (boolean, optional): Bypass the response cache and recompute. Expensive; intended only as a one-shot retry of a call that returned a stale or failed result. A failed query is already retried once automatically. Requires the server's egress IP to be whitelisted on v3-cached — from a non-whitelisted host nginx ignores the header and serves the cached entry unchanged.

The response reports count_status alongside count: exact (count is the true total), row_count (no total supplied — count is just the rows returned), or unavailable (the query failed upstream and count is -1). A -1 is an error indication, not an empty result set, and _note says so in words.

FlyBase stocks and split-GAL4 combination publications are run_query query_types too: FindStocks and FindComboPublications. FindStocks takes FlyBase feature, stock and strain (FBsn) IDs. For a split combination (FBco), FindStocks returns stocks with both hemidrivers where they exist, and otherwise falls back to stocks of each hemidriver; a match column says which.

search_terms

Search for VFB terms. This calls VFBquery's /search, which is the search virtualflybrain.org itself runs — the same Solr query, the same filters and boosts, the same final sort — so a result here is the result a user would see on the site. Deprecated terms are already excluded server-side; there is no need to ask for that.

Parameters:

  • query (string): Search query (e.g., "medulla")
  • filter_types (array, optional): Keep only results matching ALL of these facets_annotation types (AND logic)
  • exclude_types (array, optional): Drop results matching ANY of these facets_annotation types (OR logic)
  • boost_types (array, optional): Lift results matching these types up the ranking without excluding others
  • demote_types (array, optional): Sink results matching these types to the bottom of the ranking without excluding them. Ignored for a type that also appears in boost_types
  • unique (boolean, optional): One row per term (default true). Set false for one row per matching synonym, which shows which name matched at the cost of repeating IDs
  • start (number, optional): Page start index (default 0)
  • rows (number, optional): Rows to return (default 150, max 1000)
  • minimize_results (boolean, optional): Return only the top 10 with reduced fields, for a first look (default false)
  • auto_fetch_term_info (boolean, optional): When the query matches one term's name exactly, also fetch that term's info (default false)

Type names come from the live vocabulary — there are over 200 of them and they change as data is added, so call list_search_facets rather than guessing. The response reports returned (rows given), total (length of the ranked list), distinct_terms and solr_matches (terms Solr matched before ranking) separately, so a truncated page never looks like a small result set.

list_search_facets

List the valid facets_annotation type names for the four type filters above, read from the live vocabulary.

Parameters:

  • contains (string, optional): Case- and separator-insensitive substring filter (e.g., "neuron", "nervous system")

If the deployed VFBquery predates the /facets endpoint, this falls back to a snapshot bundled with the server and says so — names absent from a snapshot result may still be valid.

query_connectivity

Query synaptic connectivity between neuron classes across all connectome datasets. At least one of upstream_type or downstream_type is required. Results are ranked strongest-first and paged: you get limit rows plus a summary computed over every connection found — weight min/max/total/mean, per-dataset counts, distinct neuron counts, and the top class pairs — so the totals stay true even though the rows are truncated. A broad query can find tens of thousands of connections, which is why paging is on by default.

Parameters:

  • upstream_type / downstream_type (string, optional): Neuron class OWL ID or label. Anatomical regions are not accepted
  • weight (number, optional): Minimum synapse count (recommended 5; use ≥50 when both ends are specified)
  • group_by_class (boolean, optional): Aggregate to class pairs instead of neuron pairs — usually the better first call on a broad query
  • exclude_dbs (array, optional): Dataset symbols to exclude (recommended ["hb","fafb"]); see list_connectome_datasets
  • limit (number, optional): Rows to return, strongest first (default 50; 0 for all)
  • offset (number, optional): Row to start from within the ranking (default 0)

get_predicted_neurotransmitters

Predicted neurotransmitter(s) for a neuron class — itself or any subclass — from per-instance connectome predictions (each reconstructed neuron carries a predicted transmitter with a confidence). Aggregated to flat per-class rows by default (one per cell type × neurotransmitter, with instances, percent_of_class, mean_confidence); aggregate=false gives one row per neuron. split_by_dataset=true adds a dataset column so agreement across connectomes is visible. The neurotransmitter is a GO secretion term (nt_id/nt_label) — the same id space as get_known_neurotransmitters. Distinct from get_known_neurotransmitters, which is the curated classification without confidence.

Parameters:

  • neuron_type (string, required): Neuron class OWL ID or label (means the class and its subclasses)
  • aggregate (boolean, optional): true (default) for per-class rows; false for per-instance rows
  • split_by_dataset (boolean, optional): true (aggregate only) for one row per (cell type, neurotransmitter, dataset)
  • exclude_dbs (array, optional): Dataset symbols to exclude (default ["hb","fafb"]; [] for all)
  • min_confidence (number, optional): Drop predictions below this confidence (0..1)

get_known_neurotransmitters

Known (curated) neurotransmitter(s) for a neuron class and its subclasses, from the ontology's classification rather than per-instance predictions — so no confidence. One row per (cell type, neurotransmitter): {cell_type_id, cell_type, nt_id, nt_label}, with nt_id a GO secretion term. Empty when the ontology asserts none (try get_predicted_neurotransmitters for the data-driven answer).

Parameters:

  • neuron_type (string, required): Neuron class OWL ID or label (means the class and its subclasses)

🧠 About VirtualFlyBrain

VirtualFlyBrain (VFB) is a comprehensive knowledge base about Drosophila melanogaster neurobiology, providing 3D images, gene expression data, neural connectivity information, and standardized terminology for fly brain research.

📖 Documentation

📄 License

MIT

Source: README.md at commit 25c42d9

Tools

11

get_term_info

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 obtained the query_type from a previous get_term_info call in this conversation. Returns: SuperTypes (classification), Tags (data flags like has_image, has_neuron_connectivity), Queries (valid query_types for run_query), RelatedTools (other MCP tools applicable to this entity, with default_args ready to copy — e.g. get_hierarchy with subclass_of for cell types or part_of for nervous-system regions), Images (keyed by template brain ID), Publications, Synonyms. Supports batch — pass an array of IDs to fetch in parallel; batch results are returned as a JSON object keyed by ID. To build VFB browser URLs from the Images field: https://v2.virtualflybrain.org/org.geppetto.frontend/geppetto?id=<VFB_ID>&i=<TEMPLATE_ID>,<IMAGE_ID1>,<IMAGE_ID2> — id= sets the focus term and i= lists images for the 3D viewer (template ID must be first in i= to set the coordinate space).

Parametersidrequiredforce_refresh

run_query

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 rows or an error, the entity does not support that query_type or has no data for it — try a different query_type from the Queries array, or try a related entity (e.g. its parent class via get_hierarchy). Empty results do NOT mean the answer is unknown — only that this call did not return it. NEVER fabricate results from training data when a query is empty; tell the user clearly what was tried. NEVER pass tool names like "get_term_info" or "search_terms" as query_type — those are separate tools. Common query_types by entity kind: PaintedDomains, AllAlignedImages, AlignedDatasets, AllDatasets (templates); SimilarMorphologyTo, NeuronInputsTo, NeuronNeuronConnectivityQuery, NeuronRegionConnectivityQuery (individual neurons); ListAllAvailableImages, SubclassesOf, PartsOf, NeuronsPartHere, NeuronsSynaptic, ExpressionOverlapsHere, DownstreamClassConnectivity, UpstreamClassConnectivity (classes). Supports batch — pass an array of IDs (same query_type) or a "queries" array of {id, query_type} pairs; batch results are keyed by "ID::query_type". Results are PAGED: the first 25 rows by default (change with limit/offset) plus the true total as "count". ALWAYS read "count_status" before quoting "count": "exact" means count is the true total; "unavailable" means the query FAILED upstream and count is -1, which is NOT zero and must never be reported as "no results" — read "_note" and tell the user the query could not be run. Image/thumbnail columns are excluded by default to save space - pass include_images=true to include them. FlyBase integration is via query_types too: FindStocks (fly stocks for a FlyBase feature ID - FBgn/FBal/FBti/FBtp/FBco/FBst; for an FBco split combination only the best tier is returne

Parametersidlimitoffsetqueriesquery_typeforce_refreshinclude_images

search_terms

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 stages in with the entity the user wants. Common filter_types recipes: - Neuron classes: ["neuron", "class"] - Individual neurons with images: ["neuron", "has_image"] - Neurons with connectome data: ["neuron", "has_neuron_connectivity"] - Brain regions / neuropils: ["anatomy"] - Genes: ["gene"] - Driver lines / expression patterns: ["expression_pattern"] - Datasets: ["dataset"] There are over 200 type names and they change as data is added, so do NOT guess them: call list_search_facets to see the current vocabulary (optionally filtered, e.g. contains="lineage"). Names are matched case- and separator-insensitively, and a name that does not exist is an error with suggestions rather than a silently empty result. Deprecated terms are excluded by the search itself — you do not need exclude_types: ["deprecated"], and adding it is harmless but pointless. Stage filtering: VFB covers adult, larval, and embryonic data, and many anatomical FBbt classes are stage-agnostic. Do NOT add "adult" or "larva" to filter_types by default — only add them when the user is explicit about a stage (e.g. "adult Kenyon cells", "larval mushroom body"). Default searches should leave stage out so stage-agnostic classes and all life stages are visible. Useful flags: - unique=true (the default) → one row per term. Turn it OFF only when you need to see WHICH synonym matched; with unique=false a term appears once per matching synonym, so "Kenyon cell" can return the same ID several times. - minimize_results=true → top 10, essential fields only, for exploratory searches. - auto_fetch_term_info=true → if an exact label match is found, returns get_term_info in the same response. - boost_types=["has_image", "has_neuron_connectiv

Parametersrowsqueryrequiredstartuniqueboost_typesdemote_typesfilter_typesexclude_typesminimize_resultsauto_fetch_term_info

list_search_facets

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 contains to narrow (e.g. contains="lineage" for the ~120 lineage clones, contains="connectivity" to find the connectome facets). The counts tell you whether a name is broad or niche — "entity" covers everything, a single lineage covers a handful.

Parameterscontains

resolve_entity

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/FBco/FBst or VFB IDs; if you already have an ID, use the downstream tool directly. Uses tiered resolution: exact name → synonym → broad pattern match. Returns match_type (EXACT/SYNONYM/BROAD), feature ID, name, type, and synonyms. IMPORTANT: When match_type is SYNONYM or BROAD, always confirm the resolved entity with the user before proceeding to further queries. If multiple matches are returned, show a disambiguation list and ask the user to choose. This tool queries FlyBase Chado — for VFB ontology lookups (anatomical terms, neuron class IDs) use search_terms instead.

Parametersnamerequired

resolve_combination

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 directly. Uses tiered resolution: exact name → synonym → broad pattern match. Returns FBco ID, combination name, matched synonym (if applicable), and component allele IDs/names. IMPORTANT: When match is via synonym, confirm the resolved combination with the user before proceeding (e.g., "Your search for 'MB002B' matched [formal name] (FBco...) via synonym. Shall I proceed?"). If multiple matches, show disambiguation list and ask user to choose.

Parametersnamerequired

list_connectome_datasets

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 valid.

Takes no parameters.

query_connectivity

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 to filter connections between two specific neuron classes (e.g., "What Tm1→T3 connections exist across all datasets?"). At least one of upstream_type or downstream_type is required. CONSTRAINTS: Only accepts neuron class terms (OWL IDs like FBbt_00003789 or labels like "transmedullary neuron Tm1") — anatomical regions or neuropils (e.g., "lobula", "medulla") are NOT accepted. NOT suitable for individual neuron-to-neuron connections — for pre-computed connections of a single individual neuron, use run_query with NeuronNeuronConnectivityQuery instead. NOT for muscle/sense organ connections. RECOMMENDED DEFAULTS: weight=5, exclude_dbs=["hb","fafb"] unless user specifies otherwise. For both-ends queries, start with weight≥50 to avoid timeouts. RESULT SIZE: a broad query is enormous (a single class at weight=5 can be over 50,000 connections), so results are ranked strongest-first and paged — you get limit rows (default 50) plus a summary computed over ALL of them: totals, per-dataset counts, distinct neuron counts, and the top class pairs. Answer from the summary and quote a handful of rows; only page with offset if the user asks for specific further rows. WORKFLOW: Confirm parameters with user before querying. Use search_terms with filter_types ["neuron","class"] to validate/canonicalize neuron type labels. If zero results, try relaxation: lower weight to 1, then remove exclude_dbs filter, then try group_by_class=true — report what worked and let user decide. group_by_class=true is usually the better first call on a broad query: it rolls the connections up over the subclass hierarchy — a row per (upstream level, downstream level) with data, up to the queried term(s) — instead of returning every ne

Parameterslimitoffsetweightexclude_dbsupstream_typegroup_by_classdownstream_type

get_predicted_neurotransmitters

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?" when you want the data-driven prediction and its confidence. By default results are aggregated to flat per-class rows (one per cell type × neurotransmitter) with instance counts, percent_of_class and mean_confidence; set aggregate=false for one row per individual neuron. Set split_by_dataset=true to get one row per (cell type, neurotransmitter, dataset) so you can see agreement across connectomes. The neurotransmitter is reported as a GO secretion term (nt_id/nt_label), the same id space as get_known_neurotransmitters. This is distinct from get_known_neurotransmitters, which returns the ontology-curated classification without confidence. CONSTRAINTS: neuron class terms only (FBbt id or label); use search_terms with filter_types ["neuron","class"] to canonicalize. RECOMMENDED: exclude_dbs defaults to ["hb","fafb"]; pass [] for all datasets.

Parametersaggregateexclude_dbsneuron_typerequiredmin_confidencesplit_by_dataset

get_known_neurotransmitters

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 the curated/established answer. Returns one row per (cell type, neurotransmitter): {cell_type_id, cell_type, nt_id, nt_label}, where the neurotransmitter is a GO secretion term (same id space as get_predicted_neurotransmitters). Empty when the ontology asserts none — in that case try get_predicted_neurotransmitters for the data-driven prediction. CONSTRAINTS: neuron class terms only (FBbt id or label); use search_terms with filter_types ["neuron","class"] to canonicalize.

Parametersneuron_typerequired

get_hierarchy

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 cell are there?"). Descendants are returned as a nested tree for both relationship types. Ancestors are returned as a nested chain, filtered to nervous system terms for part_of. Start with max_depth=1 for direct parents/children, and offer to go deeper if the user wants more detail.

Parametersidrequireddirectionmax_depthrelationshiprequired

Version history

3
  1. v1.11.4LatestNov 5, 2026
  2. v1.11.3Oct 21, 2026
  3. v1.11.2Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts