mcpField
E
eeg-mcp

eeg-mcp

本地服务
aimplifier.github.io科研与教育32 天前更新

关于 eeg-mcp

eeg-mcp 是面向实时 EEG 研究和临床工作的 MCP 服务,将采集、录制回放、在线信号处理、监看和带安全门控的刺激整合到一个接口中。它还提供无需硬件的合成设备,用于试运行流程。

主要功能

  1. 01从 BrainFlow 设备或合成设备采集数据
  2. 02按原始时间回放录制文件
  3. 03执行有状态在线 DSP 和自定义处理器
  4. 04通过浏览器实时监看信号
  5. 05录制可从崩溃中恢复的 FIF 数据
  6. 06通过安全门控发送刺激

适用场景

  1. 01无硬件测试 EEG 工作流
  2. 02将录制文件作为实时流回顾
  3. 03采集期间监看信号质量
  4. 04构建闭环神经反馈工作流

MCP 相关

该服务通过 MCP 提供 47 个工具,用于 EEG 流采集、回放、处理、监看、录制、事件和刺激。MCP 客户端可通过 Python 模块 `eeg_mcp` 启动它。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"aimplifier-eeg": {
"command": "uvx",
"args": [
"eeg-mcp"
]
}
}
}
启动命令uvx eeg-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypieeg-mcp0.2.0

工具

47

收录的工具列表 · 更新于 2 天前

此工具无需参数。

详细介绍

⚡🧠 eeg-mcp

面向 AI Agent 的实时 EEG——流式传输、回放、可视化、录制、刺激

PyPI Python Docs License

文档 · 教程 · 硬件 · 安全 · 工具参考

一个 Model Context Protocol 服务,为 AI Agent 提供统一接口,覆盖 EEG 的实时工作流:从约 66 种 BrainFlow 设备采集数据、按墙上时钟回放现有录制内容、有状态的在线 DSP、实时浏览器监视器、崩溃安全录制,以及受门控保护的刺激输出。

离线配套项目是 neuro-mcp(MNE 处理、源成像、BIDS/EHR 存储)。本项目负责实时部分——即必须在信号仍持续到达时完成的一切工作。

概念

flowchart LR
    Researcher(["🔬 BCI Researcher"])
    Clinician(["🩺 Clinician"])
    Agent[["🤖 AI Agent"]]
    Server(("eeg-mcp<br/>FastMCP · 47 tools"))

    Clinician -- talks to --> Agent
    Researcher -- talks to --> Agent
    Agent -- MCP --> Server

    Server --> Acquire["Acquire<br/>66 boards · replay<br/>at true rate"]
    Server --> Process["Process<br/>stateful online DSP<br/>custom plugins"]
    Server --> Watch["Watch &amp; Record<br/>live monitor · HTML<br/>crash-safe .fif"]
    Server --> Stim["Stimulate<br/>LSL · TTL · TMS/tES<br/>3 safety gates"]

    classDef acq fill:#14b8a6,stroke:#0d9488,color:#fff
    classDef proc fill:#4f8cff,stroke:#2f5fbf,color:#fff
    classDef viz fill:#b06fe0,stroke:#7c3fae,color:#fff
    classDef stim fill:#eb5757,stroke:#b93b3b,color:#fff
    class Acquire acq
    class Process proc
    class Watch viz
    class Stim stim

无需手动调用工具——只需用日常语言与 Agent 对话,它便会驱动底层的 47 种工具。 教程 将端到端展示具体操作过程,无需任何硬件。

功能

📡 流式采集

支持 66 种 BrainFlow 板卡标识符,包括 OpenBCI、Muse、ANT Neuro、g.tec、Mentalab 等,也支持无需硬件的合成板卡。采样数据由后台线程写入环形缓冲区,因此工具调用读取的是实时视图,不会因等待设备而阻塞。BrainFlow 无法连接板卡时(例如 Muse 在 Windows 上受 上游 SimpleBLE 缺陷影响),可通过 board="lsl" 连接现有的 LSL 输出端。

⏪ 回放

以录制时的速率播放 EDF/BDF/GDF/SET/FIF 或 BrainFlow CSV 文件,并按原始时间点将注释重新发送为事件。支持调速、跳转、暂停和循环。针对文件开发的流水线可在硬件上原样运行。

👁 可视化

通过回环地址绑定、令牌保护的实时浏览器视图:滚动波形、事件标记、频带功率、各电极质量和传输控制。此外还可生成独立的 HTML 报告——无需 CDN 或外部资源,可在隔离网络的计算机上打开。

💾 录制

持续写入 MNE 原生 .fif 文件,并将事件日志作为注释附加;同时在与 neuro-mcp 架构兼容的存储中写入一行元数据。具备崩溃安全性:中断的会话可以恢复。

🧩 扩展

接入自定义实时处理器——特征提取器、分类器、伪迹门控器,或用于序列模型的 EEG 分词器——即可在采集循环中与内置处理器同等运行。 → 扩展

⚡ 刺激

通过可插拔后端使用统一的 send_stim_event 接口:用于软件的 LSL、用于样本对齐嵌入的 BrainFlow 标记通道,以及用于 TMS 和 tES 等硬件的串口/TTL 和模板化 ASCII——全程经过三重安全门控。

说明

一份事件日志。 板卡标记、回放注释、已发送的刺激和手动备注都使用同一时钟,写入同一张表,并带有绝对样本索引。闭环运行结束后即可重建,无需关联时钟。

安装

conda create -n eeg-mcp python=3.11 -y && conda activate eeg-mcp
pip install eeg-mcp
可选扩展和 MCP 客户端注册
pip install "eeg-mcp[lsl]"      # LSL marker outlets (PsychoPy, OpenViBE, ...)
pip install "eeg-mcp[serial]"   # serial/TTL trigger delivery to hardware

使用环境解释器的绝对路径向 MCP 客户端注册:

{
  "mcpServers": {
    "eeg-realtime": {
      "command": "/path/to/envs/eeg-mcp/bin/python",
      "args": ["-m", "eeg_mcp"]
    }
  }
}

也可以使用 Claude Code CLI:

claude mcp add eeg-realtime -- /path/to/envs/eeg-mcp/bin/python -m eeg_mcp

→ 完整指南:安装

快速开始

告诉 Agent 你想要的结果,由它选择调用方式。无需硬件:

start_stream(session_id="s1", board="synthetic")
check_signal_quality(session_id="s1")          # before trusting anything
set_filters(session_id="s1", bandpass_low=1, bandpass_high=40, notch_freq=50)
get_band_power(session_id="s1", seconds=2)
start_monitor(session_id="s1")                 # → open the returned URL

像实时数据一样回放真实录制内容,然后继续录制:

inspect_recording(path="sub-04_rest.edf")
start_replay(session_id="r1", path="sub-04_rest.edf", speed=1.0)
get_events(session_id="r1", origin="annotation")
export_report(session_id="r1", notes="Routine review.")
flowchart LR
    A["start_stream<br/><i>or</i> start_replay"] --> B[check_signal_quality]
    B --> C[set_filters]
    C --> D["get_band_power<br/>get_psd"]
    C --> E[start_monitor]
    C --> P[attach_processor]
    A --> R[start_recording]
    D --> S[send_stim_event]
    P --> S
    R --> X[stop_recording]
    S --> X
    E --> X
    X --> Z[stop_stream]

    classDef hot fill:#14b8a6,stroke:#0d9488,color:#fff
    class A,X hot
## 文档
指南
🚀 安装环境、客户端注册、故障排除
📘 教程端到端,无需硬件
⏪ 回放驱动开发基于录制数据构建,部署到实时环境
🔁 闭环神经反馈特征 → 触发,并设有经过测量的延迟预算
🩺 实时临床审查可视化审查、标注、报告
⚡ 刺激协议通过安全门控执行 TMS 和 tES
🧩 扩展编写自定义处理器或 EEG 分词器
🔌 支持的硬件全部 66 种电路板、格式和刺激传输方式
⚠️ 安全连接刺激器前请阅读
🛠 工具参考全部 47 种工具

值得了解的一项设计决策

重要

滤波在生产者线程中进行,而不是在查询时进行。

有状态 IIR 滤波器必须按顺序恰好处理每个样本一次。常见的捷径——对每个查询窗口独立滤波——会在每个窗口边界重新启动滤波器,并在每次启动时引入瞬态。在频带功率图中看不出来,但对任何相位敏感的用途都致命。

因此,生产者会在每个数据块到达时对其滤波一次,沿用 sosfilt 的延迟线状态,并写入第二个环形缓冲区。查询只需读取数据。

flowchart LR
    BF[Board / Recording] -->|poll| PR{{Producer thread}}
    PR -->|raw chunk| RB[(Raw ring buffer)]
    PR -->|stateful sosfilt| FB[(Filtered ring buffer)]
    PR -->|markers &amp; annotations| EL[(Event log)]
    PR -->|append| DISK[(.fif on disk)]
    PR -->|streaming| PL[Your processors]
    RB & FB & EL --> Q[MCP tools]

    classDef hot fill:#14b8a6,stroke:#0d9488,color:#fff
    class PR hot

测试套件断言,分块滤波与整段信号滤波的结果相差不超过 1e-9,并且断言作为对照的朴素方法确实无法满足这一点。

结果
滤波器是因果的没有零相位选项——这需要未来样本。stream_status 会报告 group_delay_sec
保留两个缓冲区read_window(filtered=false) 始终获取原始信号,以便检查某个特征是真实存在还是伪迹
索引共享事件的 sample_index 在任一缓冲区中都表示同一位置

提示

闭环的预算应为群延迟 + 轮询间隔 + 分发延迟—— 在参考配置中测得约 71 ms。适用于神经反馈; 不适用于相位锁定刺激。

刺激安全

注意

本软件不是医疗器械,且未经临床用途验证。 TMS 和 tES 可能造成伤害,包括癫痫发作。仅可在经伦理委员会批准的方案下使用;设备的硬件级联锁必须完好,并且必须有经过培训的操作员在场。

每个硬件后端都适用以下三道安全门控:

#门控效果
1配置除非服务启动时设置了 EEG_MCP_ALLOW_HARDWARE_STIM=1,否则硬件后端会拒绝打开。Agent 无法设置此项。
2布防arm_stim 允许在一段会过期的时间窗口内进行分发,因此卡住的 Agent 无法恢复后再触发
3限制强度、时长和间隔都会被限制;违规时会抛出异常,而不是静默钳制

这些措施都不能替代设备本身的联锁。

警告

硬件后端是通用传输层,通过你根据设备手册提供的命令模板驱动——它们不是厂商驱动程序,也没有任何一个经过实体刺激器测试。 一个看似可信但未经测试的驱动程序比没有驱动程序更糟:连接到某个对准他人头部的设备时,它可能悄无声息地失效。

每个协议都应从 backend="log" 开始;它会接受所有内容,但不会发出任何内容。

验证

python testing/verify.py                    # core correctness
python testing/verify_recording.py          # recording + metadata store
python testing/verify_processing.py         # plugin processors
python testing/persona_bci_researcher.py    # engineer workflow
python testing/persona_clinician.py         # clinician workflow

这 5 项测试都通过 FastMCP 的内存客户端驱动真实服务,并根据预设的真实值进行断言:

  • 在标注起始时刻预设的尖峰,在提取的历元中落在 t = 0 ± 0 ms——证明标注时间、回放时钟、环形缓冲区索引和历元提取彼此一致;
  • 故意损坏的插件无法中断采集——吞吐量保持在 1.0;
  • 未设置配置门控时,拒绝硬件刺激。

→ 已覆盖和未覆盖的内容 — 其中包括一份坦诚的清单,列出哪些内容从未在真实硬件上测试过。

许可证

BSD-3-Clause。请参阅 LICENSE 和 NOTICE。


⬆ 返回顶部 · 属于 AImplifier 神经工具链 · 姊妹项目 neuro-mcp

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。