mcpField
B
BrainFlow Biosensing Boards

BrainFlow Biosensing Boards

ローカル
github.comヘルスケア235 週間前に更新

BrainFlow Biosensing Boards について

BrainFlow SDK を使い、対応する生体センシングボードから EEG、EMG、ECG、EOG、PPG、EDA を取得・分析する MCP サーバーです。イベントマーカー、EEG 周波数帯域の分析、電極ごとの信号チェックを備え、研究専用で医療用途ではありません。

主な機能

  1. 01複数の生体信号を取得・記録
  2. 02イベントマーカーの挿入と記録保存
  3. 03EEG 帯域パワーの算出
  4. 04電極ごとの信号品質チェック
  5. 05BrainFlow 対応ボードの一覧表示

活用シーン

  1. 01開眼・閉眼記録の後頭部アルファパワーを比較
  2. 02電極接触と電源周波数ノイズを確認
  3. 03実験刺激や条件変更にマーカーを付与

MCP 対応

BrainFlow ボードの接続、信号取得、記録、分析、ストリーム制御のツールを MCP クライアントに公開します。イベントマーカーの挿入やボード設定コマンドにも対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"k-dense-ai-labmcp-brainflow": {
"command": "uvx",
"args": [
"labmcp-brainflow"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
起動コマンドuvx labmcp-brainflow
設定が必要な環境変数
LABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025
LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)
LABMCP_READ_ONLYSet to 1 to disable all state-changing tools
LABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypilabmcp-brainflow0.1.2

ツール

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 ヘッドセットをシミュレートします。そのため、信号品質チェックで問題を検出できます。

ボードを接続する

  1. --option board=<alias>(または ANT_NEURO_EE_411_BOARD などの BrainFlow BoardIds 名、もしくは数値 ID)でボードを選択します。list_supported_boards ツールでもこの表を確認できます。
  2. --address で接続情報を指定します。ボードによって BrainFlow が要求する BrainFlowInputParams フィールドは異なります。サーバーは適切なフィールドを設定します。
ボード(--option board=)--address の指定内容必須?備考
cyton、cyton_daisyUSB ドングルのシリアルポートはいmacOS:/dev/tty.* ではなく /dev/cu.usbserial-* を使用してください
ganglion(ネイティブ BLE)Bluetooth MAC アドレスいいえ(自動検出)FW 2 のボード:--option other_info=fw:2
ganglion_dongleBLED112 ドングルのシリアルポートはい--option mac_address= は任意
cyton_wifi、cyton_daisy_wifi、ganglion_wifiWiFi Shield の IP アドレス(ダイレクトモードでは 192.168.4.1)いいえ(SSDP)--option ip_port=(デフォルトは 6789)
muse_2、muse_s、muse_s_athena、muse_2016Bluetooth MAC アドレスいいえ--option serial_number=Muse-XXXX。PPG:--option other_info=p50(Muse 2)/p61(Muse S)
muse_2_bled、muse_s_bledBLED112 ドングルのシリアルポートはい
crown、notion_1、notion_2デバイスのシリアル番号いいえ同じネットワーク上にあり、ブロードキャストが許可されている必要があります
unicorn、brainbitデバイスのシリアル番号いいえUnicorn:付属のドングルとペアリングしてください
enophone、explore_4、explore_8Bluetooth MAC アドレスLinux のみ
emotibitネットワークのブロードキャストアドレスいいえ
freeeeg32、freeeeg128、neuropawn_knight、shimmer3、ironbci_32シリアルポートはい
playbackBrainFlow 形式で保存されたファイルのパスはい--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=… を使って、各フィールドを直接設定することもできます。

  1. 接続をテストします。
    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 --check
    
    まず、デバイスを使用中のほかのプログラム(OpenBCI GUI、Muse アプリなど)を終了してください。Linux では、シリアルポートを使用するために dialout グループに自分を追加してください。

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_s60 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 接続を解放します。

ハードウェアの検証

モデルファームウェアインターフェイス検証者日付
まだありません:最初の検証者になる

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。