Show HN: NeuroAnswer – MCP server lets Claude navigate petabyte-scale brain maps A developer has released NeuroAnswer v2, an MCP server that allows Claude to navigate and query the MICrONs Minnie65 connectome dataset containing 200,000 neurons and 500 million synapses using plain English. The system now hosts its own local Neuroglancer server, enabling Claude to take live screenshots of the 3D viewport and visually interpret cell morphology before deciding what to query next. This closes a research loop of observe, query, render, and observe again, allowing scientists to explore petabyte-scale brain maps through natural language commands. neuroanswer.mp4 200,000 neurons, 500 million synapses, queryable in plain English — rendered live in 3D NeuroAnswer is an AI copilot for exploring the MICrONs Minnie65 https://www.microns-explorer.org/ connectome dataset, with results rendered directly in Neuroglancer https://github.com/google/neuroglancer . The v2 architecture makes a fundamental change: the Neuroglancer viewer is now controlled directly by the MCP server rather than being a separate browser session that the extension had to mirror state into. V1 used the chrome extension and javascript hacks to mutate the state. V2 hosts its own neuroglancer server locally and uses its existing python/websockets API to directly control it. This allows the development of pure MCP NeuroGlancer tools. This also unlocks a capability that wasn't possible before Claude can now take a screenshot of the active Neuroglancer viewport and interpret it visually — the same view the researcher is looking at, at the same moment. It can identify cell morphology, count visible structures, notice what's in the foreground vs background, and reason about what it sees before deciding what to query next. Combined with the CAVE tools, this closes a loop: observe → query → render → observe again. Claude identifying neurons, and what might be an astrocyte — from a live screenshot of the 3D mesh view. | v1 | v2 | | |---|---|---| Neuroglancer control | Extension pushed state via URL hash | MCP server owns the Viewer object directly | Camera / layers | Extension rewrote the browser URL | MCP tools call viewer.txn server-side | Screenshots | Not possible | viewer.screenshot returns rendered image; Claude sees it | Auth | Chrome cookie / Google OAuth popup | MiddleAuthProvider injects CAVE token server-side | Chat UI | Chrome extension sidebar | Chrome extension sidebar kept ; Claude Desktop tested but doesn't render tool images. Bonus : Generated python code is now shown in the UI with syntax highlighting powered by prism | Transport | MCP over SSE | MCP over SSE unchanged ; stdio available for Claude Desktop | Neuroglancer URL | Relied on public Neuroglancer servers / chrome extension had to detect the right tab | MCP server hosts its own local NeuroGlancer server | nglui scene URL construction layers are now set directly on the viewer - Extension content script that polled and pushed ng state - FastAPI endpoints /scenes and /new scene replaced by reset neuroglancer view MCP tool - Layer / position / scene propagation through the relay response NeuroAnswer connects Claude to the CAVE https://caveclient.readthedocs.io/ connectomics database via an MCP Model Context Protocol server. Ask a question in plain English — "show me the closest soma" or "trace the downstream synapses of this L5 pyramidal cell" — and the system fetches the data, builds the 3D scene, and renders it in your Neuroglancer view. Current capabilities: - Spatial queries: find neurons by cell type within the current Neuroglancer viewport - Synapse tracing: retrieve downstream synaptic targets for any neuron and render pre/post-synaptic markers Code execution sandbox : allowing Claude to run generated Python pandas, numpy, matplotlib workflows against the MICrONs dataset and render scientific figures in the browser Ive created an MCP tool that allows Claude to generate and execute python against pre-loaded dataframes, allowing generic scientific queries. Scientific figures render directly in the chat window For example, the prompt Show me the 10 closest neurons in this field of view. Then for each of those neurons, query the API to find their downstream neurons. For that pooled set of synapses, render a horizontal violin plot showing the distributions of synapse size by the mtype of the downstream neuron Produced the following analysis Downstream Synapse Pool 3,049 total synapses were fetched across all 10 neurons. After joining to the cell type table and filtering for m-types with ≥10 synapses, 17 distinct downstream m-types were visualized. - L5ET neurons are the single most common downstream target n=647 , reflecting the dense recurrent connectivity among deep-layer excitatory cells in this region. - PTC and DTC neurons also receive heavy input n=300 and n=245 , suggesting these projection-class cells are major hubs in this local circuit. - The size distributions are right-skewed across all m-types, with most synapses being small but a long tail of large synapses — consistent with the known lognormal synapse size distribution in cortex. - White bars on each violin represent the IQR Q1–Q3 , and the white tick marks the median. The ordering from bottom to top reflects increasing median synapse size. - 464 synapses ~15% hit neurons not in the cell-type table and were excluded as "Unknown". - Compartment targeting: identify synapses by postsynaptic compartment soma, shaft, spine - Population search: look up excitatory and inhibitory neuron populations by morphological type Richer annotation support : line annotations connecting pre- and post-synaptic sites with size/weight labels Dataset generalization : extending support to FlyWire, H01 human cortex , and other connectomics datasets with different database schemas Simplified architecture : moving the full agent loop into the Chrome extension to eliminate the FastAPI relay Community-driven tool design : the tool vocabulary should be shaped by what researchers actually need — feedback on useful queries and workflows is very welcome Chrome Extension sidebar UI ↕ FastAPI Gateway relay server ↕ MCP Server FastMCP <- NeuroGlancer local server with Python/websockets API ↕ CAVE / MICrONs Minnie65 cloud database The MCP server exposes domain-specific tools — spatial search, synapse queries, camera control, and scene construction — that Claude calls through the standard MCP protocol. It also hosts the Neuroglancer server directly, so tool calls mutate the viewer state in real time without any browser-side coordination. A FastAPI gateway bridges the Chrome extension's HTTP requests to the MCP server and streams tool results text, images, syntax-highlighted code back to the sidebar. Neuron metadata is cached locally as Parquet files to keep spatial queries fast. Synapse data is fetched live from CAVE on demand - a bit slower, but I'm working on it Python · FastMCP · CAVEclient · NeuroGlancer · FastAPI · Chrome Extensions API To query the structural brain graph, you need a CAVE API token, along with your Anthropic API key. - Copy the environment template: cp .env.example .env - Go to the DAF API Auth Portal https://global.daf-apis.com/auth/api/v1/create token . You may find this additional documentation https://tutorial.microns-explorer.org/quickstart notebooks/01-caveclient-setup.html useful. - Log in with your Google account. - Copy the generated token string. - Open your new .env file and paste your credentials: ANTHROPIC API KEY=your claude key here CAVE TOKEN=your copied cave token here LANGFUSE PUBLIC KEY=optional telemetry key CACHE DIR is optional — the server defaults to the OS-appropriate user cache directory. When running via Docker, it is automatically set to /app/data the mounted volume so no override is needed. Note, I'm using "LangFuse" to log my chats during development. If you want to do the same, you can sign up for a free account, create API keys, and also place them in the .env file. With the credentials set up, the servers can be stood up using docker docker compose up You can theoretically use the MCP server without NeuroGlancer, but it won't be fun. Science should be fun You'll need to install the Google Chrome extension for the fun part. Its not in the chrome extension store, but you can install it locally. - In Google Chrome, type chrome://extensions in the URL bar and hit enter - Enable developer mode with the toggle button - Click Load unpacked and then navigate to the chrome extension directory in this cloned repository - When you open the extension, click the Open Neuroglancer ↗ link at the top of the sidebar to open the locally-hosted viewer This project is under active development. If you work in connectomics or neuroscience and have thoughts on what queries or workflows would be most useful in a natural language interface for Neuroglancer, please open an issue or reach out. The goal is to build something the field actually wants to use. Take a minute to reflect on the fact that, by using this tool, your biological neurons are creating language which informs a large set of in-silico neurons to create language that queries a database for information on a mouses biological neurons. "We are a way for the universe to know itself" - Carl Sagan