Skip to content

Releases: UCR-Research-Computing/nrp-mcp

nrp-mcp v0.7.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 14:42
94a0be8

Added

  • GitHub is now the default way to build an image. nrp_build writes a GitHub Actions
    workflow that builds the project's Dockerfile on every push and saves the image in the
    GitHub container registry as ghcr.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 with target=gitlab.
  • nrp_build explains public vs private images: how to make the package public, or how to
    store a read-only read:packages token 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. New pull_secret= for private
    images.
  • The suggested Dockerfile installs build tools and runs make for 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

Choose a tag to compare

@github-actions github-actions released this 06 Oct 20:51
85077be

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_run and gpus_per_run now limit what runs at once
    (a Job counts min(parallelism, completions)), and the refusal says to lower parallel
    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

Choose a tag to compare

@github-actions github-actions released this 06 Oct 19:06
a068e51

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-50 gives
    1..50, 0-20:5 gives 0, 5, .., 20, and lists like 1,3,7 work. The same file now runs
    unchanged on Slurm and on Nautilus. %N becomes the sweep's parallelism.

Added

  • examples/slurm-array-bootstrap: an R bootstrap with a --array=0-9 Slurm script.
  • scripts/e2earray: live check that every array task gets a distinct id and result.

nrp-mcp v0.6.2

Choose a tag to compare

@github-actions github-actions released this 06 Oct 17:52
6687485

Fixed

  • Gemini models rejected the nrp_plan tool schema (urls was 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

Choose a tag to compare

@github-actions github-actions released this 06 Oct 17:20
977f7d6
  • nrp-mcp setup --no-sign-in stops before the browser sign-in (CI, offline checks).
  • Windows: setup now reads kubelogin's version there too (Windows kubelogin rejects
    --version; setup falls back to version, 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 by nrp-mcp setup from 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

Choose a tag to compare

@github-actions github-actions released this 06 Oct 16:54
fe68def

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 pass everyone=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.