mcp-server-key4hep
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-key4hepgenerate 10 dimuon events at 91.2 GeV with Pythia8, seed 42, then validate EDM4hep output"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Key4hep provenance and validation
Reusable tools around the existing FCC/Key4hep workflow. Generate events with
k4run and the FCC-config cards as usual; use this package to archive committed
inputs, record an output manifest, validate EDM4hep structure, and compare event
content. It does not provide a generator launcher or a process-card catalogue.
MCP is an optional, read-only interface to the same inspection tools.
Install
Python 3.11+ is required. The core has no pip dependencies:
uv sync --frozen
.venv/bin/python -I -m mcp_server_key4hep.cli --help
.venv/bin/python -I -m pytest -qprepare and verify need only Python and Git (Git is needed for preparation).
record, validate and compare need ROOT, podio and EDM4hep from your selected
Key4hep environment. On LXPLUS, use a fresh shell and an explicit release:
source /cvmfs/sw.hsf.org/key4hep/setup.sh -r 2026-04-08
export PYTHONPATH="$PWD/src${PYTHONPATH:+:$PYTHONPATH}"
python3 -m mcp_server_key4hep.cli --helpUse stack Python for ROOT operations. -I deliberately ignores PYTHONPATH and
is appropriate for isolated local tests, not this source-tree/stack invocation.
Do not layer a second release over an already configured shell.
Related MCP server: rucio-mcp
Inspect files produced by your existing workflow
No server, job ID or provenance manifest is required:
python3 -m mcp_server_key4hep.cli validate events.e4h.root --events 10 --report validation.json
python3 -m mcp_server_key4hep.cli compare left.e4h.root right.e4h.root --report comparison.jsonReports are created exclusively; existing files are never overwritten. A failed
operation still writes its {"valid": false, "error": ...} result to the report. CLI exit
codes are 0 for success/match, 1 for an error or failed validation, and 2 for a
completed comparison finding different content.
Validation reads every collection, checks event counts, and checks MCParticles finite momentum/mass/charge and parent/daughter references. It is structural validation, not a physics-quality assessment or comprehensive schema validation.
Comparison v2 covers ordered MCParticles, optional MCParticlesStable (cloned
particles or subset membership), and optional EventHeader. Particle fields and
relations are compared exactly; raw collection IDs are normalized to collection
names and object indices. Finite floats use float.hex; signed zero and ordering
are significant. Unknown collections fail rather than being silently excluded.
ROOT storage metadata, file-level metadata and frame parameters are excluded.
A match does not establish matching input configurations or physics correctness.
The v2 hashes are intentionally distinct from historical v1 hashes.
Portable provenance for external runs
Write a JSON specification with
release, explicit namedseeds, the exactcommandargument list, andinputscontainingrepositoryand relativepath. Inputs may come from multiple Git repositories.Run
preparebefore executing the normal generator command. It checks committed input bytes, records commits and hashes, and archives copies.Execute your usual command yourself; preserve stdout, stderr and environment information. The package does not execute the specification.
Run
recordto validate the output and writeprovenance.jsonbeside it.Run
verifyto check archived input and artifact hashes. Verification works after moving the whole run directory and without the original repositories.
python3 -m mcp_server_key4hep.cli prepare /absolute/run --spec spec.json
# Run your normal, explicitly seeded command in /absolute/run here.
python3 -m mcp_server_key4hep.cli record /absolute/run \
--output events.e4h.root --events 10 --exit-code 0 \
--artifact generation.stdout.log --artifact generation.stderr.log
python3 -m mcp_server_key4hep.cli verify /absolute/run/provenance.jsonrecord rejects changed inputs or snapshots, failed declared exit codes, and
outputs that change during validation. A failed external command leaves the
pending manifest and logs for diagnosis. Use a fresh directory for another run.
The command, seeds, release and exit code are operator declarations. These utilities cannot prove that an external command actually used them. Hashes detect changes relative to the manifest; an unsigned manifest is not tamper-proof or an execution attestation. The snapshots cover only listed inputs, so list all files that can influence the run. Review actual logs and effective settings as well.
Demonstration using FCC-config
See the FCC tutorial demonstration. It uses
pinned FCC-config and k4Gen commits, the existing dimuon card, and normal k4run.
Only explicit Pythia and Gaudi seeds are added through a small options file.
The upstream energy, decay settings, vertex smearing and collections are retained.
No MCP server is involved.
Status: unit tests cover the portable tooling and canonicalization. This upstream-based demonstration still needs execution on LXPLUS with the selected release. The historical replay used the removed custom example and is not evidence that this demonstration passes.
Optional MCP interface
Install the extra only when an MCP client needs it:
uv sync --frozen --extra mcpIn a pinned stack environment, run the installed package using a Python that can import both the optional MCP dependency and the stack modules:
python3 -m mcp_server_key4hep.server --root /absolute/path/to/run-archiveThe stdio server exposes only verify_provenance, validate_edm4hep_file and
compare_event_content. Paths are confined to --root; ROOT inspection runs in
a subprocess so native stdout cannot corrupt MCP framing. There are no tools for
generation, shell execution, job scheduling, cancellation or writing manifests.
Preparation and recording remain explicit CLI/library operations.
For a stack-derived venv on LXPLUS, install with uv sync --frozen --extra mcp --python "$(command -v python3)", then launch .venv/bin/python -m mcp_server_key4hep.server ... in that same pinned environment. Unlike isolated
tests, stack inspection needs its configured module search paths.
Migration from 0.1
Version 0.2 removes Runner, the smoke launcher, custom generator examples,
operator release/job configuration, and generation MCP tools. Existing ROOT files
can be inspected directly. Old job manifests remain historical records; the new
portable verifier accepts key4hep-external-run-v1, not the old runner schema.
Use the old release to verify old manifests; do not rewrite them as new evidence.
The package/repository name is retained for continuity; MCP is no longer required.
This server cannot be deployed
Maintenance
Related MCP Connectors
Physics-based validation of simulation results: receipts with per-check verdicts, via MCP.
INSPIRE-HEP MCP — high-energy physics literature.
Workflow diagnostics, capability routing, and x402 settlement for MCP-compatible agents.
LLM Orchestration Agent (Mcp)
Related MCP Servers
- AlicenseAqualityAmaintenanceAn MCP server that connects LLMs to CERN GitLab to discover and analyze High Energy Physics code, documentation, and analysis examples. It provides 14 tools for repository browsing, dependency parsing, and CI/CD configuration analysis.1549 PyPI4AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceAn MCP server that exposes Rucio distributed data management operations as tools for LLMs. Designed for ATLAS physicists working with grid data on analysis facilities, but usable with any Rucio instance.63 PyPI6Apache 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server for ATLAS Open Data that enables LLMs to discover, query, and retrieve public datasets and metadata from the ATLAS experiment at CERN.2Apache 2.0
- FlicenseNot gradedqualityDmaintenanceA community-maintained MCP server for Rucio that provides secure OAuth-based access to Rucio data management, enabling multi-experiment deployments and interaction via natural language.-