Skip to content

fix(ci) pin mcp below its 2.0.0 API rewrite for the agent-e2e mcp-testkit install - #149

Merged
kowser-orkes merged 1 commit into
mainfrom
fix/mcp-testkit-pin
Jul 29, 2026
Merged

fix(ci) pin mcp below its 2.0.0 API rewrite for the agent-e2e mcp-testkit install#149
kowser-orkes merged 1 commit into
mainfrom
fix/mcp-testkit-pin

Conversation

@kowser-orkes

Copy link
Copy Markdown
Contributor

Pull Request type

  • Bugfix
  • Feature
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • WHOSUSING.md
  • Other (please describe):

NOTE: Please remember to run ./gradlew spotlessApply to fix any format violations.

Changes in this PR

  • mcp-testkit's own mcp[cli]>=1.0.0 bound is unbounded upward, and this workflow's Python setup installs nothing else that caps it, so an unpinned install picked up mcp 2.0.0 (released 2026-07-28), which removed mcp.server.fastmcp.FastMCP — every mcp-testkit process in CI has since crashed on startup, surfacing as test_suite4/test_suite5's "not ready on port" timeouts.
  • Pin pip install mcp-testkit "mcp<2.0.0" in .github/workflows/agent-e2e.yml to keep resolving the same mcp 1.x line the tests were passing against.

Issue #

Alternatives considered

Porting mcp-testkit itself to mcp 2.0's new MCPServer API and releasing a new version — larger, separate change in the agentspan-ai/mcp-testkit repo; not needed just to unblock CI.

… install

mcp-testkit's own mcp[cli]>=1.0.0 bound is unbounded upward, and this
Python setup installs nothing else that would cap it -- so an unpinned
`pip install mcp-testkit` picks up whatever mcp is newest on the day
the lane runs.

mcp 2.0.0 (released 2026-07-28) is a real break, not just a rename:
FastMCP moved from mcp.server.fastmcp to mcp.server.mcpserver.MCPServer,
dropped the stateless_http constructor kwarg, and removed the
streamable_http_app()/run() methods mcp-testkit 1.0.3's server.py calls
directly. Every mcp-testkit invocation in CI (the shared instance and
both suite-spawned ones) has been crashing on import since, which
suite4/suite5 report as a 15s "not ready on port" timeout since the
process never comes up at all.

python-sdk's own agent-e2e workflow has the identical unpinned line but
is accidentally shielded: it installs google-adk/openai-agents first,
which pin mcp<2 themselves, so mcp-testkit's install just inherits the
already-resolved 1.x mcp instead of upgrading it. This repo's Python
setup is mcp-testkit-only, so it has no such accidental guard -- pin it
explicitly instead.
@codecov

codecov Bot commented Jul 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Flag Coverage Δ
integration-v4-sm 41.53% <ø> (+0.06%) ⬆️
integration-v5-sdkdev 43.96% <ø> (ø)
unit 73.84% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
see 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@kowser-orkes
kowser-orkes merged commit 2db685f into main Jul 29, 2026
27 of 28 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