neurochat
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANTHROPIC_API_KEY | Yes | API key for Anthropic to enable chat functionality |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| load_volumeA | Load an already-preprocessed NIfTI volume (MRI, PET) into the session. Returns shape, voxel size, affine summary, detected space and how it was detected, value range, and NaN count. No preprocessing is performed on the file. Args: path: Path to a .nii or .nii.gz file. name: Short handle for later calls. Defaults to the filename stem. space: Assert the template space when the header does not record one, e.g. "MNI152NLin6Asym". Recorded as your assertion, not an inference. |
| load_atlasA | Load an atlas and return its full label list. The label list is what grounds every later region name — match user phrasing against these strings, not against your own knowledge of neuroanatomy. Args: atlas_name: One of demo-16, harvard-oxford-sub, harvard-oxford-cort, aal, schaefer-100. Non-bundled atlases are fetched once via nilearn and cached. |
| list_regionsA | List or search the loaded atlas's regions, with voxel counts and centroids. Args: query: Substring or fuzzy filter, e.g. "hippocampus". Omit for everything. limit: Maximum rows to return (capped at 200). |
| navigateA | Move the crosshair to a named atlas region or to explicit coordinates. Exactly one of region_label or coords. A region_label must exist in the loaded atlas; a near-miss returns suggestions and moves nothing. Coordinates are accepted only from you or the user, and the space they were read in is echoed back. Args: region_label: Label from the loaded atlas, e.g. "Left Hippocampus". coords: [x, y, z] in millimetres. space: Space for coords, e.g. "MNI152NLin6Asym". Defaults to the volume's space. volume: Which loaded volume to interpret against. Defaults to the most recent. |
| set_displayA | Set colormap, intensity window and opacity for one layer. Args: volume: Layer to restyle. Defaults to the most recently loaded. colormap: gray, hot, cool, viridis, inferno, magma, plasma, jet, bone, ... min: Low end of the display window (does not alter the data). max: High end of the display window. opacity: 0.0 to 1.0. |
| overlayA | Stack one loaded volume on top of another and return the layer order. Display only — no registration is performed. If the two volumes are not already aligned, say so rather than implying the overlay means anything. Args: volume: The layer to put on top. on_top_of: The base layer. Defaults to the current bottom layer. opacity: Opacity of the top layer, 0.0 to 1.0. |
| roi_statsA | Descriptive statistics inside an atlas region or a mask file. Returns n_voxels, mean, sd, median, min, max, and an explicit count of every excluded voxel. Report those exclusion counts in your answer — they are not a footnote. There is no inference here: no test, no p-value, no threshold. Args: volume: Volume to measure. Defaults to the most recently loaded. region_label: Atlas region name. Mutually exclusive with mask_path. mask_path: Path to a binary mask NIfTI. Mutually exclusive with region_label. exclude_zeros: Drop exactly-zero voxels. Off by default; zeros are counted and included, because treating zero as "no data" is an assumption. |
| compare_volumesA | Voxelwise difference or ratio of two loaded volumes; adds the result to the session. Arithmetic, not inference. The output is not a statistical map and carries no significance of any kind — describe it as a difference image, nothing more. Args: a: First volume (the minuend / numerator). Defines the output grid. b: Second volume. Resampled onto a's grid if the grids differ. method: "difference" or "ratio". name: Handle for the result volume. |
| screenshotA | Capture the current view as a downscaled PNG and return the image and its path. Uses the live Niivue canvas when a browser viewer is attached, otherwise renders the same layer stack server-side with nilearn. The response says which one ran. Args: filename: Optional name for the PNG inside the session's temp directory. |
| export_scriptA | Write the whole session as a standalone runnable .py and return its path. This is the deliverable. It needs only numpy, nibabel and nilearn — not neurochat — and re-running it reproduces the numbers reported in this conversation. Args: path: Where to write the script, e.g. "~/analysis/session.py". |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| explore_volume | A starting prompt for exploring a volume with the rules already in mind. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| session_state | Current session state: loaded volumes, atlas, viewer layers, crosshair. |
| session_script | The live nilearn script accumulated so far, exactly as export_script would write it. |
| tool_trace | The last few full tool traces — arguments in, results out. Bounded, in memory. |
| atlas_catalogue | Which atlases can be loaded, their spaces, and whether they need a download. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AyushXRane/neurochat'
If you have feedback or need assistance with the MCP directory API, please join our Discord server