Skip to content

Pin mcp exactly so Dependabot can classify its updates correctly - #12

Merged
JB09 merged 1 commit into
mainfrom
claude/pin-mcp-for-automerge
Sep 13, 2026
Merged

JB09 merged 1 commit into
mainfrom
claude/pin-mcp-for-automerge

Conversation

@JB09

@JB09 JB09 commented Sep 13, 2026

Copy link
Copy Markdown
Owner

mcp>=2.1.1,<3 expressed the right policy — never cross into 3.x unreviewed — but it silently disables auto-merge for every mcp update.

What happens

Dependabot titles a range update "Update mcp requirement from <3,>=2.1.1 to >=x.y.z,<3", and dependabot/fetch-metadata parses the leading 3 out of that string as the previous version. Observed on the equivalent PR in smtp-mcp-wrapper (#22 there):

outputs.update-type:      version-update:semver-major
outputs.previous-version: 3,>=2.0.0
outputs.new-version:      2.1.1

A minor bump compared as 3 → 2.1.1 and classified major. This repo's automerge workflow has the identical patch/minor condition, so the "Enable auto-merge" step skips, the job still reports success, and the PR waits for a human with nothing indicating why.

Not a permissions or settings problem — one-sided ranges parse fine, which is why httpx2>=2.12.0 and pyjwt[crypto]>=2.13.0 are unaffected. Only the two-bound form breaks.

The fix

An exact pin gives fetch-metadata a clean previous/new pair:

  • patch and minor bumps classify correctly and auto-merge
  • 2.2.03.0.0 still classifies as major and stays manual

Same protection as the <3 bound, enforced by the classification instead of by pip's resolver.

Why 2.2.0

>=2.1.1,<3 resolves to 2.2.0 today, so this does not change what the next build installs — it only removes the drift. Pinning to 2.1.1 would have been a downgrade. Verified that the SDK APIs this server uses import cleanly on 2.2.0; scripts/smoke_test.sh gates the image either way.

Companion PRs apply the same change to smtp-mcp-wrapper and caldav-mcp-wrapper.

🤖 Generated with Claude Code

https://claude.ai/code/session_013fTRMScKCdAXoafoQoD3Hu


Generated by Claude Code

`mcp>=2.1.1,<3` expressed the right policy — never cross into 3.x unreviewed —
but it silently disabled auto-merge for every mcp update.

Dependabot titles a range update "Update mcp requirement from <3,>=2.0.0 to
>=2.1.1,<3", and dependabot/fetch-metadata parses the leading `3` out of that
string as the previous version. Observed in smtp-mcp-wrapper#22:

    outputs.update-type:      version-update:semver-major
    outputs.previous-version: 3,>=2.0.0
    outputs.new-version:      2.1.1

A 2.0 -> 2.1 minor bump compared as 3 -> 2.1.1 and classified major, so the
automerge workflow's patch/minor condition skipped, the job still reported
success, and the PR waited for a human. One-sided ranges are unaffected, which
is why pyjwt>=2.8.0 -> >=2.13.0 auto-merged normally.

An exact pin gives fetch-metadata a clean previous/new pair: patch and minor
bumps classify correctly and auto-merge, while 2.2.0 -> 3.0.0 still classifies
as major and stays manual. The upper bound's protection is kept, just enforced
by the classification rather than by pip's resolver.

2.2.0 is what `>=2.1.1,<3` resolves to today, so this does not change what the
next build installs — it only removes the drift. The smoke test gates the
image either way.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013fTRMScKCdAXoafoQoD3Hu
@JB09
JB09 merged commit 19a5f7f into main Sep 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants