abba-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ABBA_MCP_HOME | No | Set this to use another folder for ABBA-MCP data such as fiji.log. Defaults to ~/.abba-mcp. | |
| ABBA_MCP_HEADLESS | No | Set to true to run Fiji/ABBA headless with no window, for servers and remote machines. The assistant shows snapshots instead, and manual registrations are not available. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| fiji_module_searchA | Find SciJava commands and scripts whose title, menu path, description or class contain all the words of the query. Every Fiji command and plugin is a module: search here before writing code. Every ABBA action is a command: search here, or grep the command docs. |
| fiji_module_describeA | Describe a module's inputs and outputs (types, labels, descriptions, defaults and choices after its initializers ran), the live objects that can fill its object inputs, and the artifact that provides it (provided_by: groupId:artifactId:version). id: a class name, menu path, title, or script file path. |
| fiji_module_runA | Run a module (command class, menu path, title, or the path of a script file) with inputs as a JSON object, e.g. {"sigma": 2, "image": "blobs.gif"}. Never opens the module's dialog: inputs not given keep their default; an object input with one live instance is bound to it, else pass its name (see fiji_objects). Returns status, outputs (objects by name, pictures as images), new objects, the modules it ran in turn (nested), and the warnings and errors it logged (messages). status is error when the module threw or reported success = false (error says why), canceled, or ok; ok with logged_errors (their number) and first_error means it ended normally but logged errors: check its outputs. Waits up to wait_seconds (default 30, at most 40: clients abort requests after about 60 s; follow a longer run with fiji_module_status). A run still going returns its job id, status running, and the titles of the modal dialogs open (dialogs); blocked_by_dialog means the job itself waits for a dialog. Starts Fiji first if it is not running: the first start downloads Fiji and ABBA and takes minutes. |
| fiji_module_run_scriptA | Run a script given as text (Groovy by default) as fiji_module_run runs a script file: same inputs, result, job id and status, nothing written to disk. For what no command does: search the commands first. Declare what it needs with #@ lines, e.g. '#@ ImagePlus image' (an object input with one live instance is bound to it) or '#@ CommandService command', and what it returns with '#@output String result'. Recorded in fiji_module_script with its code; '#@script(record="false")' leaves out a script that only looks. Write Groovy, as ABBA's docs and examples: 'python' here is Jython 2.7, not CPython. Read scripting/groovy-steps.md before the first script: a line starting with #@ is a parameter even inside a string. The ABBA window is a ch.epfl.biop.atlas.aligner.gui.bdv.BdvMultislicePositionerView, the session a ch.epfl.biop.atlas.aligner.MultiSlicePositioner (guides/window.md, scripting/). |
| fiji_module_statusA | Follow a run started by fiji_module_run: waits up to wait_seconds and returns its result as fiji_module_run does, or status running (or blocked_by_dialog) with the dialogs open. An empty job lists the runs - title, status (running, ok, error or canceled) and seconds each, the last 20 finished ones kept - and the modal dialogs open. |
| fiji_objectsA | The live objects Fiji holds (images, viewers, sessions...): without a type, the number of objects per type; with a type, the objects of that type by the names module inputs accept. An ABBA session is a MultiSlicePositioner. |
| fiji_module_scriptC | The successful fiji_module_run calls of this session as a Groovy script that replays them, every input explicit (modules declaring record=false, which only look, are left out). Once a result is right, save it (path) to keep the pipeline: edit it, turn values into #@ parameters, run it with fiji_module_run (its path is its id), or headless in a fresh Fiji. |
| fiji_ui_windows_readA | List visible AWT and Swing windows, including titles, classes, bounds, active state, and modality The ABBA window's title starts with its atlas; there may be several ABBA windows. |
| fiji_ui_dialogs_readA | List visible AWT and Swing dialogs, including each dialog's title, messages, buttons, and modal state A command that opened a dialog for the user (interactive registrations) waits until it is closed. |
| fiji_ui_dialog_respondA | Click an exact enabled button in one visible dialog. This tool rejects missing or ambiguous dialogs and never chooses a button implicitly Only for dialogs the user asked you to answer. |
| fiji_ui_dialog_closeA | Request the normal window-manager close action for one visible dialog. This tool rejects missing or ambiguous dialogs, does not choose a button, and reports whether the dialog remains visible Only for dialogs the user asked you to close. |
| abba_window_pictureA | Picture of one Fiji window, or dialog, as it is drawn, what the user sees in it: right even when the window is covered or the screen is locked, and never another application. Window mode only. Not recorded in fiji_module_script. |
| abba_window_viewA | Sets what an ABBA window shows the user: its mode, its current slice, the channels shown, and what is framed. Review mode: the atlas section of the current slice, whole or a region of it. Positioning mode: the current slice and its neighbours with the atlas above, or all the slices. Window mode only. Changes the view, not the session; not recorded in fiji_module_script. A session started without a window gets one. Then look with abba_window_picture. The window has no region names: to name what it shows, use ABBA - Snapshot with labels on the same region_mm. |
| abba_fiji_stopA | Stops the Fiji this extension started: the ABBA window closes and unsaved work is lost. Only when the user explicitly asks to stop or restart Fiji. Never to check, wait for or speed up a start: a start taking minutes is normal, and stopping it starts it all over again. To look at Fiji, use fiji_ui_windows_read or abba_window_picture. |
| abba_docs_searchA | Search the bundled ABBA documentation (guides, one file per command, scripting, examples) with a regular expression; returns matching lines with their file. For assistants without file access: with file access, grep the docs folder named in the instructions instead. This server: bundle abba-mcp 0.25.0.post2, for ABBA 0.25.0 only. |
| abba_docs_readA | Read one bundled documentation file, by its path relative to the docs folder (as abba_docs_search gives it). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Each tool targets a distinct resource+action: search/describe/run/status for modules, read/respond/close for dialogs, picture/view for windows, search/read for docs. The descriptions even explicitly cross-reference each other (e.g. use fiji_module_status to follow a long fiji_module_run), leaving little room for misselection, aside from a mild adjacency between the three script-related tools that the text clearly disambiguates.
A predictable namespace_noun_verb, snake_case pattern dominates (fiji_module_search, fiji_ui_dialog_respond, abba_docs_read, abba_window_view) with clear prefixes (fiji_module_, fiji_ui_, abba_). Minor deviations exist: fiji_module_script has no verb, and fiji_module_run_script/abba_window_picture break the verb-final rhythm, but the scheme is still highly readable.
16 tools is at the heavier end but each covers a genuine, non-redundant capability (module lifecycle, session replay, UI introspection/interaction, window control, docs, stop). Nothing feels padded, though the module/script/status cluster could conceivably be tightened.
The surface covers discovery, execution, monitoring, scripting, live-object inspection, UI read/interaction, window rendering, and docs — a full lifecycle for driving Fiji/ABBA. Minor asymmetries remain, e.g. an explicit stop but no explicit start/restart (start is implicit in run), and no standalone session save/load beyond script replay, but agents can work around these.