关于 BrainFlow Biosensing Boards
该 MCP 服务通过 BrainFlow SDK 从支持的生物传感板采集并分析 EEG、EMG、ECG、EOG、PPG 和 EDA 数据,面向神经科学及生理研究。它结合事件标记、脑电频带分析和逐电极信号质量检查;仅供研究使用,不是医疗设备。
主要功能
- 01采集并记录多类生理信号
- 02插入事件标记并保存记录
- 03计算 EEG 频带功率
- 04检查电极信号质量
- 05列出 BrainFlow 支持的板卡
适用场景
- 01比较睁眼与闭眼记录的枕叶 α 功率
- 02检查电极接触及工频噪声
- 03为实验刺激和条件变化插入标记
MCP 相关
向 MCP 客户端提供 BrainFlow 板卡连接、信号采集、记录、分析和流控制工具,也可插入事件标记或发送板卡配置命令。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx labmcp-brainflowLABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)LABMCP_READ_ONLYSet to 1 to disable all state-changing toolsLABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
12收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
BrainFlow 生物传感器板 — MCP 服务
让 AI Agent 从开源 BrainFlow SDK 支持的生物传感器板采集 EEG、EMG、ECG、EOG、PPG 和 EDA 数据流,并进行记录和分析:包括 OpenBCI、Muse、Neurosity、g.tec Unicorn、BrainBit 等。支持带事件标记的记录、EEG 频段功率分析,以及逐电极信号质量检查。
仅供研究使用。本产品不是医疗器械。 请勿将其用于诊断、监测或治疗。请遵守板卡制造商的安全说明(电池供电、电气隔离、皮肤准备)。本服务不会更改这些说明。
| 软件包 | labmcp-brainflow |
| 仪器 | OpenBCI Cyton、Cyton+Daisy、Ganglion、Galea(USB 加密狗、BLE、WiFi Shield)· Muse 2 / S / S Athena / 2016 · Neurosity Crown / Notion · g.tec Unicorn · BrainBit · Callibri · Enophone · Mentalab Explore · EmotiBit · FreeEEG32/128 · NeuroPawn Knight · Shimmer3 · BrainFlow BoardIds 中的任何其他板卡 |
| 接口 | USB 串口加密狗、蓝牙 LE(原生或 BLED112 加密狗)、WiFi、厂商 SDK(均通过 BrainFlow) |
| 协议 | BrainFlow SDK ≥ 5.21:BoardShim、BrainFlowInputParams、DataFilter(用户 API、支持的板卡、数据格式) |
| 状态 | 🧪 模拟:已通过 BrainFlow 自带的合成板和内置模拟器测试,尚未在硬件上验证。报告硬件测试 |
无需硬件即可试用
uvx labmcp-brainflow --simulate --check
--simulate 会运行 BrainFlow 自带的 SYNTHETIC_BOARD,因此会执行真实的 BrainFlow 代码路径:16 个 EXG 通道,采样率为 250 Hz,包含 5、10、15 … 80 Hz 的正弦波,以及加速度计、陀螺仪、PPG、EDA 和温度数据行。在 BrainFlow 原生库无法加载的平台上,或使用 --option simulator=fake 时,则改用纯 NumPy 模拟替代方案。它会模拟一个 8 通道、250 Hz 的 EEG 头戴设备,包含 1/f 背景信号、10 Hz 后部 α 波,以及一个贴附不良的电极(Fp2,存在严重的 50 Hz 干扰),供信号质量检查检测。
连接你的设备
- 选择设备,使用
--option board=<alias>(或任意 BrainFlowBoardIds名称,例如ANT_NEURO_EE_411_BOARD,也可以使用数字 ID)。list_supported_boards工具也会输出此表。 - 提供连接详情,使用
--address。根据设备的不同,BrainFlow 需要使用不同的BrainFlowInputParams字段,服务会自动填入正确字段:
设备(--option board=) | --address 的值 | 是否必需? | 备注 |
|---|---|---|---|
cyton、cyton_daisy | USB 加密狗的串口 | 是 | macOS:使用 /dev/cu.usbserial-*,不要使用 /dev/tty.* |
ganglion(原生 BLE) | 蓝牙 MAC 地址 | 否(自动发现) | FW 2 设备:--option other_info=fw:2 |
ganglion_dongle | BLED112 加密狗的串口 | 是 | 可选 --option mac_address= |
cyton_wifi、cyton_daisy_wifi、ganglion_wifi | WiFi Shield IP(直连模式下为 192.168.4.1) | 否(SSDP) | --option ip_port=(默认值为 6789) |
muse_2、muse_s、muse_s_athena、muse_2016 | 蓝牙 MAC 地址 | 否 | --option serial_number=Muse-XXXX;PPG:--option other_info=p50(Muse 2)/p61(Muse S) |
muse_2_bled、muse_s_bled | BLED112 加密狗的串口 | 是 | |
crown、notion_1、notion_2 | 设备序列号 | 否 | 需处于同一网络,且必须允许广播 |
unicorn、brainbit | 设备序列号 | 否 | Unicorn:与随附的加密狗配对 |
enophone、explore_4、explore_8 | 蓝牙 MAC 地址 | 仅限 Linux | |
emotibit | 网络广播地址 | 否 | |
freeeeg32、freeeeg128、neuropawn_knight、shimmer3、ironbci_32 | 串口 | 是 | |
playback | BrainFlow 格式的文件路径 | 是 | --option master_board=<board it was recorded with> |
synthetic | 无 | BrainFlow 合成设备 |
对于未列出的设备,服务会根据地址格式推断字段:COM3 或 /dev/… 会被视为串口,AA:BB:… 会被视为 MAC 地址,a.b.c.d 会被视为 IP 地址,其他格式则会被视为序列号。你也可以使用 --option serial_port=… / mac_address=… / ip_address=… / serial_number=… / other_info=… / timeout=… 直接设置任何字段。
- 测试连接:
首先关闭占用设备的其他程序(OpenBCI GUI、Muse 应用)。在 Linux 上,将自己添加到uvx labmcp-brainflow --option board=cyton --address /dev/cu.usbserial-DM00Q0QN --check # macOS uvx labmcp-brainflow --option board=cyton_daisy --address COM3 --check # Windows uvx labmcp-brainflow --option board=muse_2 --option serial_number=Muse-1A2B --check uvx labmcp-brainflow --option board=unicorn --checkdialout组,以使用串口。
添加到 MCP 客户端
Claude Code
claude mcp add eeg -- uvx labmcp-brainflow --option board=cyton --address /dev/ttyUSB0
Claude Desktop / Cursor / Windsurf(claude_desktop_config.json、.cursor/mcp.json 等)
{
"mcpServers": {
"eeg": {
"command": "uvx",
"args": ["labmcp-brainflow", "--option", "board=cyton", "--address", "/dev/ttyUSB0"]
}
}
}
使用 --read-only 时,Agent 仍可记录和分析数据(每次记录都会启动临时数据流),但无法让数据流持续运行、插入标记或发送 configure_board 命令。stop_streaming 仍可使用。
工具
| 工具 | 类型 | 描述 |
|---|---|---|
configure_board | ⚠️ hazard | 通过 BrainFlow 的 config_board 向固件发送原始的、特定于电路板的命令(例如 OpenBCI 通道设置 'x1060110X'、测试信号,或用于启用 PPG 的 Muse 预设 'p50'/'p61')。 |
get_band_powers | 👁 read | 最近 window_s 秒内的 EEG 频段功率(delta 1-4、theta 4-8、alpha 8-13、beta 13-30、gamma 30-50 Hz):BrainFlow 的通道平均相对功率,以及逐通道绝对功率 (uV^2)、相对功率和峰值频率。如果未在流式采集,则记录一个新的时间窗口。 |
get_board_info | 👁 read | 描述已连接的电路板:按类型列出的通道名称(在大多数电路板上,EEG/EMG/ECG/EOG 共用 EXG 行)、采样率、可用预设(数据缓冲区)和流式采集状态。 |
get_command_log | 👁 read | 返回最近发送给仪器的原始命令和收到的回复(最新的在最后)。有助于调试和记录操作内容。 |
get_connection_info | 👁 read | 报告已连接的仪器(身份、地址、模拟或真实)、服务是否为只读,以及当前生效的安全限制。请先调用此工具。 |
get_signal_quality | 👁 read | 检查每个 EXG 通道是否存在常见电极问题:平线(已断开)、信号触顶(放大器饱和,适用于 OpenBCI Cyton 电路板)、强烈的 50/60 Hz 市电噪声(接触不良或缺少参考电极),以及不合理的高振幅(运动、肌肉活动、电极松动)。 |
insert_marker | 🎛 control | 在当前采样点向数据流写入事件标记(用于事件相关实验:刺激开始、条件变化)。需要先调用 start_streaming;标记会出现在 record 结果和保存的文件中。 |
list_supported_boards | 👁 read | 列出常见的 BrainFlow 电路板:--option board= 别名、BrainFlow 电路板 ID,以及 --address 必须包含的连接详情(串行端口、Bluetooth MAC、IP 地址或序列号)。也接受其他 BrainFlow BoardIds 名称或数字 ID。无需连接电路板。 |
reconnect | 🛑 safety | 关闭并重新打开与仪器的连接(例如仪器断电重启或重新插入线缆后)。 |
record | 👁 read | 记录 duration_s 秒,并返回逐通道统计信息、事件标记和降采样后的波形。如果正在运行实时数据流,则使用该数据流;否则启动临时数据流。完整数据(每一行、完整采样率)可写入 save_path。调用 stop_streaming 可提前结束录制。 |
start_streaming | 🎛 control | 启动连续采集,并写入 BrainFlow 环形缓冲区(电路板的无线电/LED 会开启;不会对参与者施加任何信号)。insert_marker 需要此工具;之后 record 会从实时数据流读取数据。完成后请调用 stop_streaming。 |
stop_streaming | 🛑 safety | 停止采集(节省电池)。正在进行的 record 会立即结束,并返回截至此时采集的数据。缓冲区中已有的数据会保留,直到下次启动数据流或释放会话(reconnect)。 |
安全限制
| 限制 | 默认值 | 含义 |
|---|---|---|
max_record_duration_s | 60 s | Agent 可请求的最长录制时长或分析窗口(record、get_band_powers、get_signal_quality) |
启动时覆盖:--limit max_record_duration_s=600。BrainFlow 电路板用于测量;唯一能够开启输出的工具(例如通过电极施加阻抗测试电流,或开启通道上的偏置驱动)是 configure_board。该工具会原样传递固件命令,并标记为危险操作,因此 MCP 客户端会在运行前征求确认。
示例提示词
- “检查所有 8 个 Cyton 通道的信号质量,并告诉我哪些电极需要补涂凝胶。”
- “录制 30 s 闭眼和 30 s 睁眼数据,将两段数据都保存为 CSV 到 ~/data/sub-01/,并比较枕叶 alpha 功率。”
- “开始流式传输。我将进行 oddball 任务:我告诉你时,为标准刺激插入标记 1,为目标刺激插入标记 2。然后以 BrainFlow 格式保存会话。”
- “过去 10 秒内,O1 和 O2 上的 alpha 峰值频率是多少?”
- “此设置中是否有 50 或 60 Hz 的电源噪声?出现在哪些通道?”
- “列出你支持的开发板,并告诉我如何连接 Muse S。”
备注
- 频带功率的计算方式。
average_relative来自 BrainFlow 的DataFilter.get_avg_band_powers(apply_filter=True):去趋势、48–52 和 58–62 Hz 带阻滤波、2–45 Hz 带通滤波、Welch PSD,然后将 1–4、4–8、8–13、13–30 和 30–50 Hz 频带在各通道间取平均,并归一化为总和 1。每个通道的数值经过去趋势、50/60 Hz 陷波和 1–45 Hz 四阶零相位 Butterworth 滤波(BrainFlowDataFilter),随后计算 Welch PSD(Hann 窗,50 % 重叠,约 0.5 Hz 分辨率)。绝对频带功率是积分后的 PSD,单位为 µV²;gamma 实际上为 30–45 Hz。 - 信号质量判定(面向 EEG 的阈值):
flat表示原始 SD 低于 0.5 µV(已断开);railed表示使用了至少 90 % 的 ADS1299 输入范围(仅适用于 OpenBCI Cyton 系列,使用 BrainFlow 的公式,增益 24 由--option exg_gain=设置);line_noise表示 50 或 60 Hz 功率超过整个 1–45 Hz 范围的功率;high_amplitude表示带通滤波后的 RMS 高于 100 µV。EMG/ECG 录制自然会呈现“高振幅”。 - 单位。 BrainFlow 会“尽可能”以 µV 返回 EXG 数据。OYMotion gForce 臂带返回 ADC 计数。加速度计、PPG 等通道使用开发板特定的单位。时间戳为 Unix 秒。
- 预设。 有些开发板会以不同的采样率流式传输多个缓冲区,例如 Muse EEG(默认)、IMU(辅助)和 PPG(附加)。将
preset=传递给get_board_info和record。 - 标记会写入默认预设的标记行,并且需要已启动流(
start_streaming)。record运行时可以插入标记。值 0 为保留值。 - 保存的文件。
save_path必须指向一个新文件(.csv;save_format="brainflow"时可用.csv、.tsv或.txt):~会展开,缺失的文件夹会自动创建,现有文件绝不会被覆盖,并且会在录制开始前检查路径。save_format="csv"会为每一行写入带标签的列。save_format="brainflow"会写入DataFilter.write_file的输出,可使用--option board=playback --address file.csv --option master_board=<board>重放。 configure_board会通过 BrainFlow 的config_board将字符串直接传递给开发板固件,例如 OpenBCI 通道设置或 Muse 预设。不会进行任何检查:某些命令会启用输出,例如脱落(阻抗测试)电流。设置会一直保留,直到更改设置或将开发板断电重启;有效命令请查阅开发板的 SDK 文档。- 流。 如果没有正在运行的流,
record、get_band_powers和get_signal_quality会启动一个临时流,并在之后停止;但如果期间调用了start_streaming(此时流会保持运行)或另一个录制仍在使用该流,则不会停止。stop_streaming会立即结束正在运行的record;它只返回截至当时采集的数据,并将stopped_early: true设为 true。 reconnect(以及停止服务)会停止流并调用release_session,以释放串行端口或 BLE 连接。
硬件验证
| 型号 | 固件 | 接口 | 验证者 | 日期 |
|---|---|---|---|---|
| 暂无: 成为第一个 |
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。