Skip to content

Install the EIC MCP stack and opencode via spack packages - #357

Draft
aprozo wants to merge 10 commits into
masterfrom
feat/eic-mcp-spack
Draft

Install the EIC MCP stack and opencode via spack packages#357
aprozo wants to merge 10 commits into
masterfrom
feat/eic-mcp-spack

Conversation

@aprozo

@aprozo aprozo commented Jul 17, 2026

Copy link
Copy Markdown

Supersedes #328 (per review there: no bundled script, no runtime clone/build — everything installed properly via packages) and replaces #356 (same change from a fork, where CI has no secrets).

Three commits:

  1. feat: install the EIC MCP server stack via spack packages — xl/spack.yaml adds eic-mcp, rucio-eic-mcp-server, supergateway, uproot-mcp-server (xrootd/zenodo were already in); packages.yaml version requires + py-mcp +cli.
  2. feat: opencode — AI coding agent CLI for headless use (farm nodes, CI reproducers).
  3. chore: TESTING pineic-spack.sh points at the recipes branch (EIC MCP servers and the eic-mcp launcher eic-spack#986 head, i.e. develop@dd8a73e + the new recipes). This commit is dropped/reverted to the merge SHA before undrafting.

Why the current image ships a broken xrootd-mcp-server, test evidence (all recipe installs verified in eicweb/eic_xl:nightly, 22/22 end-to-end launcher tests, MCP served on 9101–9104): see the eic-spack PR and eic/eic-mcp#1.

Draft until the eic-spack PR merges and the pin is finalized.

aprozo added 3 commits July 17, 2026 12:01
The eic-mcp launcher and every MCP server now come from eic-spack recipes
and land in /opt/local/bin via the environment view (supersedes #328: no
bundled script, no runtime clone/build).

- xl/spack.yaml: add eic-mcp, rucio-eic-mcp-server, supergateway,
  uproot-mcp-server (xrootd-/zenodo-mcp-server were already in)
- packages.yaml: version requires for the servers and bridge; py-mcp +cli
For headless LLM-client use inside eic-shell (farm nodes, CI reproducers).
Installed from the per-platform GitHub release binary.
Points at aprozo/eic-spack feat/mcp-servers (develop@dd8a73e + the new
recipes). Revert to eic/eic-spack at the merge SHA before undrafting.
aprozo added 2 commits July 17, 2026 14:20
py-typer (newest builtin: 0.23.2) pins py-click@:8.1.8, which cannot unify
with the environment's click 8.3+ (flask via pyrobird). The MCP servers
only need mcp core, so the eic-spack recipes default the cli variant off.
The previous pin predated py-mcp defaulting ~cli, so the typer/click
conflict was still in the DAG. Also picks up the py-pyjwt import-test
path fix, and drops the fork indirection now that the branch lives on
eic/eic-spack.
@aprozo
aprozo force-pushed the feat/eic-mcp-spack branch from de3b9cd to 3d658cc Compare July 17, 2026 16:40
@github-actions

Copy link
Copy Markdown

Capybara summary for PR 357

The MCP servers now speak streamable HTTP themselves and eic-mcp starts
them directly, so the stdio bridge is gone from the environment.  The three
server pins move to '@main' — the only pin that builds before the v0.2.0
tags exist — mirroring the precedent eic-mcp already sets; flip them to
'@0.2.0:' once the tags are pushed (grep TODO(push)).
@aprozo

aprozo commented Aug 31, 2026

Copy link
Copy Markdown
Author

Pushed: supergateway dropped from spack.yaml/packages.yaml; the three server pins track @main until the v0.2.0 tags land (then flip to @0.2.0: and bump EICSPACK_VERSION to the new eic-spack#986 head — grep TODO(push)).

aprozo added 4 commits August 31, 2026 14:24
# Conflicts:
#	eic-spack.sh
#	spack-environment/packages.yaml
#	spack-environment/xl/spack.yaml
#	spack-packages.sh
Both picks (#5637, #5639) verified to apply cleanly in sequence onto
v2026.06.0.
@aprozo

aprozo commented Aug 31, 2026

Copy link
Copy Markdown
Author

opencode is back in the env — via the now-merged upstream recipe (spack/spack-packages#5639, 55be3f7 added to the cherry-picks) instead of an eic-spack copy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant