Neuro Mcp

io.github.AImplifier由 GitHub 账号 AImplifier 发布v0.1.4更新于 Oct 26, 2026

MCP for NeuroAgents assisting clinicians: MNE processing, EHR store, NeuroII visualization.

概览

AI 生成的概览

本地 MCP 服务器,为 AI 助手提供 54 个 EEG/神经科学工具:MNE 处理、源成像、带版本的 EHR/BIDS 存储以及 HTML 可视化。

可以做什么
  • 处理 EEG 记录:加载、滤波、重采样、设置电极布局与参考、检测坏导、运行 ICA、查找事件、分段、计算 PSD/ERP 与时频分析并绘图。
  • 执行源成像与 ESI 流程,从模板头模型到标签时间序列提取。
  • 管理受试者、数据集、记录与 EHR 条目:注册、导入、查询、新增、修订、查看历史与作废。
  • 管理标注:新增、更新、列出与作废,并对每次变更记录审计日志。
  • 向 neuroii 推送记录与可视化会话,并拉回标注。
  • 生成独立的交互式 HTML 可视化:时间序列、带头皮地形图的平均 ERP,以及体源估计。
适用场景
适合希望用自然语言让助手驱动 EEG 分析与记录流程的临床医生和研究人员:查看记录、添加标注、修订 EHR 条目、将数据集导入 BIDS,并生成可分享的可视化结果。
运行要求
以 PyPI 包形式通过 stdio 在本机运行(需 Python 3.10 及以上,建议使用 conda 或虚拟环境)。可选附加组件提供 PostgreSQL 与 3D 渲染支持。通过环境变量配置:DATABASE_URL(默认本地 SQLite 文件)、BIDS_ROOT、NEURO_MCP_HOME,可选 NEUROII_API_URL 与 NEUROII_API_TOKEN。默认配置无需额外设置即可运行。
安装前请注意
工具会写入持久化存储:EHR 条目与标注可被修订或作废,每次变更都会连同显式指定的操作者记入审计日志。身份认证与权限控制尚未启用(计划于 v0.2),能访问该服务器的人都能修改记录。NEUROII_API_TOKEN 是 bearer 凭证。neuroii 集成尚未接通,在设置 NEUROII_API_URL 之前只返回占位契约。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Neuro Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

🧠 neuro-mcp

An MCP for NeuroAgents that assist clinicians and researchers

[PyPI] [Python] [Docs] [License]

Documentation · PyPI · Tutorial · Tool Reference

It gives an AI agent one interface over the whole clinical/research EEG workflow: signal processing and source imaging (via MNE-Python), a persistent dataset + EHR store (Postgres + BIDS), and NeuroII web visualization.

Concept

mermaid
flowchart LR    Clinician(["🩺 Clinician"])    Researcher(["🔬 Researcher"])    Agent[["🤖 AI Agent"]]    Server(("neuro-mcp<br/>FastMCP · 54 tools"))
    Clinician -- talks to --> Agent    Researcher -- talks to --> Agent    Agent -- MCP --> Server
    Server --> Processing["Processing &amp; Source Imaging<br/>MNE-Python + ESI"]    Server --> Data["Data &amp; EHR Store<br/>Postgres + BIDS<br/>versioned &amp; audited"]    Server --> NeuroII["NeuroII<br/>Web Visualization"]
    classDef proc fill:#4f8cff,stroke:#2f5fbf,color:#fff    classDef data fill:#2fb380,stroke:#1c7a55,color:#fff    classDef viz fill:#b06fe0,stroke:#7c3fae,color:#fff    class Processing proc    class Data data    class NeuroII viz

A clinician or researcher never calls a tool directly — they talk to an agent in plain English, and the agent drives neuro-mcp's 54 tools underneath. See the Tutorial for what that actually looks like end to end.

Actors & workflows

  • Clinician — reviews a recording, adds/edits annotations, and amends EHR (records a diagnosis/observation, corrects a value), then signs off.
  • Researcher — discovers datasets, imports to BIDS, runs MNE processing + source imaging.
  • Agent — orchestrates the above via tool calls.

Clinical-safety model (EHR & annotations)

EHR records and annotations are versioned, never overwritten or hard-deleted:

  • Amend = a new audited version. amend_ehr_record / update_annotation insert a new version; the prior one is retained with status amended. So a clinician can modify the EHR — the current view updates while the original and its author are preserved.
  • Retract = soft void. void_ehr_record / void_annotation set status entered-in-error; the record stays in the history.
  • Every mutation is audited (audit_log: actor, action, before/after).
  • Mutating tools take an explicit actor so authorship is on the record. (Auth/RBAC enforcement is planned for v0.2; the fields and trail are in place.)

Each tool returns an outcome field for the operation (created/amended/voided/…) distinct from the record's clinical status, so the two never collide.

Tools (54)

  • Processing (load_neuro, filter_neuro, resample_neuro, set_montage, set_reference, detect_bad_channels, run_ica/apply_ica, find_events, epoch_neuro, compute_psd, compute_erp, time_frequency, plot_*) and source imaging / ESI (fetch_template_head … extract_label_timecourses).
  • Data/EHR: register_subject, get_subject, add_ehr_record, amend_ehr_record, get_ehr_history, void_ehr_record; import_recording, register_dataset, query_datasets, list_recordings; add_annotation, update_annotation, list_annotations, void_annotation; get_audit_log.
  • neuroii: neuroii_push_recording, neuroii_create_viz_session, neuroii_pull_annotations.
  • neuroii visualizations (standalone interactive HTML, Plotly): visualize_timeseries (stacked multi-channel EEG with scroll + amplitude buttons and annotation markers), visualize_averaging (ERP butterfly + scalp topomap scrubbed by a time slider), visualize_esi (source-estimate ROI time courses + per-time activation bars).

Install

bash
conda create -n neuro-mcp python=3.11 -y   # or any Python >=3.10 envconda activate neuro-mcppip install neuro-mcp              # core, from PyPIpip install "neuro-mcp[postgres]"  # + PostgreSQL driver (LGPL-3.0)pip install "neuro-mcp[viz3d]"     # + 3D source rendering (PySide6, LGPL-3.0)

Working on neuro-mcp itself instead? Clone the repo and use pip install -e . in place of the line above — see Installation for the full zero-to-hero setup, including Claude Code/Codex CLI/Claude Desktop registration.

Configure (environment variables)

VariableDefaultPurpose
DATABASE_URLsqlite:///~/.neuro-mcp/neuro_mcp.dbStore. Prod: postgresql+psycopg://user:pass@host/db
BIDS_ROOT~/.neuro-mcp/bidsRoot of the BIDS-on-disk recording tree
NEUROII_API_URL(unset)neuroii base URL; unset → tools return the documented contract
NEUROII_API_TOKEN(unset)Optional bearer token for neuroii
NEURO_MCP_HOME~/.neuro-mcpBase dir for the SQLite + BIDS defaults

The default (SQLite + a scratch BIDS dir) runs with zero setup; point DATABASE_URL at Postgres for a multi-user/clinical deployment.

Run / register with an MCP host

bash
python -m neuro_mcp     # stdio transport
json
{  "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" }    }  }}

neuroii web visualization

Three tools port NEUROII's main views into self-contained interactive HTML files (Plotly, embedded — no server, works offline). Each returns the .html path; interaction runs client-side:

  • visualize_timeseries (RawView) — MNE-style stacked channels with page navigation (⏮ ◀ ▶ ⏭), a page-length box, scroll-to-zoom amplitude, a grid toggle, and recording annotations drawn as labelled marker lines (toggleable).
  • visualize_averaging (EvokedView) — the averaged ERP as stacked channels with a green time cursor + a scalp topomap; a time slider scrubs both, plus a summary sidebar (nave / peak / tmin / tmax).
  • visualize_esi (EsiView) — a volumetric source estimate (fsaverage template) rendered to canvas on three orthogonal MRI slices (sagittal/coronal/axial) with a black-blue-white-red activation overlay, crosshair, L/R and MNI-coordinate labels; the cut planes recentre on each frame's peak. Below, the ERP butterfly carries a red current-time cursor and a blue half-peak marker. Controls: time slider, global/frame colormap-scale toggle, and a mask-threshold slider. Faithful port of NEUROII's views; needs epochs (epoch_neuro + set_montage).
visualize_averaging(session_id="s") -> {"out_path": ".../averaging_s.html", ...}

neuroii integration (greenfield)

neuroii integration is not wired yet. The tools 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 (POST /api/v1/recordings, POST /api/v1/viz-sessions, GET /api/v1/recordings/{id}/annotations).

Testing

bash
python testing/verify.py     # in-memory MCP client, temp SQLite + BIDS, synthetic EEG

Covers rename integrity, the processing core, the full clinician EHR/annotation lifecycle (add → amend → history → void, with audit), and the neuroii stub. For a full-stack run against Postgres, use testing/docker-compose.yml.

Licensing

neuro-mcp is BSD-3-Clause and bundles no third-party source. All required dependencies are permissive (BSD/MIT/Apache-2.0/PSF). Optional extras carry their own terms — psycopg (LGPL-3.0), PySide6 (LGPL-3.0, chosen over GPL PyQt6). Full attribution and compliance notes are in NOTICE.

License

BSD-3-Clause — see LICENSE.

来源:README.md,提交 786ee6f

工具

0
SourceWeft 曾在隔离沙箱中以无凭据方式启动该软件包一次,以列出其工具,但未能完成:服务器未在限时内响应。

版本历史

2
  1. v0.1.4最新Oct 26, 2026
  2. v0.1.3Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分