Ephys MCP Server

An MCP server that lets an LLM analyse intracortical (spike-level) brain-computer-interface recordings: signal quality, spike detection, firing rates, and cursor-velocity decoding.

Local serverstdio

What is the Ephys MCP Server?

ephys-mcp is an MCP project maintained in the happyc0der/ephys-mcp repository. The maintainer describes its purpose as “An MCP server that lets an LLM analyse intracortical (spike-level) brain-computer-interface recordings: signal quality, spike detection, firing rates, and cursor-velocity decoding”. Read the project documentation for the complete scope.

Installation

The documented pypi package is ephys-mcp. The configuration below comes from the maintainer’s example; adapt its paths and account values to your environment.

Source

Project documentation · Repository · Discovery listing. This profile records the public documentation checked on 2026-10-08.

Recorded tools

Check the linked publisher documentation and your connected client's tool list. Names and availability can vary with the server version and account permissions.

ToolWhat it does
list_sourcesSource types and their parameters
search_datasetsSearch DANDI, or list curated intracortical datasets
list_dataset_filesLicence, citation and NWB files of a DANDI dataset
list_lsl_streamsLSL streams visible on the network
get_stream_statusFor a live session: buffered span, whether data is arriving, drops
get_session_infoChannels, rates, behaviour signals, licence, citation
get_signal_qualityNoise, SNR, dead/noisy channels
detect_spikesThreshold crossings; precision/recall when truth exists
sort_spikesSpike-sort a broadband window with spikeinterface (sort extra), using probe geometry when known; the session then uses the sorted units
set_probe_geometrySupply contact positions for a session whose file has none: Utah, grid, linear, tetrode layouts or explicit coordinates
get_probeContact positions and brain-area labels per channel
plot_probeFigure: array map, contacts coloured by firing rate, sorted units per contact
get_firing_ratesPopulation rate summary
fit_decoderRidge or Kalman, scored on held-out data; hyperparameters chosen inside the training split
decode_windowDecoded-vs-true preview for a window
evaluate_cross_sessionFit on one session, score unchanged on others: does a decoder survive to a later day? Honours FALCON's eval_mask
get_psthFiring aligned to a trial event, optionally grouped by a trial column or limited to some units
fit_latent_factorsGPFA (Yu et al. 2009) or PCA on trial-aligned activity: single-trial latent trajectories, variance per factor, timescales, and how well the top factors explain
plot_latent_factorsFigure: top three factors over time, the factor-1/factor-2 state space, and variance per factor
plot_psthFigure: PSTH per group with SEM, above a unit-by-time heatmap of change from baseline
plot_rasterFigure: spike raster, unrecorded spans shaded
plot_decodingFigure: decoded against actual behaviour, one panel per dimension
ExtraAdds
lslthe lsl live source
sortsort_spikes via spikeinterface's built-in sorters (spykingcircus2, tridesclous2); about 330 MB of dependencies

How to install the Ephys MCP Server

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

From the project documentation. Replace placeholders and example paths before connecting.