Skip to content

build: raise the measured mcp floor to >=1.21.1 — pydantic 2.14 broke 1.17–1.21.0 (#271) - #272

Merged
DustinTrap merged 1 commit into
mainfrom
fix/271-mcp-floor-1.21.1
Oct 14, 2026
Merged

DustinTrap merged 1 commit into
mainfrom
fix/271-mcp-floor-1.21.1

Conversation

@DustinTrap

Copy link
Copy Markdown
Owner

Closes #271.

Every PR since 2026-10-11 fails mcp-majors (mcp==1.17.0) at collection: pydantic 2.14 removed pydantic._internal._typing_extra.eval_type_backport, which mcp.server.fastmcp imports at module load in 1.17.0–1.21.0. Nothing in this repo changed; main was green on 2026-09-21.

Measured in a clean uv venv (py3.12, pydantic 2.14.1): 1.17.0–1.21.0 break, 1.21.1 is the first 1.x that imports, 1.30.0 and 2.3.0 are fine. With pydantic 2.13.5 pinned, 1.17.0 still imports — so this is a neighbour moving, not mcp.

  • pyproject: mcp>=1.21.1,<3 (+ the measured-floor comment updated with the why)
  • ci.yml: floor leg pins mcp==1.21.1, 1.x range leg >=1.21.1,<2
  • mcp/README.md, CLAUDE.md, CHANGELOG Unreleased

Why not pin pydantic<2.14 inside the CI leg: that keeps advertising a floor a fresh pip install kvm-pilot cannot honor — the same fiction #241/#242 removed.

Local: ruff, mypy, bandit green; MCP suite (test_mcp_server, test_mcp_sdk_shim, test_act) passes in a clean venv at exactly mcp==1.21.1 + pydantic 2.14.1.

🤖 Generated with Claude Code

…1.17–1.21.0) (#271)

pydantic 2.14.0/2.14.1 removed the private eval_type_backport helper that mcp.server.fastmcp imports at module load in 1.17.0 through 1.21.0, so the floor leg (and any fresh install resolving the floor) stopped importing on 2026-10-11 with no change in this repo. Bisected in a clean venv against pydantic 2.14.1: 1.21.1 is the first 1.x that imports; newest 1.x and 2.x are unaffected.

Same lesson as #256/#242: a range spec resolves newest, so a declared floor is only true while its neighbours stay put — move the floor, do not pin the neighbour in CI and keep advertising a bound pip cannot honor.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 14, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

Next included review available in 53 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available. Your 95 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Team
  • Run ID: 8c5c3a23-1411-45eb-851d-5c853d2b1105
📥 Commits

Reviewing files that changed from the base of the PR and between d0a5b82 and 7aaaf5b.

📒 Files selected for processing: 5
  • .github/workflows/ci.yml
  • CHANGELOG.md
  • CLAUDE.md
  • pyproject.toml
  • src/kvm_pilot/mcp/README.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@DustinTrap
DustinTrap merged commit 47d6b35 into main Oct 14, 2026
12 checks passed
@DustinTrap
DustinTrap deleted the fix/271-mcp-floor-1.21.1 branch October 14, 2026 20:18
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.

CI: mcp-majors floor leg (mcp==1.17.0) broken by pydantic 2.14 — floor must move to 1.21.1

1 participant