From 23c7a3d5248588cad64100ad61a577c116ca4fd2 Mon Sep 17 00:00:00 2001 From: Justin Paul Date: Tue, 11 Aug 2026 11:15:36 -0400 Subject: [PATCH] =?UTF-8?q?deps:=20pin=20mcp<2=20=E2=80=94=202.0.0=20remov?= =?UTF-8?q?ed=20mcp.server.fastmcp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mcp 2.0.0 moved mcp.server.fastmcp to mcp.server.mcpserver, renamed FastMCP to MCPServer, and drops the [fastmcp] extra this file requests. With no upper bound, the next image rebuild resolves to 2.0.0 and the server crash-loops on import. That is not hypothetical: it happened to zerto-docs on 2026-08-11 at 02:27 UTC and took the server down until the host was rolled back. This repo shares the same unpinned line and would fail identically on its next rebuild. A ceiling, not a migration. The 2.x port is small (the import, the constructor, and stateless_http moving from the constructor to run()) but it changes how tool schemas are emitted, which is what decides tool routing, so it wants a before/after tools/list diff rather than a version bump. --- requirements.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e5873e0..d6771ec 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,11 @@ # MCP server -mcp[fastmcp]>=1.0.0 +# Pinned below 2.0: mcp 2.0.0 removed `mcp.server.fastmcp`, which this +# server imports. The unpinned floor pulled 2.0.0 into a rebuild on +# 2026-08-11 and crash-looped zerto-docs with +# "ModuleNotFoundError: No module named 'mcp.server.fastmcp'". +# 2.0 also drops the [fastmcp] extra. Migrating to the 2.x API is a +# deliberate piece of work — do not lift this pin without it. +mcp[fastmcp]>=1.0.0,<2 pydantic>=2.0 httpx>=0.27