Configuration¶
neuro-mcp is configured entirely through environment variables (see
neuro_mcp/config.py), so the same binary works for a zero-setup local run
and a shared clinical deployment without code changes.
| Variable | Default | Purpose |
|---|---|---|
DATABASE_URL |
sqlite:///~/.neuro-mcp/neuro_mcp.db |
The data/EHR store. Production: postgresql+psycopg://user:pass@host/db (requires the postgres extra). |
BIDS_ROOT |
~/.neuro-mcp/bids |
Root of the BIDS-on-disk recording tree that import_recording writes into. |
NEUROII_API_URL |
(unset) | Base URL of a neuroii instance. Unset → the neuroii_* tools return the documented not_configured contract instead of calling out. |
NEUROII_API_TOKEN |
(unset) | Optional bearer token for NEUROII_API_URL. |
NEURO_MCP_HOME |
~/.neuro-mcp |
Base directory used to derive the default SQLite path and BIDS root when DATABASE_URL/BIDS_ROOT aren't set. |
The default (SQLite + a scratch BIDS dir under ~/.neuro-mcp) runs with
zero setup — good for local development and the testing/ scripts (which
override DATABASE_URL/BIDS_ROOT with temp directories so they never touch
your real data home). Point DATABASE_URL at Postgres for a multi-user or
clinical deployment.
Registering with an MCP host¶
python -m neuro_mcp # stdio transport
{
"mcpServers": {
"neuro-analysis": {
"command": "/path/to/envs/neuro-mcp/bin/python",
"args": ["-m", "neuro_mcp"],
"env": {
"DATABASE_URL": "sqlite:////data/neuro_mcp.db",
"BIDS_ROOT": "/data/bids"
}
}
}
}
Point command at the interpreter inside the environment where you ran
pip install -e . (or a released neuro-mcp install).
neuroii integration status¶
neuroii integration is greenfield: the tools in
neuroii Integration define and return the expected REST
contract (see neuro_mcp/neuroii/client.py). Until NEUROII_API_URL is set,
they respond {"status": "not_configured", "contract": {...}} so the neuroii
app has a fixed target to implement against:
POST /api/v1/recordingsPOST /api/v1/viz-sessionsGET /api/v1/recordings/{id}/annotations