
BrainFlow Biosensing Boards
io.github.K-Dense-AIPublished by GitHub account K-Dense-AIv0.1.2Updated Oct 24, 2026
MCP server for EEG/EMG/ECG/PPG boards via BrainFlow (OpenBCI, Muse, Neurosity, Unicorn, BrainBit).
The publisher's own server: BrainDog
Overview
Local MCP server that lets an assistant stream, record and analyse EEG, EMG, ECG and PPG data from BrainFlow-supported biosensing boards.
- What you can do
- List supported boards and report connection, board and command-log details, including whether the session is simulated or read-only and which safety limits apply. Start and stop continuous acquisition, reconnect after a power cycle, and insert event markers into the stream. Record a set duration and return per-channel statistics, markers and downsampled traces, optionally saving full-rate data to a new CSV or BrainFlow file. Compute EEG band powers and peak frequency, and check each electrode for flat lines, railing, mains noise and high amplitude. Send raw board-specific firmware commands such as channel settings or presets.
- When to use it
- Useful for research or hobby biosignal work with OpenBCI, Muse, Neurosity, Unicorn, BrainBit and similar boards, where you want an assistant to check electrode contact, capture short recordings with event markers, or compare band powers. It can also be tried without hardware in simulation mode.
- Requirements
- Runs locally as a Python package (uvx labmcp-brainflow) over stdio; desktop only. Needs a supported board and its connection detail passed via LABMCP_ADDRESS or options (serial port, Bluetooth MAC, IP address or serial number), plus BrainFlow and, for BLE, a native adapter or BLED112 dongle. Optional LABMCP_LIMITS, LABMCP_READ_ONLY and LABMCP_SIMULATE. On Linux, serial access may need dialout group membership.
Installation
In SourceWeft
- Open BrainFlow Biosensing Boards in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
BrainFlow Biosensing Boards — MCP Server
Let an AI agent stream, record and analyse EEG, EMG, ECG, EOG, PPG and EDA from the biosensing boards supported by the open-source BrainFlow SDK: OpenBCI, Muse, Neurosity, g.tec Unicorn, BrainBit and many more. It covers recording with event markers, EEG band powers and per-electrode signal-quality checks.
Research use only. This is not a medical device. Do not use it to diagnose, monitor or treat anyone. Follow the board manufacturer's safety instructions (battery operation, electrical isolation, skin preparation). This server does not change any of them.
Try it without hardware
--simulate runs BrainFlow's own SYNTHETIC_BOARD, so the real BrainFlow code path runs: 16 EXG channels at 250 Hz with sine waves at 5, 10, 15 … 80 Hz plus accelerometer, gyro, PPG, EDA and temperature rows. On platforms where BrainFlow's native library can't load, or with --option simulator=fake, a pure-numpy stand-in is used instead. It simulates an 8-channel, 250 Hz EEG headset with 1/f background, posterior alpha at 10 Hz and one badly attached electrode (Fp2, heavy 50 Hz pickup), so the signal-quality check has something to find.
Connect your board
- Pick the board with
--option board=<alias>(or any BrainFlowBoardIdsname such asANT_NEURO_EE_411_BOARD, or a numeric id). Thelist_supported_boardstool prints this table too. - Give the connection detail with
--address. Depending on the board, BrainFlow expects a differentBrainFlowInputParamsfield, and the server fills in the right one:
For a board that isn't listed, the server infers the field from the address format: COM3 or /dev/… becomes a serial port, AA:BB:… a MAC address, a.b.c.d an IP address, and anything else a serial number. You can also set any field directly with --option serial_port=… / mac_address=… / ip_address=… / serial_number=… / other_info=… / timeout=….
- Test the connection:
Close other programs that hold the device (OpenBCI GUI, Muse app) first. On Linux, add yourself to the
dialoutgroup for serial ports.
Add to your MCP client
Claude Code
Claude Desktop / Cursor / Windsurf (claude_desktop_config.json, .cursor/mcp.json, …)
With --read-only, the agent can still record and analyse data (a temporary stream is started for each recording) but cannot leave the stream running, insert markers or send configure_board commands. stop_streaming stays available.
Tools
Safety limits
Override at launch: --limit max_record_duration_s=600. BrainFlow boards measure; the only tool that can switch on an output (for example an impedance-test current through the electrodes, or the bias drive on a channel) is configure_board, a raw firmware passthrough that is marked as a hazard so MCP clients ask before running it.
Example prompts
- "Check the signal quality on all 8 Cyton channels and tell me which electrodes need more gel."
- "Record 30 s eyes-closed and 30 s eyes-open, save both as CSV in ~/data/sub-01/, and compare occipital alpha power."
- "Start streaming. I'll run an oddball task: insert marker 1 for standards and 2 for targets when I tell you. Then save the session in BrainFlow format."
- "What's the peak alpha frequency on O1 and O2 over the last 10 seconds?"
- "Is there 50 or 60 Hz mains noise in this setup, and on which channels?"
- "List the boards you support and tell me how to connect my Muse S."
Notes
- How the band powers are computed.
average_relativecomes from BrainFlow'sDataFilter.get_avg_band_powers(apply_filter=True): detrend, 48–52 and 58–62 Hz band-stop, 2–45 Hz band-pass, Welch PSD, then bands of 1–4, 4–8, 8–13, 13–30 and 30–50 Hz averaged over channels and normalised to sum to 1. Per-channel values use detrend, a 50/60 Hz notch and a 1–45 Hz 4th-order zero-phase Butterworth (BrainFlowDataFilter), followed by a Welch PSD (Hann window, 50 % overlap, ≈0.5 Hz bins). Absolute band power is the integrated PSD in µV², and gamma is effectively 30–45 Hz. - Signal-quality verdicts (EEG-oriented thresholds):
flatmeans the raw SD is below 0.5 µV (disconnected);railedmeans at least 90 % of the ADS1299 input range is used (OpenBCI Cyton family only, using BrainFlow's formula with gain 24, set by--option exg_gain=);line_noisemeans 50 or 60 Hz power exceeds the whole 1–45 Hz power;high_amplitudemeans the band-passed RMS is above 100 µV. EMG/ECG recordings will naturally be "high amplitude". - Units. BrainFlow returns EXG in µV "wherever possible". The OYMotion gForce armbands return ADC counts. Accelerometer, PPG and similar channels use board-specific units. Timestamps are Unix seconds.
- Presets. Some boards stream several buffers with different sampling rates, for example Muse EEG (default), IMU (auxiliary) and PPG (ancillary). Pass
preset=toget_board_infoandrecord. - Markers go into the default preset's marker row and need an active stream (
start_streaming). You can insert them whilerecordis running. Value 0 is reserved. - Saved files.
save_pathmust be a new file (.csv;.csv,.tsvor.txtforsave_format="brainflow"):~is expanded, missing folders are created, an existing file is never overwritten, and the path is checked before recording starts.save_format="csv"writes labelled columns for every row.save_format="brainflow"writesDataFilter.write_fileoutput, which you can replay with--option board=playback --address file.csv --option master_board=<board>. configure_boardpasses a string straight to the board firmware through BrainFlow'sconfig_board, for example OpenBCI channel settings or Muse presets. Nothing is checked: some commands switch on outputs such as the lead-off (impedance-test) current. Settings persist until changed or the board is power-cycled; check the board's SDK documentation for valid commands.- Streams.
record,get_band_powersandget_signal_qualitystart a temporary stream when none is running and stop it afterwards, unlessstart_streamingwas called meanwhile (the stream then stays on) or another recording still uses it.stop_streamingends a runningrecordat once; it returns only the data acquired so far, withstopped_early: true. reconnect(and stopping the server) stops the stream and callsrelease_session, which frees the serial port or BLE connection.
Hardware verification
Source: servers/health/brainflow-biosensors/README.md at commit 46545ea
Tools
0Version history
2- v0.1.2LatestSep 27, 2026
- v0.1.0Sep 26, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Brain integrations

BrainDog
dog.brainOfficial publisher
BrainDog is a hosted record of projects, decisions and money that connected AI agents read before starting work and write their results into.

danao 智能组织大脑
Published by GitHub account z4215699
Remote MCP server for a governed autonomous-agent platform, giving assistants knowledge-base, memory, capability and agent-delegation tools under approval and…

WorldQuant BRAIN (unofficial)
Published by GitHub account tukorama
Unofficial WorldQuant BRAIN server that lets an assistant browse data fields and operators, backtest FASTEXPR alphas and review results.
Armiqo Brain — Free B2B Account Management Playbook
Published by GitHub account matt-warchol
Remote MCP server that gives an assistant a free B2B account management playbook for retention, renewals, growth and account planning.

Codebase Brain
Published by GitHub account Nomannazir
Indexes a local or public git codebase so an assistant can search it, trace git history, check change impact and find stale docs, all with path:line citations.