Repository navigation
Releases: UCR-Research-Computing/nrp-mcp
Releases · UCR-Research-Computing/nrp-mcp
Release list
nrp-mcp v0.7.0
Added
- GitHub is now the default way to build an image.
nrp_buildwrites a GitHub Actions
workflow that builds the project's Dockerfile on every push and saves the image in the
GitHub container registry asghcr.io/<owner>/<repo>(taken from the git remote). It logs
in with GitHub's built-in token, so there is no new account and no key to store. NRP GitLab
stays available withtarget=gitlab. nrp_buildexplains public vs private images: how to make the package public, or how to
store a read-onlyread:packagestoken once as a pull secret.nrp_plan image=...runs a built image as built: its own start command, the port from
EXPOSE, no project files copied in and no install step. Newpull_secret=for private
images.- The suggested Dockerfile installs build tools and runs
makefor projects with compiled
code, and starts Flask with gunicorn, FastAPI with uvicorn, Streamlit and Dash on the right
port. - Deploying a new version of a web app updates the running one in place, at the same address.
Docs
- 20 research examples in docs/examples/, linked from the README.
Fixed
- A Flask app with a Dash dashboard mounted on it was detected as a plain Dash app (wrong
port and start command). - Planning a web app whose name was already deployed collided with the running Deployment
("spec.selector: field is immutable"). Now the plan reuses the run and updates it. - The image pull diagnosis now explains private ghcr.io packages.
Live test (2026-10-07): a Flask + Dash app with a compiled C helper, built by GitHub Actions
in a private repo, refused cleanly while private, then live over HTTPS once public, then
updated in place.
nrp-mcp v0.6.4
Fixed
- The pod and GPU caps counted every task in a sweep instead of the tasks running at the
same time, so a 1,000-task sweep run 50 at a time was refused under the default
pods_per_run: 50.pods_per_runandgpus_per_runnow limit what runs at once
(a Job counts min(parallelism, completions)), and the refusal says to lowerparallel
rather than the count. A new cap,tasks_per_run(default 10,000), limits a sweep's
total. The NRP's rule that more than 100 pods need limit = request still counts the
total, conservatively. Found while writing realistic research examples, where most large
sweeps hit it.
nrp-mcp v0.6.3
Fixed
- Slurm array scripts ran every task with the same id. nrp renamed
$SLURM_ARRAY_TASK_ID
in the command line but not inside the script, so a script that read the variable (as
most do) saw it empty in every task: ten tasks, ten identical answers. Each sweep task
now gets Slurm's array variables (SLURM_ARRAY_TASK_ID,_COUNT,_MIN,_MAX) set
from$JOB_COMPLETION_INDEX, mapped to the script's real ids:--array=1-50gives
1..50,0-20:5gives 0, 5, .., 20, and lists like1,3,7work. The same file now runs
unchanged on Slurm and on Nautilus.%Nbecomes the sweep's parallelism.
Added
examples/slurm-array-bootstrap: an R bootstrap with a--array=0-9Slurm script.scripts/e2earray: live check that every array task gets a distinct id and result.
nrp-mcp v0.6.2
Fixed
- Gemini models rejected the
nrp_plantool schema (urlswas typed["null", "array"];
Gemini accepts one type per field), so OpenCode on a Gemini model failed before its first
call. Input schemas now use single types; a test checks every tool. Found by testing
Hermes Agent, Gemini CLI and OpenCode side by side with a Gemini API key.
nrp-mcp v0.6.1
nrp-mcp setup --no-sign-instops before the browser sign-in (CI, offline checks).- Windows: setup now reads kubelogin's version there too (Windows kubelogin rejects
--version; setup falls back toversion, then--help), and a kubelogin that does not
run at all is reported as a problem instead of ok. Found by the new Windows CI run. - setup finds the latest kubelogin through the github.com release redirect instead of the
GitHub API, which allows only 60 calls an hour per IP address (a classroom on one campus
network could hit it). The API stays as a fallback. Found by the macOS CI run (HTTP 403). - New CI workflow
setup-e2e: on Linux, Windows, macOS (Apple Silicon) and macOS (Intel),
a fresh home folder gets kubectl and kubelogin installed bynrp-mcp setupfrom the real
release downloads, the sample NRP config placed, the tools run, and a second run changes
nothing. Runs on every change and weekly.
nrp-mcp v0.6.0
First public release.
- Per-person cleanup: every object carries an owner-id label (a short hash of the cluster
username), so in a shared namespace each person sees and deletes only their own runs. A
namespace admin can passeveryone=true. - Every tool resolves the namespace the same way (argument, config, then your first
namespace); cleanup no longer needs a configured namespace. - Release binaries for Linux, macOS and Windows (amd64, arm64) with SHA256SUMS, and an
install script. - Community files, issue forms, security policy.