EIC MCP servers and the eic-mcp launcher - #986
Draft
aprozo wants to merge 25 commits into
Draft
Conversation
This was referenced Jul 17, 2026
Builtin stops at 2.4.0; py-mcp needs pyjwt>=2.10.1. Newer sdists use the PEP 625 lowercase filename, so the version carries its own url.
The Model Context Protocol python SDK. All other deps exist in builtin; +cli (default on) adds py-typer and py-python-dotenv for mcp[cli].
Talks to the Rucio REST API over requests; no rucio client dependency. No release tag upstream yet, so 0.1.0 pins the current main commit.
Released tags have no 'prepare' hook, so 'npm install --global .' from source never ran tsc and shipped no build/ tree and no runnable console command. build/ is also gitignored with no files list, so npm pack would drop the compiled tree even after building — an empty .npmignore keeps it. Also chmod the bin entry point, which older build scripts skip.
Same prepare-hook and npm-pack gap as xrootd-mcp-server.
stdio to SSE/streamable-HTTP bridge for MCP servers. The npm registry tarball ships a prebuilt dist/, so install with --ignore-scripts.
Service manager for the installed EIC MCP servers (runtime-deps the four servers and supergateway). 0.1.0 pins the service-management-only rework (eic/eic-mcp#1); switch to a tag once released.
AI coding agent CLI, from the per-platform GitHub release binary (the npm wrapper resolves its binary in a postinstall via optionalDependencies, which does not work in an offline install phase).
The cli extra pulls py-typer, whose newest packaged version (0.23.2) pins py-click@:8.1.8 — unsatisfiable in environments that need click 8.3+ (eic_xl: flask via pyrobird). The MCP servers only import mcp.server core (rucio-eic-mcp-server included, despite its mcp[cli] metadata), so nothing needs the typer-based mcp dev CLI at runtime.
--test root runs test_imports in the build environment that spack freezes before the package is installed; python-venv only adds an extension's site-packages to PYTHONPATH if it already exists on disk, so every from-source pure-python package fails its import test regardless of the recipe (verified with stock py-colorama; spack-packages#49275 introduced the isdir guard). The stand-alone 'Run package tests' step already covers tests in a correctly constructed post-install environment; promoting it from informational to a hard gate can be a follow-up.
The launcher now starts each server in its own native streamable-HTTP mode (eic/eic-mcp feat/native-http-servers); there is no stdio bridge any more, so the supergateway package is removed entirely. zenodo-mcp-server stays a run dependency: it is stdio-only upstream for now, eic-mcp keeps it registered, and clients can still launch it directly.
…HTTP) The 0.2.0 entries are inert until the v0.2.0 tags are pushed: the placeholder sha256 values are deliberately all-zeros so a build fails loudly rather than fetching the wrong thing. Grep TODO(push) for everything that needs filling once the tags exist. uproot gains the py-mcp@1.10: floor its 0.2.0 pyproject declares; py-mcp gets a comment guarding the uvicorn dependency that streamable HTTP relies on.
Author
|
Pushed the native-HTTP follow-up: supergateway removed (package + eic-mcp run-dep), inert 0.2.0 placeholder versions for the three servers (grep |
The tutorial installs opencode on the user's machine; in-container assistants remain claude-code and github-copilot.
Author
|
spack/spack-packages#5637 - duplicated py-* recipes get dropped |
…: drop — merged upstream spack/spack-packages#5637 (d18c9ad); containers cherry-picks it onto its pinned spack-packages release.
# Conflicts: # .github/workflows/build_and_test.yml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ships the EIC MCP stack as Spack packages so eic-shell stops relying on runtime clone+build (companion to the containers wiring PR).
TODO(push)).preparehook, so a plain global install shipped nobuild/tree; an empty.npmignorekeeps the gitignored compiled tree in the npm pack.--test root(install-time import tests run in an env frozen pre-install and fail for pure-python packages); the stand-alonespack test runstep covers testing.py-mcp and its deps merged upstream (spack/spack-packages#5637, d18c9ad) — the copies formerly carried here are dropped; the containers PR cherry-picks that commit onto its pinned spack-packages release. supergateway is gone (the servers speak streamable HTTP natively) and opencode stays a host-side install.