mcpField
E
eeg-mcp

eeg-mcp

ローカル
aimplifier.github.io科学・教育32 日前に更新

eeg-mcp について

eeg-mcpは、リアルタイムEEGを扱う研究者や臨床従事者向けのMCPサーバーです。データ取得、録画の再生、オンライン信号処理、モニタリング、安全ゲート付き刺激を一つのインターフェースにまとめ、ハードウェア不要の試行用に合成ボードも備えています。

主な機能

  1. 01BrainFlowボードまたは合成ボードからのストリーミング
  2. 02録画を元のタイミングで再生
  3. 03状態を保持するオンラインDSPとカスタムプロセッサー
  4. 04ブラウザーでの信号ライブモニタリング
  5. 05クラッシュ後に復旧できるFIF記録
  6. 06安全ゲートを介した刺激の送信

活用シーン

  1. 01ハードウェアなしでEEGワークフローを試験
  2. 02録画をライブストリームとして確認
  3. 03データ取得中の信号品質の監視
  4. 04閉ループ型ニューロフィードバックの構築

MCP 対応

MCP経由で、EEGストリーミング、再生、処理、監視、記録、イベント、刺激に関する47個のツールを提供します。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 エージェント向けリアルタイム EEG — ストリーミング、再生、可視化、記録、刺激

PyPI Python Docs License

ドキュメント · チュートリアル · ハードウェア · 安全性 · ツールリファレンス

AI エージェントに、ライブ EEG ワークフロー全体を操作する単一のインターフェースを提供する Model Context Protocol サーバーです。約 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

ツールを手動で呼び出す必要はありません。平易な英語でエージェントに話しかけると、エージェントが内部の 47 個のツールを操作します。 **チュートリアル**では、ハードウェアを必要とせず、最初から最後までの流れを確認できます。

できること

📡 ストリーミング

66 種類の BrainFlow ボード識別子に対応しています。OpenBCI、Muse、ANT Neuro、g.tec、Mentalab などに加え、ハードウェア不要の合成ボードも利用できます。サンプルはバックグラウンドスレッドがリングバッファーに書き込むため、ツール呼び出しではデバイスの応答を待たずに、ライブデータを読み取れます。BrainFlow 自体がボードに接続できない場合(例:Muse は 上流の SimpleBLE のバグにより Windows で接続できません)、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 に対応し、3 つの安全ゲートで保護されています。

メモ

イベントログは 1 つです。 ボードのマーカー、再生された注釈、送信された刺激、手動のメモはすべて、同じクロックを使用する同じテーブルに、絶対サンプルインデックスとともに記録されます。クローズドループ実行は、クロックを結合せずに後から再構築できます。

インストール

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

→ 詳細なガイド:インストール

クイックスタート

エージェントに実現したい結果を伝えると、必要な呼び出しを選択します。ハードウェアは不要です。

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の遅延線状態を引き継いで、2つ目のリングバッファに書き込みます。クエリは読み取りのみを行います。

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は、発作を含む危害を引き起こす可能性があります。倫理審査委員会が承認したプロトコルに従い、デバイスレベルのインターロックが正常に機能している装置を使用し、訓練を受けたオペレーターの立ち会いのもとでのみ使用してください。

すべてのハードウェアバックエンドには、次の3つのゲートが適用されます。

#ゲート効果
1設定サーバーの起動時にEEG_MCP_ALLOW_HARDWARE_STIM=1が指定されていない場合、ハードウェアバックエンドは起動を拒否します。エージェントはこれを設定できません。
2アーミングarm_stimは、期限切れになるウィンドウの間だけディスパッチを許可するため、停止したエージェントが再開して後から発火することはありません
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

コメント

MCP は初めてですか?

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

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