Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Eeg MCP

by AImplifierversion 0.2.0i★ –iRuns on your computer
Registry nameio.github.AImplifier/eeg-mcp

Install

Overview

Description from the maker (original English)

Real-time EEG: BrainFlow streaming, wall-clock replay, online DSP, recording, and stimulation.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Other

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • The registry lists no key to fill in.

You need

  • PyPIPython’s uv installed (for the uvx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "eeg": {
      "command": "uvx",
      "args": [
        "eeg-mcp"
      ]
    }
  }
}

Run this in your terminal

claude mcp add eeg -- uvx eeg-mcp

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "eeg": {
      "command": "uvx",
      "args": [
        "eeg-mcp"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "eeg": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "eeg-mcp"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account AImplifier, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Otheri

  • More stars than 0% of the other 32537 servers in this category
  • Published to the registry more recently than 76% of the other 32537 servers in this category
  • Basic checks equal to or better than 100% of the other 32537 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Eeg MCP safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.2.0) reached the registry 11 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, TF Rooms

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

by formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Runs on your computer★ 440MITUpdated 14 months ago
Install

Remote Desktop Commander

by desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Runs in the cloud★ 211Updated yesterday
Install

TF Rooms

by tfrooms.com

Live room availability, rates and stay quotes for 12 New Leaf motels in Twin Falls, Idaho.

Runs in the cloudUpdated today
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

⚡🧠 eeg-mcp

Real-time EEG for AI agents — stream, replay, visualize, record, stimulate

[Documentation](https://aimplifier.github.io/eeg-mcp/) · [Tutorial](https://aimplifier.github.io/eeg-mcp/examples/tutorial-first-realtime-session/) · [Hardware](https://aimplifier.github.io/eeg-mcp/hardware/) · [Safety](https://aimplifier.github.io/eeg-mcp/safety/) · [Tool Reference](https://aimplifier.github.io/eeg-mcp/tools/)

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](https://github.com/AImplifier/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.

Concept

flowchart LR

Researcher(["🔬 BCI Researcher"]) Clinician(["🩺 Clinician"]) Agent[["🤖 AI Agent"]] Server(("eeg-mcp FastMCP · 47 tools"))

Clinician -- talks to --> Agent Researcher -- talks to --> Agent Agent -- MCP --> Server

Server --> Acquire["Acquire 66 boards · replay at true rate"] Server --> Process["Process stateful online DSP custom plugins"] Server --> Watch["Watch & Record live monitor · HTML crash-safe .fif"] Server --> Stim["Stimulate LSL · TTL · TMS/tES 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

Nobody calls a tool by hand — you talk to an agent in plain English and it drives the 47 tools underneath. The [tutorial](https://aimplifier.github.io/eeg-mcp/examples/tutorial-first-realtime-session/) shows what that looks like end to end, with no hardware required.

What it does

📡 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. When BrainFlow itself can't reach a board — e.g. Muse on Windows, blocked by an upstream SimpleBLE bug — board="lsl" attaches to an existing LSL outlet instead.

⏪ 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 .fif with the event log attached as annotations, plus a metadata row in a store schema-compatible with neuro-mcp. Crash-safe: an interrupted session is recoverable.

🧩 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 send_stim_event contract over pluggable backends: LSL for software, BrainFlow's marker channel for sample-aligned embedding, serial/TTL and templated ASCII for hardware including TMS and tES — behind three safety gates.

[!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.

Install

conda create -n eeg-mcp python=3.11 -y && conda activate eeg-mcp

pip install eeg-mcp

Optional extras and MCP client registration

pip install "eeg-mcp[lsl]"      # LSL marker outlets (PsychoPy, OpenViBE, ...)

pip install "eeg-mcp[serial]" # serial/TTL trigger delivery to hardware

Register with an MCP client using an absolute path to the env's interpreter:

{

"mcpServers": { "eeg-realtime": { "command": "/path/to/envs/eeg-mcp/bin/python", "args": ["-m", "eeg_mcp"] } } }

Or with the Claude Code CLI:

claude mcp add eeg-realtime -- /path/to/envs/eeg-mcp/bin/python -m eeg_mcp

→ Full guide: [Installation](https://aimplifier.github.io/eeg-mcp/installation/)

Quick start

Ask your agent for the outcome; it picks the calls. No hardware required:

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

Replay a real recording as if it were live, then keep the record:

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 or start_replay"] --> B[check_signal_quality] B --> C[set_filters] C --> D["get_band_power 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

Documentation

Guide
🚀 [Installation](https://aimplifier.github.io/eeg-mcp/installation/)Environment, client registration, troubleshooting
📘 [Tutorial](https://aimplifier.github.io/eeg-mcp/examples/tutorial-first-realtime-session/)End to end, no hardware needed
⏪ Replay-Driven DevelopmentBuild against a recording, deploy live
🔁 Closed-Loop NeurofeedbackFeature → trigger, with a measured latency budget
🩺 Live Clinical ReviewVisual review, annotation, reporting
⚡ Stimulation ProtocolsTMS and tES through the safety gates
🧩 ExtendingWrite a custom processor or EEG tokenizer
🔌 Supported HardwareAll 66 boards, formats, stimulation transports
⚠️ SafetyRead before connecting a stimulator
🛠 Tool ReferenceAll 47 tools

The one design decision worth knowing

[!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.

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 & 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

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 causalNo zero-phase option — that needs future samples. stream_status reports group_delay_sec
Both buffers are keptread_window(filtered=false) always gets raw signal, to check whether a feature is real or an artifact
Indices are sharedAn 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.

Stimulation safety

[!CAUTION]

**This software is not a medical device and has not been validated for

clinical use. TMS and tES can cause harm, including seizure**. Use only

under a protocol approved by your ethics board, on a rig whose device-level

interlocks are intact, with a trained operator present.

Three gates apply to every hardware backend:

#GateEffect
1ConfigHardware backends refuse to open unless the server was started with EEG_MCP_ALLOW_HARDWARE_STIM=1. An agent cannot set this.
2Armingarm_stim permits dispatch for a window that *expires*, so a stalled agent cannot resume and fire later
3LimitsIntensity, duration and interval are clamped; violations raise rather than silently saturate

None of this replaces the interlocks on the device itself.

[!WARNING]

**The hardware backends are generic transports driven by command templates you

supply from your device's manual — not vendor drivers, and none has been tested

against a physical stimulator.** A plausible-looking untested driver would be

worse than none: it would fail silently while connected to something pointed at

a person's head.

Start every protocol on backend="log", which accepts everything and emits nothing.

Verify

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

All five drive the real server through FastMCP's in-memory client and assert against planted ground truth:

  • a spike planted at an annotation onset lands at t = 0 ± 0 ms in the extracted epoch — prov

Only the beginning is shown; read the rest in the repo

Ask PopNx