EPICS Server
БесплатноНе проверенEnables retrieval, setting, and detailed information lookup of EPICS process variables (PVs) for monitoring and controlling hardware or software parameters.
Описание
Enables retrieval, setting, and detailed information lookup of EPICS process variables (PVs) for monitoring and controlling hardware or software parameters.
README
ARGUS is an MCP server that gives an AI assistant a unified operational
interface to an accelerator control room — not just EPICS. A single tool
call like diagnose_device("QF12") transparently pulls together live PV
values, archived trends, Kubernetes pod status, ArgoCD deployment state,
recent logbook entries, and documentation, and returns one structured
report. The LLM never needs to know (or ask) which backend answered.
ARGUS started as a fork of INFN's epics-mcp-server (a 3-tool EPICS-only
proof of concept) and has been rebuilt into a modular
provider → service → tool architecture. See
docs/architecture.md for the full picture.
Why not just expose EPICS functions as tools?
Because a control room isn't just PVs. A device like quadrupole QF12 is a PV group, an IOC, a Kubernetes pod, a GitOps deployment, a maintenance history, and a stack of documentation — and answering "what's wrong with QF12?" means correlating all of that. ARGUS exposes ~18 high-level, intent-shaped tools instead of hundreds of thin per-backend wrappers; each tool decides internally which of EPICS, the Archiver Appliance, ChannelFinder, Kubernetes, ArgoCD, Elasticsearch, the electronic logbook, or local documentation to query (in parallel, with per-backend timeouts and graceful degradation).
Quickstart
python3.12 -m venv .venv
.venv/bin/pip install -r requirements.txt
cp .env.example .env # at minimum, set EPICS_CA_ADDR_LIST
.venv/bin/python -m argus --transport stdio
Every provider besides EPICS is entirely optional — the server boots fine
with just EPICS_CA_ADDR_LIST set; unconfigured providers report themselves
as unconfigured rather than erroring, and diagnose_device() still
returns a graceful partial report. See .env.example for
every provider's config, and docs/providers.md for what
each one talks to.
Serve over SSE instead of stdio:
.venv/bin/python -m argus --transport sse --host 0.0.0.0 --port 8000
Backward compatibility
The original 3 tools still exist, unchanged, so existing clients (including
the example scripts under test/) work with zero changes:
get_pv_value(pv_name)→{"status": "success", "value": ...}set_pv_value(pv_name, pv_value)→{"status": "success", "message": ...}get_pv_info(pv_name)→{"status": "success", "info": {...}}
get_pv/set_pv are the new, richer equivalents (include timestamp and
alarm severity); the legacy names are thin aliases with byte-identical
input schemas, enforced by
tests/tools/test_pv_tools_backward_compat.py.
Tools
| Tool | What it does |
|---|---|
get_pv / set_pv / get_pv_info |
Read/write/inspect a single PV |
get_pv_value / set_pv_value |
Legacy aliases of get_pv/set_pv |
search_pvs |
Search PVs/channels by name, tag, or property (ChannelFinder) |
get_device |
Full device metadata: PVs, IOC, pod, namespace, rack, owner, docs |
device_status |
Quick health snapshot: live PVs + pod status |
diagnose_device |
Full cross-system diagnostic report, one call |
beamline_status |
Aggregate status across a group of devices |
get_history |
Historical trend data for a PV (Archiver Appliance) |
get_alarm_history |
Recent alarm-tagged logbook entries for a device |
get_logs |
Search historical application/IOC logs (Elasticsearch) |
list_iocs |
List IOCs and their Kubernetes pod status |
restart_ioc |
Restart an IOC's pod |
machine_summary |
Machine-wide IOC health + recent alarm counts |
execute_procedure |
Run a named, pre-approved operational procedure (scaffolded; no procedures ship yet — see ADR context) |
search_documentation |
Search technical documentation (local TF-IDF by default, or RAGFLOW — see providers.md) |
list_beamline_devices |
Structured device inventory (IOCs, zones, devgroup/devfunc) parsed from a beamline's deploy YAML |
get_config_history |
Read a beamline config file's current content, git history, or a commit's diff (GitHub/GitLab) |
search_knowledge_base |
Search issues/tickets across configured repos for past problems and resolutions (GitHub/GitLab) |
Development
.venv/bin/pip install -r requirements-dev.txt
.venv/bin/pytest
Tests never require a running EPICS/Kubernetes/ArgoCD/etc. instance — every backend is mocked. See docs/developer-guide.md for how to add a new provider or tool, and docs/class-diagram.md for the object model.
EPICS Channel Access, for local testing
softIoc -d ~/EPICS/DB/test.db
caget temperature:water
caput temperature:water 100
then point ARGUS at it with EPICS_CA_ADDR_LIST=127.0.0.1 in .env.
Deploying
- Docker:
docker build -t argus .— runspython -m argus --transport stdioby default; override the command for SSE. - Smithery:
smithery.yamllaunchespython -m argus --transport stdio.
Установка EPICS Server
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/infn-epics/argus-mcp-serverFAQ
EPICS Server MCP бесплатный?
Да, EPICS Server MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для EPICS Server?
Нет, EPICS Server работает без API-ключей и переменных окружения.
EPICS Server — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить EPICS Server в Claude Desktop, Claude Code или Cursor?
Открой EPICS Server на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare EPICS Server with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
