EPICS Channel Access MCP Server

Let an AI agent read, monitor and, when you allow it, carefully write EPICS process variables (PVs) over Channel Access. EPICS is the control system behind most particle accelerators, synchrotron and neutron beamlines, large telescopes, fusion experiments and many physics labs. The server uses caproto, a pure-Python CA implementation, so there is nothing to compile and no libca to install. Its 10 documented tools cluster into read & search, update, apply, monitor.

People who work with pvs and want it reachable from Claude, Cursor, VS Code, or another MCP client. The project is written in Python.

One of 32 MCP servers published from k-dense-ai/lab-instrument-mcps. Stars and repository activity are shared across all of them. See all 32 →

VERIFIED ACTIVE

LAST COMMIT 2026-09-26 · VERIFIED 2026-09-30

Apache-2.0 · Python servers · how we verify → /methodology

01 · Install EPICS Channel Access

Claude Code

claude mcp add k-dense-ai-lab-instrument-mcps-servers-p -- uvx labmcp-epics

Claude Desktop / Cursor / VS Code - add to config

{
  "mcpServers": {
    "k-dense-ai-lab-instrument-mcps-servers-p": {
      "command": "uvx",
      "args": [
        "labmcp-epics"
      ]
    }
  }
}

Same JSON for Cursor. For VS Code, rename the top-level key from `mcpServers` to `servers`.

Using another client? Same JSON, different key

Claude Desktop · mcpServers

Cursor · mcpServers

VS Code · servers

Windsurf · mcpServers

Zed · context_servers

Cline · mcpServers

Roo Code · mcpServers

Continue · mcpServers

LibreChat · mcpServers

Gemini CLI · mcpServers

Codex CLI · mcp_servers

Full setup guides: every client.

02 · Evidence

Security posture

What to check before giving this server access to your agent - from the registry, GitHub, and our own probes. We don't score safety; we show what's verifiable.

runs as local process (stdio) - runs on your machine with your user's permissions

repo age created 2026-09-25 - young repo, little track record yet

license Apache-2.0 - declared in the repository

pypi package labmcp-epics - check the name against the project README before installing (PyPI has no namespace ownership)

registry namespace io.github.K-Dense-AI is GitHub-verified and matches the repo owner

03 · What EPICS Channel Access can do

Prose above is summarized from the project's README and registry record - no invented capabilities.

What you can build

g. set both slit blades). g.

Capability map

Tools grouped from the project's README - what EPICS Channel Access lets an agent do.

read & search

4 tools - e.g. Return the most recent raw commands sent to / replies received from the instrument (newest last). Useful for debugging and for recording what was done.; Report which instrument is connected (identity…

get_command_log · get_connection_info · get_pv · get_pvs

update

2 tools - e.g. Write a PV. This can move motors, open shutters, change magnet or high-voltage setpoints and heat or cool samples: tell the user exactly what will change first.; Write several PVs in order (e.g. set both…

put_pv · put_pvs

Apply

1 tool - e.g. Emergency action: write the scientist-configured safe-state PVs (--option safe_state, e.g. motor STOP fields, shutter close, HV off), all of them even if one fa

apply_safe_state

Monitor

1 tool - e.g. Subscribe to a PV and collect every value change for duration_s seconds (or until max_updates), then return statistics (min/max/mean/std, drift rate) and the up

monitor_pv

Info

1 tool - e.g. Connection details of a PV: serving IOC host:port, native type, element count, and whether this client has read/write access (EPICS access security) and passes

pv_info

Reconnect

1 tool - e.g. Close and re-open the connection to the instrument (e.g. after it was power cycled or a cable was re-plugged).

reconnect

Limitations (from the README)

- Setpoint versus readback: for motor records, NAME (VAL) is the target and NAME.RBV is the actual position. put_pv returns the value read back from the PV you wrote, so read the readback PV separately to confirm physical motion. - Control limits come from the CA DBR_CTRL response. EPICS convention treats equal low and high limits (normally 0/0) as "not configured", and those PVs are only type-checked. - NaN and infi

04 · Who maintains EPICS Channel Access

EPICS Channel Access is maintained by k-dense-ai. We track 32 MCP servers from k-dense-ai - 32 actively maintained, 9 combined GitHub stars, oldest repo from Sep 2026. Full record: all servers from k-dense-ai.

  1. Tecan Cavro Syringe Pump MCP server for Tecan Cavro syringe pumps (XLP 6000, XMP 6000, XCalibur) over the DT protocol. ★ 9
  2. Micro-Manager Microscope MCP server for microscopes controlled by Micro-Manager (pymmcore-plus). ★ 9
  3. Opentrons OT-2 / Flex MCP server for Opentrons OT-2 and Flex liquid-handling robots (HTTP API). ★ 9
  4. Atlas Scientific EZO Sensors MCP server for Atlas Scientific EZO sensor circuits (pH, ORP, DO, EC, RTD, HUM, CO2, PRS) over UART. ★ 9
  5. New Era Syringe Pump MCP server for New Era Pump Systems syringe pumps (NE-1000 family, RS-232). ★ 9
  6. Alicat Mass Flow & Pressure Controller MCP server for Alicat mass flow and pressure meters/controllers. ★ 9

05 · Facts

category
other - actively maintained as of 2026-09-30.
registry
io.github.K-Dense-AI/labmcp-epics (active, first published 2026-09-26 · 3 versions)
packages
pypi:labmcp-epics

06 · EPICS Channel Access FAQ

Is EPICS Channel Access still maintained?

Yes - as of 2026-09-30, its last commit was 2026-09-26. We re-verify nightly.

What can EPICS Channel Access do?

g. set both slit blades). g.

How do I install EPICS Channel Access?

Run `uvx labmcp-epics`. You can also paste the ready-made client config above.

Does EPICS Channel Access run locally?

Yes - it's a stdio server: it runs on your machine (via uvx) with your user's permissions. Your data stays local unless the server itself calls external APIs.

07 · Alternatives to EPICS Channel Access