Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

MNE-MCP

PYPI · MNE-MCP · SCANNED SEP 21

MNE-Python neurophysiology analysis (EEG, MEG, sEEG, ECoG, fNIRS) via the Model Context Protocol

Available components

0 this week 64 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 6 of 65 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability75
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 2773 tokens (~72/item across 38 items; 38 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
  • Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 0% of tool parameters carry a description.Fail
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "mne_run_code" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 38 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the MNE-MCP server?

MNE-MCP runs locally as a PyPI package, launched with uvx mne-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · mne-mcp

# add to Claude Code
claude mcp add exekiel179-mne-mcp -- uvx mne-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "exekiel179-mne-mcp": {
      "command": "uvx",
      "args": [
        "mne-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "exekiel179-mne-mcp": {
      "command": "uvx",
      "args": [
        "mne-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add exekiel179-mne-mcp -- uvx mne-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "exekiel179-mne-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "mne-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add exekiel179-mne-mcp --command uvx --arg mne-mcp
# ~/.hermes/config.yaml
mcp_servers:
  exekiel179-mne-mcp:
    command: "uvx"
    args: ["mne-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "exekiel179-mne-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "mne-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add exekiel179-mne-mcp -t stdio -c uvx -a mne-mcp
// mcp.json
{
  "mcpServers": {
    "exekiel179-mne-mcp": {
      "command": "uvx",
      "args": [
        "mne-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 21 Sept 26 −14
    • Malware scan: pass → unverified security
  • 19 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 18 Sept 26 +16
    • Malware scan: unverified → pass security
    • Stability: 0.97 → pass security
  • 17 Sept 26 −15
    • Malware scan: pass → unverified security
  • 16 Sept 26 +16
    • Malware scan: unverified → pass security
  • 14 Sept 26 −14
    • Malware scan: pass → unverified security
  • 12 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 11 Sept 26 +1
    • Stability: 0.97 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Analysed pypi/mne-mcp@0.2.2

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 65 packages
Packages resolved 65
Stale 4
No linked repository 2
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 38 exposed · ~2,773 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
mne_apply_ica ~72

Remove ICA components from an instrument in place. exclude = comma-separated component indices to drop (e.g. '0,3'); if omitted, uses the ICA object's current exclude list.

NameTypeReqDescription
excludestring
ica_namestring
inst_namestring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_apply_inverse ~129

Estimate cortical sources from an Evoked using a forward model and noise covariance. method: 'dSPM' (default), 'MNE', 'sLORETA', 'eLORETA'. Stores the source estimate (stc) and reports the peak activation time. Pair with mne_make_forward + mne_compute_noise_cov.

NameTypeReqDescription
cov_namestring
evoked_namestring
fwd_namestring
methodstring
snrnumber
stc_namestring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_average_evoked ~72

Average Epochs into an Evoked (ERP/ERF) response. condition = an event_id name to average just that condition (else averages all). Stored under evoked_name.

NameTypeReqDescription
conditionstring
epochs_namestring
evoked_namestring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_check_status ~47

Check MNE MCP capabilities: MNE-Python version, scikit-learn (needed for ICA), numpy/scipy/matplotlib versions, and runtime directories. Call this first.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes

No examples provided.

mne_compute_noise_cov ~66

Compute a noise covariance matrix from the Epochs baseline (data up to tmax seconds, default 0). Needed before building an inverse operator for source localization.

NameTypeReqDescription
cov_namestring
namestring
tmaxnumber
NameTypeReqDescription
resultstringyes

No examples provided.

mne_connectivity ~104

Spectral connectivity between channels over Epochs in a frequency band. method: 'coh', 'plv', 'wpli', 'pli', 'imcoh', etc. Returns a channel×channel connectivity heatmap + strongest pairs. Requires mne-connectivity.

NameTypeReqDescription
con_namestring
epochs_namestring
fmaxnumber
fminnumber
methodstring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_crop ~58

Crop a Raw/Epochs/Evoked object to the time window [tmin, tmax] seconds, in place.

NameTypeReqDescription
namestring
tmaxnumber
tminnumber
NameTypeReqDescription
resultstringyes

No examples provided.

mne_decode ~117

Time-resolved decoding (MVPA): train a classifier at each time point to discriminate two conditions, with cross-validation. cond_a/cond_b are event_id names (e.g. 'target','standard'). Returns mean/peak score over time + a scores-vs-time plot. Requires scikit-learn.

NameTypeReqDescription
cond_astring
cond_bstring
cvinteger
epochs_namestring
namestring
scoringstring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_describe ~39

Show a detailed summary of one named session object (channels, sfreq, montage, bads, etc.).

NameTypeReqDescription
namestringyes
NameTypeReqDescription
resultstringyes

No examples provided.

mne_events_from_annotations ~52

Convert a Raw object's annotations into an events array + event_id map (for EDF/BrainVision/EEGLAB data).

NameTypeReqDescription
events_namestring
raw_namestring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_filter ~116

Band-pass / high-pass / low-pass and/or notch filter a Raw/Epochs/Evoked object in place. l_freq=high-pass edge, h_freq=low-pass edge (either may be null), notch=line-noise frequency (e.g. 50 or 60). picks optional ('eeg', 'meg', or null).

NameTypeReqDescription
h_freqnumber
l_freqnumber
namestring
notchnumber
picksstring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_find_events ~54

Find stimulus/trigger events on a stim channel of a Raw object. Stores them under events_name.

NameTypeReqDescription
events_namestring
raw_namestring
stim_channelstring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_fit_ica ~125

Fit Independent Component Analysis on a (preferably 1 Hz high-pass filtered) Raw/Epochs object for artifact removal. n_components can be an int, a float (variance fraction), or null. method: 'fastica' (default), 'infomax', 'picard'. Stored under ica_name (default 'ica'). Requires scikit-learn.

NameTypeReqDescription
ica_namestring
methodstring
n_componentsnumber
namestring
random_stateinteger
NameTypeReqDescription
resultstringyes

No examples provided.

mne_get_config ~69

Show the configured default analysis parameters (line frequency, default montage, filter band, rejection threshold, ICA method/components, epoch window, dirs, timeout) that the structured tools fall back to when a parameter is omitted. Users change these by running `mne-mcp configure` in a terminal.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes

No examples provided.

mne_get_info ~31

Show the full channel list and measurement info for a named session object.

NameTypeReqDescription
namestringyes
NameTypeReqDescription
resultstringyes

No examples provided.

mne_interpolate_bads ~44

Interpolate currently-marked bad channels using spherical splines (requires a montage).

NameTypeReqDescription
namestring
reset_badsboolean
NameTypeReqDescription
resultstringyes

No examples provided.

mne_list_files ~90

List neurophysiology data files (.fif, .edf, .bdf, .vhdr, .set, .cnt, .egi/.mff, .ds, .snirf, …) under a directory. Defaults to MNE_MCP_DATA_DIR / current dir. Optionally pass a glob pattern.

NameTypeReqDescription
directorystring
patternstring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_load_raw ~89

Load a raw recording from disk into the session. Auto-detects the format by extension (FIF/EDF/BDF/BrainVision/EEGLAB/CNT/EGI/…). Stores it under `name` (default `raw`). Set preload=False for very large files.

NameTypeReqDescription
namestring
pathstringyes
preloadboolean
NameTypeReqDescription
resultstringyes

No examples provided.

mne_make_epochs ~151

Segment a Raw object into Epochs around events. tmin/tmax in seconds relative to the event; baseline 'default' = (None, 0); event_id like 'target:1,standard:2' to name/select conditions; reject_eeg = peak-to-peak EEG rejection threshold in volts (e.g. 100e-6). Stored under epochs_name.

NameTypeReqDescription
baselinestring
epochs_namestring
event_idstring
events_namestring
raw_namestring
reject_eegnumber
tmaxnumber
tminnumber
NameTypeReqDescription
resultstringyes

No examples provided.

mne_make_forward ~70

Build a template-head (fsaverage) EEG forward model for the named object's montage. Downloads the fsaverage template once (~ tens of MB). Use for EEG source localization without an individual MRI. Stored under fwd_name.

NameTypeReqDescription
fwd_namestring
namestring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_mark_bad_channels ~66

Mark channels as bad (comma-separated names, e.g. 'Fp1,T7'). By default appends to existing bads; set replace=true to overwrite.

NameTypeReqDescription
badsstring
namestring
replaceboolean
NameTypeReqDescription
resultstringyes

No examples provided.

mne_plot_epochs_image ~47

Plot an ERP image (epochs × time heatmap) for an Epochs object. Returns PNG path(s).

NameTypeReqDescription
namestring
picksstring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_plot_evoked ~61

Plot an Evoked response. style: 'joint' (butterfly + topomaps, default), 'topo', or 'butterfly'. Returns PNG path.

NameTypeReqDescription
namestring
stylestring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_plot_ica_components ~43

Plot ICA component scalp topographies (to identify eye/heart/muscle artifacts). Returns PNG path(s).

NameTypeReqDescription
ica_namestring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_plot_ica_sources ~47

Plot ICA component time courses for an instrument (raw/epochs). Returns a PNG path.

NameTypeReqDescription
ica_namestring
inst_namestring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_plot_psd ~62

Plot the power spectral density of a Raw/Epochs/Evoked object. Returns a PNG path.

NameTypeReqDescription
fmaxnumber
fminnumber
namestring
picksstring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_plot_raw ~56

Plot raw signal traces (a window of channels over time). Returns a PNG path.

NameTypeReqDescription
durationnumber
n_channelsinteger
namestring
startnumber
NameTypeReqDescription
resultstringyes

No examples provided.

mne_plot_sensors ~59

Plot the sensor/electrode layout (kind='topomap' 2D or '3d'). Returns a PNG path.

NameTypeReqDescription
kindstring
namestring
show_namesboolean
NameTypeReqDescription
resultstringyes

No examples provided.

mne_plot_source_estimate ~103

Render a source estimate (stc) as a cortical activation map (PNG) at its peak time or a given time. hemi: 'both' / 'lh' / 'rh'. Requires PyVista with off-screen rendering; if 3D rendering is unavailable the estimate is still computed and can be inspected via mne_run_code.

NameTypeReqDescription
hemistring
stc_namestring
timenumber
NameTypeReqDescription
resultstringyes

No examples provided.

mne_plot_topomap ~70

Plot scalp topographies of an Evoked at given times. times='auto', 'peaks', or comma-separated seconds (e.g. '0.1,0.2,0.3'). Returns PNG path.

NameTypeReqDescription
namestring
timesstring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_resample ~44

Resample a Raw/Epochs object to a new sampling frequency (Hz), in place.

NameTypeReqDescription
namestring
sfreqnumber
NameTypeReqDescription
resultstringyes

No examples provided.

mne_reset_session ~27

Clear all loaded objects and figures from the session, starting fresh. Irreversible.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes

No examples provided.

mne_run_code ~110

Execute arbitrary Python/MNE code in the persistent session namespace. Pre-bound names: `mne`, `np`, `pd`, `plt`, plus every object you have loaded (e.g. `raw`, `epochs`, `evoked`, `ica`). Like a notebook cell: the value of a final expression is returned, stdout is captured, and any matplotlib figures are saved as PNG (paths returned). Use this for anything the structured tools do not cover.

NameTypeReqDescription
codestringyes
NameTypeReqDescription
resultstringyes

No examples provided.

mne_save ~78

Save a session object to disk. MNE naming rules: Raw → '*_raw.fif', Epochs → '*-epo.fif', Evoked → '*-ave.fif'. Other formats follow the object's .save() support.

NameTypeReqDescription
namestringyes
overwriteboolean
pathstringyes
NameTypeReqDescription
resultstringyes

No examples provided.

mne_session_info ~53

List every object currently held in the persistent analysis session (raw recordings, epochs, evoked, ICA, events, arrays) with a one-line summary. Use this to see what is loaded before operating on it.

Input schema present but exposes no named parameters.

NameTypeReqDescription
resultstringyes

No examples provided.

mne_set_montage ~94

Apply a standard electrode montage (e.g. 'standard_1020', 'standard_1005', 'biosemi64', 'GSN-HydroCel-128') to set channel positions. Needed before topographic plots and interpolation. If montage is omitted, uses the configured default (set via `mne-mcp configure`).

NameTypeReqDescription
montagestring
namestring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_set_reference ~60

Set the EEG reference. Use 'average' for average reference, 'REST', or a comma-separated list of channel names (e.g. 'TP9,TP10').

NameTypeReqDescription
namestring
ref_channelsstring
NameTypeReqDescription
resultstringyes

No examples provided.

mne_tfr_morlet ~98

Compute Morlet-wavelet time-frequency power on Epochs and plot it. fmin/fmax = frequency range (Hz), n_freqs = number of frequencies. Stored under tfr_name. Returns PNG path.

NameTypeReqDescription
epochs_namestring
fmaxnumber
fminnumber
n_freqsinteger
tfr_namestring
NameTypeReqDescription
resultstringyes

No examples provided.

Common questions

What is the MNE-MCP server?

MNE-MCP is listed in the public MCP registry as io.github.Exekiel179/mne-mcp. MNE-Python neurophysiology analysis (EEG, MEG, sEEG, ECoG, fNIRS) via the Model Context Protocol. This page covers its PyPI package (mne-mcp).

Is the MNE-MCP server safe to use?

MNE-MCP scores 64 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the MNE-MCP server expose?

MNE-MCP exposes 38 tools: mne_check_status, mne_get_config, mne_session_info, mne_describe, mne_get_info, and 33 more. Their descriptions and schemas cost roughly 2,773 tokens of context every time the server is loaded.

Is the MNE-MCP server still maintained?

MNE-MCP is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the MNE-MCP server under?

MNE-MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.