Skip to content

go-live 2/9: v1 deprecation notice + publish 1.0.1 from v1/main (OIDC rehearsal) #1815

Description

@cliffhall

Phase 2 of 9 in the v2 go-live runbook — see #1804 (§4). Depends on #1824.

⚠️ IRREVERSIBLE — this publishes to npm. A version number is consumed and cannot be unpublished in practice.

Ship the v1 deprecation notice as 1.0.1, published from v1/main. This doubles as the trusted-publishing rehearsal: it is the first evidence that OIDC publishing works from a non-default branch, which is what makes the whole "v1 keeps taking security fixes" story viable.

Two steps: a PR carrying the content change, then a release cut from the merged branch.

Step 1 — PR into v1/main

After #1824 the branch is ruleset-protected: 1 approving review, code-owner review, and a green build check. No direct pushes.

  • Deprecation notice in all four published packages, not just the root.
    v1 publishes four names and each is separately installable, so each needs
    its own notice — a root-README-only change is invisible to anyone who
    installed a sub-package.

    | Package | Where the notice goes |
    | --- | --- |
    | `@modelcontextprotocol/inspector` (root) | `README.md` |
    | `@modelcontextprotocol/inspector-cli` | `cli/src/cli.ts` — stderr banner in `main()` (:376). Also covers the **root `mcp-inspector` bin**, which is `cli/build/cli.js`. Must be **stderr**, not stdout: `--cli` mode emits JSON on stdout and a banner there would corrupt piped output. |
    | `@modelcontextprotocol/inspector-server` | `server/src/index.ts` — alongside the existing `⚙️ Proxy server listening` log (:1091) |
    | `@modelcontextprotocol/inspector-client` | `client/bin/start.js` — next to the `🚀 MCP Inspector is up and running` log (:170); plus `client/README.md`, the only sub-package with one, and a dismissible banner in the web UI itself |
    
    Wording should match the `npm deprecate` text in #1816 so the npm warning
    and the runtime notice say the same thing: v1 is deprecated, use
    `@modelcontextprotocol/inspector@latest`, v1 gets security fixes only.
    
    Note `cli/` and `server/` have **no README**, so npm renders a blank page
    for those two — the runtime banner and the `npm deprecate` warning (#1816)
    are the only notice their users get.
    
  • npm run update-version 1.0.1 — bumps all four (package.json + client/server/cli). The build job's check-version step fails if they drift, so this is enforced by the PR gate rather than trusted to memory.

  • Do NOT add --tag v1 to publish-all in this PR. 1.0.1 must take latest — that is the entire point of shipping the notice to npx users. (--tag v1 is go-live 3/9: lock the v1 dist-tag and deprecate all four packages on npm #1816, immediately after.)

  • Merge once build is green.

Step 2 — cut the release

gh release create 1.0.1 --target v1/main \
  --title "1.0.1 — v1 deprecated" \
  --notes "v1 is deprecated. Use @modelcontextprotocol/inspector@latest (v2). v1 receives security fixes only."

For a release event GitHub runs the workflow file from the commit the tag points at, so --target selects which main.yml executes. Tag has no v prefix, matching 1.0.0. The whole workflow runs — build (format, check-version, lint, tests) then publish, which is needs: build, so a failed check stops it before npm.

  • gh run watch — approve the deployment if the release environment prompts.
  • npm view @modelcontextprotocol/inspector dist-tagslatest: 1.0.1
  • npm view @modelcontextprotocol/inspector-cli version1.0.1

Pre-flight (already checked)

  • Settings → Environments → release → Deployment branches and tags = No restriction (verified 2026-07-27), so the tag reaches the publish job.
  • If required reviewers are configured the run pauses for approval, it does not fail. We have someone with approval rights.
  • v1's workflow already ensures npm ≥ 11.5.1 (Node 22 bundles 10.x).

Hazards

What this does not prove

The --tag v1 publish path, and a publish in the post-2.0.0 world where latest is genuinely at risk. The first real v1 security fix remains the first true exercise of that.

Blocks #1816.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

v2Issues and PRs for v2

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions