Skip to content

fix(hermes-image): pin mcp SDK to 1.29.0, below the 2.0.0 breaking rework - #49

Closed
BuckG71 wants to merge 2 commits into
mainfrom
fix/pin-mcp-sdk-below-2.0
Closed

BuckG71 wants to merge 2 commits into
mainfrom
fix/pin-mcp-sdk-below-2.0

Conversation

@BuckG71

@BuckG71 BuckG71 commented Aug 1, 2026

Copy link
Copy Markdown
Owner

What

whizzard/_dockerfiles/Dockerfile.hermes installed mcp unpinned. mcp 2.0.0 shipped on PyPI on 2026-07-28 as a breaking rework that drops the mcp.server.fastmcp module. mcp_server.py (the in-cell Whiz MCP cooperation layer, D-167) imports from that module, so any image built after 2026-07-28 fails at runtime:

ModuleNotFoundError: No module named 'mcp.server.fastmcp'

Pins the install to mcp==1.29.0, the last 1.x release.

Why

Caught by the daily CI/Dependabot monitor: PR #48's "Integration (real Docker)" job failed on tests/integration/test_mcp_stdio_smoke.py::test_mcp_server_speaks_its_protocol_end_to_end with the error above. PR #48 is docs-only, so the break is pre-existing on main (image build is unpinned there too) and just happened to surface on that PR's freshly-built image — it isn't caused by that PR's diff.

Verification

  • make lint passes.
  • Could not run make integration / rebuild the image in this sandbox — no Docker daemon is available here (dockerd fails to start under the sandbox's restricted privileges). The fix is a version pin only (no code change), and 1.29.0 is confirmed available on PyPI as the last pre-2.0 release. Recommend confirming green on this PR's own CI run, which does have Docker.

cc @BuckG71


Generated by Claude Code

…work

mcp 2.0.0 (PyPI, 2026-07-28) is a major rework that drops the
mcp.server.fastmcp module mcp_server.py imports (FastMCP moved to the
standalone `fastmcp` package). The image install was unpinned, so any
fresh build now pulls 2.0.0 and mcp_server.py fails at import time:

    ModuleNotFoundError: No module named 'mcp.server.fastmcp'

This breaks tests/integration/test_mcp_stdio_smoke.py::test_mcp_server_speaks_its_protocol_end_to_end
(seen failing on PR #48's Integration (real Docker) job, unrelated to
that PR's docs-only diff). Pin to 1.29.0, the last 1.x release, until
the mcp_server.py cell layer is migrated to the new API.
…base64 text literally)

The prior commit on this branch passed already-base64-encoded content to
the Contents API write, but this tool base64-encodes internally — so the
file ended up containing the base64 string as literal text instead of the
Dockerfile. That broke the image build outright (invalid Dockerfile
syntax), which is what failed CI on this PR. This commit writes the
actual Dockerfile content: Hermes install unchanged, `mcp` pinned to
1.29.0 as intended.
@BuckG71
BuckG71 marked this pull request as ready for review August 1, 2026 15:16
@BuckG71

BuckG71 commented Aug 4, 2026

Copy link
Copy Markdown
Owner Author

Superseded by #52, which pins mcp<2 in both install sites — the host (pyproject.toml) and the cell (whizzard/_dockerfiles/Dockerfile.hermes). This PR pins only the cell, so #52 is the complete fix and is already CLEAN/green. Closing in favor of #52.

@BuckG71 BuckG71 closed this Aug 4, 2026
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.

1 participant