Real-time EEG: BrainFlow streaming, wall-clock replay, online DSP, recording, and stimulation.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Documentation Β· Tutorial Β· Hardware Β· Safety Β· Tool Reference
A Model Context Protocol server that gives an AI agent one interface over the live EEG workflow: acquisition from ~66 BrainFlow boards, wall-clock replay of existing recordings, stateful online DSP, a live browser monitor, crash-safe recording, and gated stimulation output.
The offline counterpart is neuro-mcp (MNE processing, source imaging, BIDS/EHR storage). This is the real-time half β everything that has to happen while the signal is still arriving.
Nobody calls a tool by hand β you talk to an agent in plain English and it drives the 47 tools underneath. The tutorial shows what that looks like end to end, with no hardware required.
|
π‘ Stream 66 BrainFlow board identifiers β OpenBCI, Muse, ANT Neuro, g.tec, Mentalab and more β plus a synthetic board that needs no hardware. Samples land in a ring buffer filled by a background thread, so tool calls read a live view instead of blocking on a device. |
βͺ Replay Play an EDF/BDF/GDF/SET/FIF or BrainFlow CSV at the rate it was recorded, re-emitting annotations as events at their original timings. Adds speed, seek, pause and looping. A pipeline developed against a file runs unchanged against hardware. |
|
π Visualize A loopback-bound, token-gated live browser view: rolling traces, event markers, band power, per-electrode quality, and transport controls. Plus self-contained HTML reports β no CDN, no external assets, opens on an air-gapped machine. |
πΎ Record Write continuously to MNE-native |
|
π§© Extend Plug in your own real-time processor β feature extractor, classifier, artifact gate, or EEG tokenizer for sequence models β and it runs on the same footing as the built-ins, inside the acquisition loop. β Extending |
β‘ Stimulate One |
[!NOTE] One event log. Board markers, replayed annotations, dispatched stimulations and manual notes all land in the same table on the same clock, with absolute sample indices. A closed-loop run reconstructs afterwards with no clock join.
Register with an MCP client using an absolute path to the env's interpreter:
Or with the Claude Code CLI:
β Full guide: Installation
Ask your agent for the outcome; it picks the calls. No hardware required:
Replay a real recording as if it were live, then keep the record:
| Guide | |
|---|---|
| π Installation | Environment, client registration, troubleshooting |
| π Tutorial | End to end, no hardware needed |
| βͺ Replay-Driven Development | Build against a recording, deploy live |
| π Closed-Loop Neurofeedback | Feature β trigger, with a measured latency budget |
| π©Ί Live Clinical Review | Visual review, annotation, reporting |
| β‘ Stimulation Protocols | TMS and tES through the safety gates |
| π§© Extending | Write a custom processor or EEG tokenizer |
| π Supported Hardware | All 66 boards, formats, stimulation transports |
| β οΈ Safety | Read before connecting a stimulator |
| π Tool Reference | All 47 tools |
[!IMPORTANT] Filtering happens in the producer thread, not at query time.
A stateful IIR filter must see every sample exactly once, in order. The common shortcut β filtering each query window independently β restarts the filter at every window boundary and injects a transient each time. It is invisible in a band-power plot and fatal for anything phase-sensitive.
So the producer filters each chunk once as it arrives, carrying sosfilt
delay-line state forward, and writes to a second ring buffer. Queries just read.
The test suite asserts chunked filtering matches whole-signal filtering to 1e-9, and asserts as a control that the naive approach does not.
| Consequence | |
|---|---|
| Filters are causal | No zero-phase option β that needs future samples. stream_status reports group_delay_sec |
| Both buffers are kept | read_window(filtered=false) always gets raw signal, to check whether a feature is real or an artifact |
| Indices are shared | An event's sample_index means the same thing in either buffer |
[!TIP] Budget a closed loop as group delay + poll interval + dispatch latency β measured at ~71 ms in the reference configuration. Good for neurofeedback; not adequate for phase-locked stimulation.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/eeg-mcp)<a href="https://allmcps.com/mcp/eeg-mcp"><img src="https://allmcps.com/api/badge/eeg-mcp?style=directory" alt="Eeg MCP on AllMCPs" /></a>