BrainFlow Biosensing Boards について
BrainFlow SDK を使い、対応する生体センシングボードから EEG、EMG、ECG、EOG、PPG、EDA を取得・分析する MCP サーバーです。イベントマーカー、EEG 周波数帯域の分析、電極ごとの信号チェックを備え、研究専用で医療用途ではありません。
主な機能
- 01複数の生体信号を取得・記録
- 02イベントマーカーの挿入と記録保存
- 03EEG 帯域パワーの算出
- 04電極ごとの信号品質チェック
- 05BrainFlow 対応ボードの一覧表示
活用シーン
- 01開眼・閉眼記録の後頭部アルファパワーを比較
- 02電極接触と電源周波数ノイズを確認
- 03実験刺激や条件変更にマーカーを付与
MCP 対応
BrainFlow ボードの接続、信号取得、記録、分析、ストリーム制御のツールを MCP クライアントに公開します。イベントマーカーの挿入やボード設定コマンドにも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの 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 エージェントが、オープンソースの BrainFlow SDK がサポートするバイオセンシングボード(OpenBCI、Muse、Neurosity、g.tec Unicorn、BrainBit など)から EEG、EMG、ECG、EOG、PPG、EDA をストリーミング、記録、分析できます。イベントマーカーを付けた記録、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 シリアルドングル、Bluetooth 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 製のスタンドインを使用します。これは 1/f 背景ノイズ、10 Hz の後頭部アルファ波、装着状態の悪い電極(Fp2、強い 50 Hz の混入)がある、8 チャンネル・250 Hz の EEG ヘッドセットをシミュレートします。そのため、信号品質チェックで問題を検出できます。
ボードを接続する
--option board=<alias>(またはANT_NEURO_EE_411_BOARDなどの BrainFlowBoardIds名、もしくは数値 ID)でボードを選択します。list_supported_boardsツールでもこの表を確認できます。--addressで接続情報を指定します。ボードによって BrainFlow が要求するBrainFlowInputParamsフィールドは異なります。サーバーは適切なフィールドを設定します。
ボード(--option board=) | --address の指定内容 | 必須? | 備考 |
|---|---|---|---|
cyton、cyton_daisy | USB ドングルのシリアルポート | はい | macOS:/dev/tty.* ではなく /dev/cu.usbserial-* を使用してください |
ganglion(ネイティブ BLE) | Bluetooth 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 | Bluetooth 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 | Bluetooth 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 を指定した場合、エージェントは引き続きデータを記録して分析できます(記録ごとに一時ストリームが開始されます)が、ストリームの実行を継続したり、マーカーを挿入したり、configure_board コマンドを送信したりすることはできません。stop_streaming は引き続き使用できます。
ツール
| ツール | 種類 | 説明 |
|---|---|---|
configure_board | ⚠️ 危険 | BrainFlow の config_board を通じて、ボード固有のコマンドをファームウェアに直接送信します(例:OpenBCI のチャンネル設定 'x1060110X'、テスト信号、または PPG を有効にする Muse のプリセット 'p50'/'p61')。 |
get_band_powers | 👁 読み取り | 直近の window_s 秒間の EEG 帯域パワー(デルタ 1~4、シータ 4~8、アルファ 8~13、ベータ 13~30、ガンマ 30~50 Hz):BrainFlow のチャンネル平均相対パワーに加え、チャンネルごとの絶対パワー(uV^2)と相対パワー、およびピーク周波数を返します。ストリーミング中でない場合は、新しいウィンドウを記録します。 |
get_board_info | 👁 読み取り | 接続されたボードについて、種類別のチャンネル名(ほとんどのボードでは EEG/EMG/ECG/EOG は EXG 行を共有)、サンプリングレート、利用可能なプリセット(データバッファ)、およびストリーミング状態を説明します。 |
get_command_log | 👁 読み取り | 機器に送信された、または機器から受信した最新の生コマンドを返します(新しいものが最後)。デバッグや実施内容の記録に役立ちます。 |
get_connection_info | 👁 読み取り | 接続されている機器(識別情報、アドレス、シミュレーションか実機か)、サーバーが読み取り専用かどうか、および有効な安全制限を報告します。最初に呼び出してください。 |
get_signal_quality | 👁 読み取り | すべての EXG チャンネルについて、よくある電極の問題を確認します:フラットライン(切断)、レール状態(アンプの飽和、OpenBCI Cyton ボード)、強い 50/60 Hz 商用電源ノイズ(接触不良または基準電極の欠落)、および不自然に高い振幅(体動、筋肉、電極の緩み)。 |
insert_marker | 🎛 制御 | 現在のサンプル位置でデータストリームにイベントマーカーを書き込みます(イベント関連実験での刺激開始、条件変更など)。start_streaming が必要です。マーカーは record の結果と保存ファイルに表示されます。 |
list_supported_boards | 👁 読み取り | 一般的な BrainFlow ボードを一覧表示します:--option board= のエイリアス、BrainFlow のボード ID、および --address に指定する接続情報(シリアルポート、Bluetooth MAC、IP アドレス、またはシリアル番号)。その他の BrainFlow BoardIds の名前または数値 ID も受け付けます。ボードは必要ありません。 |
reconnect | 🛑 安全 | 機器との接続を閉じて再度開きます(電源を入れ直した後やケーブルを差し直した後など)。 |
record | 👁 読み取り | duration_s 秒間記録し、チャンネルごとの統計、イベントマーカー、およびダウンサンプリングしたトレースを返します。実行中のライブストリームがあればそれを使用し、なければ一時的なストリームを開始します。全データ(すべての行、フルサンプリングレート)は save_path に書き込めます。stop_streaming を呼び出すと記録を早期に終了できます。 |
start_streaming | 🎛 制御 | BrainFlow のリングバッファへの連続取得を開始します(ボードの無線機能/LED がオンになります。参加者には何も適用されません)。insert_marker に必要です。その後、record はライブストリームから読み取ります。終了したら stop_streaming を呼び出してください。 |
stop_streaming | 🛑 安全 | 取得を停止します(バッテリーを節約します)。進行中の record は、その時点までに取得したデータで直ちに終了します。バッファ内のデータは、次のストリームが開始されるか、セッションが解放される(reconnect)まで保持されます。 |
安全制限
| 制限 | デフォルト | 意味 |
|---|---|---|
max_record_duration_s | 60 s | エージェントが要求できる最長の記録時間または解析ウィンドウ(record、get_band_powers、get_signal_quality) |
起動時に上書きできます:--limit max_record_duration_s=600。BrainFlow ボードは測定を行います。出力をオンにできる唯一のツール(たとえば、電極にインピーダンス検査電流を流す、またはチャンネルのバイアス駆動を行う)は configure_board です。これはファームウェアへの生のパススルーであり、MCP クライアントが実行前に確認を求めるよう、危険としてマークされています。
プロンプトの例
- 「8 つすべての Cyton チャンネルの信号品質を確認して、ジェルを追加する必要がある電極を教えてください。」
- 「目を閉じた状態で 30 秒、開いた状態で 30 秒記録し、両方を ~/data/sub-01/ に CSV として保存して、後頭部のアルファパワーを比較してください。」
- 「ストリーミングを開始してください。オドボール課題を実施します。指示したら、標準刺激にはマーカー 1、標的刺激にはマーカー 2 を挿入してください。その後、セッションを BrainFlow 形式で保存してください。」
- 「過去 10 秒間の O1 と O2 のピークアルファ周波数はいくつですか?」
- 「このセットアップには 50 Hz または 60 Hz の電源ノイズがありますか?ある場合は、どのチャンネルにありますか?」
- 「対応しているボードを一覧表示して、Muse S の接続方法を教えてください。」
注意事項
- バンドパワーの計算方法。
average_relativeは、BrainFlow のDataFilter.get_avg_band_powers(apply_filter=True)から得られます。処理は、トレンド除去、48–52 Hz および 58–62 Hz のバンドストップ、2–45 Hz のバンドパス、ウェルチ法による PSD の計算を行った後、1–4、4–8、8–13、13–30、30–50 Hz の各バンドをチャンネル間で平均し、合計が 1 になるよう正規化します。チャンネルごとの値は、トレンド除去、50/60 Hz のノッチフィルター、1–45 Hz の 4 次ゼロ位相バターワースフィルター(BrainFlow のDataFilter)を適用し、その後ウェルチ法による PSD(ハン窓、オーバーラップ 50%、ビン幅 ≈0.5 Hz)を計算します。絶対バンドパワーは積分した PSD(µV²)で、ガンマ帯域は実質的に 30–45 Hz です。 - 信号品質の判定(EEG 向けのしきい値):
flatは生データの SD が 0.5 µV 未満(未接続)を意味します。railedは ADS1299 の入力範囲の 90%以上を使用していることを意味します(BrainFlow の計算式を使用。ゲイン 24 は--option exg_gain=で設定し、OpenBCI Cyton ファミリーのみが対象です)。line_noiseは 50 または 60 Hz のパワーが 1–45 Hz 全体のパワーを上回ることを意味します。high_amplitudeはバンドパス処理後の RMS が 100 µV を超えることを意味します。EMG/ECG の記録は、通常「振幅が高い」状態になります。 - 単位。 BrainFlow は、可能な限り EXG を µV で返します。OYMotion gForce アームバンドは ADC カウントを返します。加速度計、PPG などのチャンネルは、ボード固有の単位を使用します。タイムスタンプは Unix 秒です。
- プリセット。 ボードによっては、サンプリングレートが異なる複数のバッファをストリーミングします。たとえば、Muse では EEG(デフォルト)、IMU(補助)、PPG(付随)があります。
get_board_infoとrecordにpreset=を渡してください。 - マーカーはデフォルトのプリセットのマーカー行に書き込まれ、ストリームがアクティブである必要があります(
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が設定されます。 reconnect(およびサーバーの停止)はストリームを停止し、release_sessionを呼び出して、シリアルポートまたは BLE 接続を解放します。
ハードウェアの検証
| モデル | ファームウェア | インターフェイス | 検証者 | 日付 |
|---|---|---|---|---|
| まだありません:最初の検証者になる |
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。