Skip to content

Releases: mitchallen/random-mcp-server

Release list

v0.2.6

Choose a tag to compare

@mitchallen mitchallen released this 05 Aug 20:19

Security

  • Bumped cryptography 49.0.0 → 50.0.0 in uv.lock
    (GHSA advisory, high severity): PKCS#7
    EnvelopedData decryption exposed a Bleichenbacher oracle through
    distinguishable errors and timing. The package is a transitive dependency
    (via authlib / joserfc / pyjwt in the FastMCP auth stack) and this
    server does not use PKCS#7 EnvelopedData, so exposure was minimal — but the
    image installs uv sync --frozen, so the fix only reaches users in a
    published release.

Changed

  • Dependabot auto-merge now matches the uv package ecosystem. The
    condition tested package-ecosystem == 'pip' — the name declared in
    dependabot.yml — but the metadata action reports Dependabot's internal
    identifier, which is uv for a project resolved through uv.lock. The
    Python branch therefore never matched and no Python bump could auto-merge.
    It went unnoticed because the only Python PR so far was a major, which is
    excluded by design anyway.
  • make release now creates the matching GitHub Release automatically
    (gh release create) after pushing the tag, using that version's
    CHANGELOG.md section as the release notes (extracted with awk).
    Previously the target only pushed the tag, so the Releases page drifted
    behind the tags and published images.
  • make release now verifies that CHANGELOG.md has a ## [X.Y.Z] section for
    the version being released before it bumps, tags, or pushes anything. The
    target version is computed with uv version --dry-run (no mutation), and the
    release aborts early with a helpful message if the entry is missing — so a
    release can no longer be cut with empty auto-generated GitHub Release notes.

v0.2.5

Choose a tag to compare

@mitchallen mitchallen released this 13 Jul 15:02

Changed

  • Switched the Docker base image from python:3.12-slim-bookworm (Debian) to a
    distroless Chainguard/Wolfi Python base (cgr.dev/chainguard/python). The
    Debian base carried numerous OS-package CVEs (perl, zlib, sqlite, util-linux,
    ncurses) with no upstream fix available; the Wolfi image ships those
    packages away entirely and scans 0 vulnerabilities at every severity. The
    venv is built on the matching -dev image so its interpreter resolves at
    runtime; the image still runs as a non-root user. The previous apt-get upgrade and useradd steps are gone (no package manager / already non-root).
  • make scan now fails on fixable CRITICAL/HIGH vulnerabilities
    (--severity CRITICAL,HIGH --ignore-unfixed --exit-code 1), matching the CI
    gate for local parity.

Security

  • Automated container image vulnerability scanning with Trivy. The new
    image-scan workflow builds the image and fails the build on fixable
    CRITICAL/HIGH vulnerabilities on every pull request and push to main, and
    the publish / publish-dockerhub workflows run the same gate before
    pushing so a vulnerable image can't reach GHCR or Docker Hub.
  • Added a scan-scheduled workflow that re-scans the published :latest image
    daily and uploads results (all severities, including unfixed) to the GitHub
    Security tab, catching CVEs disclosed after build time.
  • Added a Dependabot config (.github/dependabot.yml) opening weekly update PRs
    for the Docker base image, GitHub Actions, and Python dependencies, and
    enabled Dependabot alerts + security updates on the repository.