原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Eeg MCP

作者:AImplifier版本 0.2.0i★ –i在你的电脑上运行
注册名称io.github.AImplifier/eeg-mcp

安装

概览

作者提供的说明(英文原文)

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

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 注册中心没有列出需要填写的密钥。

你需要

  • PyPI已安装 Python 的 uv(用于 uvx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

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

在终端中运行这条命令

claude mcp add eeg -- uvx eeg-mcp

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

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

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

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

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 AImplifier 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 32531 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 32531 个服务器的 76% 更新
  • 基础检查结果等于或优于此分类中其他 32531 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Eeg MCP 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.2.0)于11天前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, Reelsaw

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

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

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

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

在云端运行★ 211昨天更新
安装

Reelsaw

作者:osbytes

Drive a self-hosted Reelsaw: turn long videos into vertical clips, edit, re-render and export them.

在你的电脑上运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

⚡🧠 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

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx