From 59f2cb421d80e57992cdce598e96953af182f32e Mon Sep 17 00:00:00 2001 From: Naseem AlNaji Date: Mon, 22 Jun 2026 17:00:45 -0400 Subject: [PATCH] fix(ci): allow transitive prereleases in FastMCP prerelease job MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FastMCP 3.4.0 splits into fastmcp + a transitive fastmcp-slim package. Pinning fastmcp==3.4.0b1 pulls fastmcp-slim==3.4.0b1, a prerelease not named in our pyproject, so `uv sync --prerelease if-necessary-or-explicit` refuses it and dependency resolution fails before any test runs. The nightly prerelease job has failed every night since FastMCP 3.4.0b1 appeared on PyPI. Switch to --prerelease=allow, which is the correct setting for a prerelease-testing job. Verified the full test suite passes against FastMCP 3.4.0b1 (436 passed, 4 skipped, 3 xfailed) — there is no SDK breaking change, only the packaging split. --- .github/workflows/mcp-prerelease-compatibility.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/mcp-prerelease-compatibility.yml b/.github/workflows/mcp-prerelease-compatibility.yml index 7da178a..9fac6f7 100644 --- a/.github/workflows/mcp-prerelease-compatibility.yml +++ b/.github/workflows/mcp-prerelease-compatibility.yml @@ -103,9 +103,14 @@ jobs: - name: Install dependencies with prerelease FastMCP ${{ matrix.fastmcp-version }} run: | - # Install with both dev and community extras, allow prereleases - # FastMCP will determine which MCP version it needs - uv sync --extra dev --extra community --prerelease if-necessary-or-explicit + # Install with both dev and community extras, allow prereleases. + # FastMCP will determine which MCP version it needs. + # Use --prerelease=allow (not if-necessary-or-explicit): FastMCP 3.4+ + # splits into fastmcp + a transitive fastmcp-slim package. Pinning a + # prerelease fastmcp pulls a matching prerelease fastmcp-slim that is + # not named in our pyproject, so if-necessary-or-explicit refuses it + # and resolution fails. "allow" is correct for a prerelease-testing job. + uv sync --extra dev --extra community --prerelease allow - name: Show installed versions run: |