EIC MCP servers, supergateway, eic-mcp, opencode, py-mcp (+deps) - #986
EIC MCP servers, supergateway, eic-mcp, opencode, py-mcp (+deps)#986aprozo wants to merge 20 commits into
Conversation
|
Two updates after digging into the CI results: 1. The 2. Also planning to propose |
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.
Ships the EIC MCP stack as proper Spack packages so eic-shell stops relying on runtime clone+build (companion to eic/eic-mcp#1 and the containers wiring PR).
One commit per package:
+clivariant) and its missing pure-python deps py-httpx-sse, py-sse-starlette, py-restrictedpython; py-pyjwt override adding 2.10.1 (builtin stops at 2.4.0, mcp needs ≥2.10.1). These four are general-purpose — open question whether they should go upstream to spack/spack-packages instead; kept here so the containers pin can move now.preparehook, sonpm install --global .from source shipped nobuild/tree and no runnable console command (why the current eic_xl has them in the env but nothing on PATH);build/is also gitignored with nofileslist, sonpm packwould drop the compiled tree even after building — an empty.npmignorekeeps it. Complements Add HTTP/SSE transport (+ build-from-source fix) xrootd-mcp-server#98.Tested inside
eicweb/eic_xl:nightly: all packages concretize; supergateway/opencode/py-pyjwt/pure-python deps and both fixed node servers install cleanly with compiled trees and runnable entry points; end-to-end MCP-over-HTTP served byeic-mcp upon ports 9101–9104.