A side-by-side look at the Eeg MCP and Context7 MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Eeg MCP for developer tools work as a local process; choose Context7 for developer tools as a local process. You can also run both side by side in one mcpServers block.
list_boards, start_stream, stop_stream.resolve-library-id, query-docs.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Developer Tools | Developer Tools |
| Quality signal | 56/100 · Good | 65/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | API key required |
| Pricing | Not declared | Free |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 2 | 63,150 |
| Directory activity | 2 views 0 installs 0 upvotes | 9 views 0 installs 0 upvotes |
| Tools | 47 | 2 |
| Full listing | View Eeg MCP | View Context7 |
list_boardsList every board BrainFlow can acquire from, with ids and sampling rates.
Start here when you do not know what hardware is available. Two entries need
no hardware at all: ``SYNTHETIC_BOARD`` generates a signal for development,
and ``PLAYBACK_FILE_BOARD`` replays a BrainFlow CSV.start_streamOpen a board and begin buffering EEG in the background.
Data flows into a ring buffer from a background thread as soon as this
returns, so a subsequent read_window will have samples waiting. The session
keeps running until stop_stream is called.stop_streamStop a stream and release the board, serial ports, and LSL outlets.
Always call this when finished. A board left prepared can block the next
process from acquiring the device.list_sessionsList all active stream and replay sessions with a one-line summary each.stream_statusHealth and timing report for a session.
The fields that matter for closed-loop work:
``throughput_ratio`` below 1.0 means the producer is not keeping up and
samples are being dropped; ``filters.group_delay_sec`` is how far behind
real time a filtered feature is; ``last_error`` explains a stopped producer.read_windowRead the most recent samples from the buffer.
Returns filtered signal when a filter chain is set (see set_filters),
otherwise raw. Long windows are decimated to ``max_samples`` per channel so
the response stays readable -- for numeric work prefer get_band_power or
get_psd, which compute on the full-resolution data.get_channelsList the channels a session is producing, with their buffer index.inspect_recordingOpen a recording and describe it without starting playback.
Use this before start_replay to see how long the file is, what channels it
has, and which annotations will be re-emitted as events during replay.start_replayReplay a recording against a wall clock, re-emitting its events.
This is the safe way to build a real-time pipeline: the session behaves
exactly like a live stream -- same buffering, same chunked delivery, same
tools -- so code developed here runs unchanged against hardware. The
recording's annotations arrive in the event log at their original timings.replay_controlPause, resume, seek, or change the speed of a replay session.list_recording_eventsList all events present in a replay session's source file.
Distinct from get_events: this is the *complete* event list from the file,
including events that have not been reached yet. get_events returns only
what has actually been emitted so far.set_filtersInstall a stateful online filter chain on a running stream.
The chain filters continuously in the background as samples arrive, carrying
filter state across chunk boundaries. This matters: filtering each query
window independently would inject a transient at every boundary and corrupt
any phase-sensitive measure. Filtered output goes to a second buffer, so raw
signal remains available via read_window(filtered=False).
These are causal filters -- there is no zero-phase option, because that needs
future samples. Check ``group_delay_sec`` in the response to know how far
behind real time your filtered features are.resolve-library-idResolves a general library name into a Context7-compatible library ID.query-docsRetrieves documentation for a library using a Context7-compatible library ID.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"eeg-mcp": {
"command": "uvx",
"args": [
"eeg-mcp"
]
}
}
}
{
"mcpServers": {
"upstash-context7": {
"command": "npx",
"args": [
"-y",
"ctx7"
]
}
}
}