Relion Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Relion Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP (Model Context Protocol) server that lets AI agents drive RELION 5.x — the gold-standard software for cryo-EM structure determination.
Tested and verified against RELION 5.0.1 on Ubuntu 24.04 (WSL2). All CLI flags validated against actual --help output.An AI agent (Claude Code, OpenClaw, NemoClaw, etc.) can process cryo-EM data through natural language:
You: "Import the movies from Movies/*.tiff, 200 kV, pixel size 0.885 Å, then run motion correction"
Agent: → relion_import(..., confirm=False) → shows parameter preview
You: "Looks good, launch it"
Agent: → relion_import(..., confirm=True) → job runs (instant)
→ relion_motioncorr(..., confirm=False) → preview
You: "Ok go"
Agent: → relion_motioncorr(..., confirm=True) → 🚀 Launched (PID 12345)
→ relion_job_status("MotionCorr/job001") → 🔄 RUNNING
→ relion_job_status("MotionCorr/job001") → ✅ COMPLETEDThe server exposes 23 tools covering the complete single-particle analysis pipeline.
Every pipeline tool: confirm=False shows all parameters (✏️ user / 📋 tutorial default / ❌ missing / ⬜ optional), confirm=True launches the job.
All long-running jobs launch via detached Popen and return immediately with PID. Monitor with relion_job_status and relion_job_logs.
Class2D, InitialModel, Class3D, and Refine3D all expose --gpu for GPU acceleration.
RELION 5's neural-network prior is available on Class3D and Refine3D via use_blush=True.
Class2D and InitialModel support the VDAM gradient algorithm via use_vdam=True, with MPI=1 validation.
relion_help runs relion_* --help in real time with keyword filtering.
AI Agent (Claude Code / OpenClaw / NemoClaw)
│
│ stdio or HTTP
▼
RELION MCP Server v3 (Python)
│
│ Popen (detached) subprocess.run (short jobs)
▼ ▼
RELION 5.x binaries relion_import, relion_help
(background, non-blocking) (synchronous, fast)| Tool | Binary |
|---|---|
relion_import | relion_import |
relion_motioncorr | relion_run_motioncorr |
relion_ctffind | relion_run_ctffind |
relion_autopick | relion_autopick |
relion_extract | relion_preprocess |
relion_class2d | relion_refine |
relion_initial_model | relion_refine --denovo_3dref |
relion_class3d | relion_refine |
relion_refine3d | relion_refine |
relion_mask_create | relion_mask_create |
relion_postprocess | relion_postprocess |
relion_ctf_refine | relion_ctf_refine |
relion_bayesian_polishing | relion_motion_refine |
relion_blush | relion_python_blush |
relion_local_resolution | relion_postprocess --locres |
relion_modelangelo | relion_python_modelangelo |
| Tool | Description |
|---|---|
relion_project_info | Project overview |
relion_read_star | Parse STAR files |
relion_job_status | Job status + PID detection + stderr tail |
relion_job_logs | Read stdout/stderr from background jobs |
relion_suggest_next_step | Recommend next step (14-step pipeline) |
relion_run_command | Run any relion_* binary (escape hatch) |
relion_help | Parse --help output from any RELION binary |
All defaults match the RELION 5 beta-galactosidase tutorial:
| Step | Key defaults |
|---|---|
| Import | 200 kV, 0.885 Å, Cs 1.4, Q0 0.1 |
| MotionCorr | dose 1.277, patches 5×5, bfactor 150, float16, save_ps |
| CTF | Box 512, 30-5 Å, dF 5000-50000, dAst 100, use_given_ps=True |
| AutoPick | LoG, 150-180 Å, upper_threshold=5, maxres=20 |
| Extract | box 256 → 64, invert, bg_radius 200 |
| Class2D | K=50, T=2, mask 200, CTF, center |
| InitialModel | VDAM 100 mini-batches, T=4, C1 + apply_sym_later |
| Class3D | K=4, T=4, C1, ini_high 50, healpix 2 |
| Refine3D | D2, ini_high 50, MPI=3 (odd≥3), pool 30 |
| Mask | lowpass 15, threshold 0.01, extend 3, soft_edge 8 |
| PostProcess | auto B-factor, autob_lowres 10 |
| CTF Refine | All flags off by default (multi-pass workflow) |
| Polishing | Train/Polish modes, sigma vel/div/acc, float16 |
PATHrequirements.txt): pip install -r requirements.txtgit clone https://github.com/kdursunnizam-art/relion-mcp-server.git
cd relion-mcp-server
pip install -r requirements.txtOptionally, use a virtual environment (recommended for HTTP mode):
cd relion-mcp-server
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt#### stdio (local) From your terminal:
claude mcp add-json relion '{"command":"python3","args":["/path/to/relion-mcp-server/relion_mcp.py"],"env":{"RELION_PROJECT_DIR":"/path/to/data/relion_tutorial"}}' --scope userVerify:
claude mcp listRemove / reconfigure:
claude mcp remove relionNote: --scope user makes the server available in all your projects.
#### HTTP (remote) — EXPERIMENTAL
cd /path/to/relion-mcp-server
source venv/bin/activate
export RELION_PROJECT_DIR=/path/to/data/relion_tutorial
python relion_mcp.py --transport http --port 8000 --host 0.0.0.0Keep this terminal open.
claude mcp add --transport http relion http://YOUR.IP.ADDRESS:8000/mcp --scope userclaude mcp listIt should show relion with the HTTP transport and URL http://YOUR.IP.ADDRESS:8000/mcp.
Then in Claude Code:
> Use relion_project_info to show the project status
> Import movies from Movies/*.tiff with pixel size 0.885, 200 kV, Cs 1.4
> Run motion correction with dose 1.277 e-/Ų/frame and gain ref Movies/gain.mrc
> Show me the Class2D parameters before running (agent calls with confirm=False)
> Change threads to 8 and launch (agent calls with confirm=True)Claude Desktop only supports stdio servers via manual config. Edit claude_desktop_config.json:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json{
"mcpServers": {
"relion": {
"command": "python3",
"args": ["/path/to/relion-mcp-server/relion_mcp.py"],
"env": {
"RELION_PROJECT_DIR": "/path/to/data/projet_relion",
"RELION_THREADS": "4",
"RELION_MPI": "1"
}
}
}
}On Windows with WSL2, set "command": "wsl" and prepend python3 to args:
{
"mcpServers": {
"relion": {
"command": "wsl",
"args": ["python3", "/home/you/relion-mcp-server/relion_mcp.py"],
"env": { "RELION_PROJECT_DIR": "/home/you/relion_tutorial" }
}
}
}Restart Claude Desktop after editing the config.
#### stdio (local)
openclaw mcp add --transport stdio --scope user relion --cmd python3 --args "/path/to/relion-mcp-server/relion_mcp.py" --env RELION_PROJECT_DIR="/path/to/data/relion_tutorial"Verify:
openclaw mcp list#### HTTP (remote) Start the server:
cd /path/to/relion-mcp-server
source venv/bin/activate
export RELION_PROJECT_DIR=/data/my_project
python relion_mcp.py --transport http --port 8000 --host 0.0.0.0Register:
openclaw mcp add --transport http --scope user relion http://YOUR.IP.ADDRESS:8000/mcpOr configure openclaw.json manually (both stdio and HTTP):
{
"skills": {
"install": { "nodeManager": "npm" },
"entries": {
"mcp-integration": {
"enabled": true,
"config": {
"servers": [
{
"name": "relion-stdio",
"transport": "stdio",
"command": "python3",
"args": ["/path/to/relion-mcp-server/relion_mcp.py"],
"env": { "RELION_PROJECT_DIR": "/path/to/data/projet_relion" }
},
{
"name": "relion-http",
"transport": "streamable-http",
"url": "http://YOUR.IP.ADDRESS:8000/mcp"
}
],
"toolPrefix": true
}
}
}
}
}| Environment Variable | Description | Default |
|---|---|---|
RELION_PROJECT_DIR | RELION project directory | Current directory |
RELION_BIN | Path prefix for RELION binaries | (uses PATH) |
RELION_THREADS | Default thread count | 4 |
RELION_MPI | Default MPI processes | 1 |
| CLI Flag | Description | Default |
|---|---|---|
--transport | stdio or http | stdio |
--port | HTTP port | 8000 |
--host | HTTP host (use 0.0.0.0 for remote access) | 127.0.0.1 |
--project-dir | Override RELION_PROJECT_DIR | (env or cwd) |
relion_* executables can be run (validated)shell=True127.0.0.1 by default. For remote access, set --host 0.0.0.0 (or your specific IP). Be aware this exposes the server on your network — use only on trusted networks.Designed for MCP SDK 1.26+ with these constraints:
lifespan (causes crash with MCP SDK 1.26)ctx.report_progress (causes crash with MCP SDK 1.26)async without a Context parameterpython3 -m py_compile cleanly--gpu) on Class2D, InitialModel, Class3D, Refine3D--pool, --preread_images, --scratch_dir, --skip_paddingrelion_local_resolution, relion_modelangeloPopen(start_new_session=True) and return immediately with PID. No more agent blocking.relion_* --help and parse all flags live, with keyword filteringrun.sh) in each job_dir auto-creates SUCCESS/FAILURE markersrelion_initial_model, relion_mask_create, relion_ctf_refine, relion_bayesian_polishing, relion_helpMIT — RELION itself is GPLv2. This server interacts with RELION solely through its CLI.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.