Skip to content

chore: pin mcp>=1.28.1,<2 ahead of MCP Python SDK v2 stable release#5840

Open
Altamimi-Dev wants to merge 1 commit into
IBM:mainfrom
Altamimi-Dev:5839-pin-mcp-below-2
Open

chore: pin mcp>=1.28.1,<2 ahead of MCP Python SDK v2 stable release#5840
Altamimi-Dev wants to merge 1 commit into
IBM:mainfrom
Altamimi-Dev:5839-pin-mcp-below-2

Conversation

@Altamimi-Dev

@Altamimi-Dev Altamimi-Dev commented Jul 24, 2026

Copy link
Copy Markdown

Pull Request

🔗 Related Issue

Closes #5839


📝 Summary

Adds a protective <2 upper bound to the mcp dependency across all first-party manifests ahead of the MCP Python SDK v2 stable release (targeted 2026-07-27/28), which is a major rework with pervasive breaking changes (FastMCP→MCPServer rename, mcp.types split-out, WebSocket transport removal). Every shipped manifest is bounded to mcp>=1.28.1,<2 and uv.lock is regenerated; resolution is unchanged and stays on the 1.28.x line. fastmcp needs no change — its own mcp dependency is intersected with our direct <2 pin, so our bound constrains the whole resolution.

The cookiecutter template (mcp-servers/templates/python/...) was also bounded (mcp>=1.0.0,<2) for consistency, keeping its lower floor. The v2 migration itself is explicitly out of scope per the issue — this is a purely protective packaging change.


📏 Reviewability

  • This PR has one clear purpose
  • The linked issue is not labeled triage
  • Unrelated bugs or improvements are tracked in separate issues/PRs
  • Tests are included with the code they validate
  • If AI-assisted, I understand and can explain the generated changes

🏷️ Type of Change

  • Bug fix
  • Feature / Enhancement
  • Documentation
  • Refactor
  • Chore (deps, CI, tooling)
  • Other (describe below)

🧪 Verification

Check Command Status
Manifest sweep (exactly 8 bounded lines, none unbounded) grep -rEn 'mcp(>=|==|~=|>)[0-9]' --include='*.toml' --include='*.txt' ... ✅ 8 lines, all ,<2
Lock regenerated uv lock ✅ Resolved 376 packages
Lock — bounded specifier present grep -c 'specifier = ">=1.28.1,<2"' uv.lock ✅ 1
Lock — mcp stays on 1.x grep -A1 '^name = "mcp"$' uv.lock | grep version version = "1.28.1"
Runtime import smoke uv sync --extra plugins && uv run python -c "import mcp, mcp.types; ..." mcp 1.28.1 OK
Unit tests make test ✅ 20847 passed, 795 skipped, 2 xfailed

Only the resolved-graph metadata changed (mcp specifier); resolved package versions are identical, so the change is runtime-neutral today. Container build is covered by CI — the resolved graph is unchanged so the build cannot differ.


✅ Checklist

  • Code formatted (make black isort pre-commit)
  • Tests added/updated for changes
  • Documentation updated (N/A — no docs reference the unbounded pin)
  • No secrets or credentials committed

📓 Notes

uv.lock also shows deterministic byproduct churn from the repo's own exclude-newer-span = "P10D" config re-resolving on lock (an absolute exclude-newer timestamp and a couple of transitive marker refinements). No resolved package version changed.

The MCP Python SDK v2 stable release (targeted 2026-07-27/28) is a major
rework with pervasive breaking changes (FastMCP rename, mcp.types split,
WebSocket transport removal). Upstream guidance is to add a <2 upper bound
before the release. Bound every first-party manifest and regenerate uv.lock;
resolution stays on the 1.28.x line. fastmcp needs no change: its own mcp
dependency is intersected with our direct <2 pin.

Closes IBM#5839

Signed-off-by: Ahmad Al Tamimi <altamimi.dev@gmail.com>
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.

[CHORE]: MUST pin mcp>=1.28.1,<2 before MCP Python SDK v2 stable release (2026-07-27/28)

1 participant