From e5ec32bff6258c51b8637d67d4b7694bd065364f Mon Sep 17 00:00:00 2001 From: claude Date: Thu, 10 Sep 2026 14:06:29 -0400 Subject: [PATCH] =?UTF-8?q?fix(deps):=20pin=20mcp<2=20=E2=80=94=20prod=20h?= =?UTF-8?q?as=20been=20crash-looping=20since=202026-09-01=20(#22)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: claude --- .gitea/workflows/image-only.yml | 7 +++++++ .gitea/workflows/refresh.yml | 7 +++++++ requirements.txt | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/image-only.yml b/.gitea/workflows/image-only.yml index 9d507d53..a6d30c2e 100644 --- a/.gitea/workflows/image-only.yml +++ b/.gitea/workflows/image-only.yml @@ -96,6 +96,13 @@ jobs: -t "${REGISTRY_PUSH}/${IMAGE}:${SHA_TAG}" \ -t "${REGISTRY_PUSH}/${IMAGE}:${CORPUS_TAG}" \ . + # Smoke: the image must at least import its server module before we + # publish it. mcp 2.x renamed mcp.server.fastmcp -> mcp.server.mcpserver, + # so an unpinned dep produced a green build that crash-looped in prod + # for 9 days (2026-09-01 -> 09-10). Import is side-effect-free here + # (lazy singletons), so this needs no Ollama/Chroma. + docker run --rm --entrypoint python \ + "${REGISTRY_PUSH}/${IMAGE}:latest" -c "import docs_mcp.server" docker push "${REGISTRY_PUSH}/${IMAGE}:latest" docker push "${REGISTRY_PUSH}/${IMAGE}:${SHA_TAG}" docker push "${REGISTRY_PUSH}/${IMAGE}:${CORPUS_TAG}" diff --git a/.gitea/workflows/refresh.yml b/.gitea/workflows/refresh.yml index e32c9b0f..4702c8ab 100644 --- a/.gitea/workflows/refresh.yml +++ b/.gitea/workflows/refresh.yml @@ -179,6 +179,13 @@ jobs: -t "${REGISTRY_PUSH}/${IMAGE}:${SHA_TAG}" \ -t "${REGISTRY_PUSH}/${IMAGE}:${CORPUS_TAG}" \ . + # Smoke: the image must at least import its server module before we + # publish it. mcp 2.x renamed mcp.server.fastmcp -> mcp.server.mcpserver, + # so an unpinned dep produced a green build that crash-looped in prod + # for 9 days (2026-09-01 -> 09-10). Import is side-effect-free here + # (lazy singletons), so this needs no Ollama/Chroma. + docker run --rm --entrypoint python \ + "${REGISTRY_PUSH}/${IMAGE}:latest" -c "import docs_mcp.server" docker push "${REGISTRY_PUSH}/${IMAGE}:latest" docker push "${REGISTRY_PUSH}/${IMAGE}:${SHA_TAG}" docker push "${REGISTRY_PUSH}/${IMAGE}:${CORPUS_TAG}" diff --git a/requirements.txt b/requirements.txt index 78d7261c..79bbb463 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # MCP server -mcp[fastmcp]>=1.0.0 +mcp[fastmcp]>=1.0.0,<2 # 2.x removed mcp.server.fastmcp (FastMCP -> MCPServer); see docs_mcp/server.py pydantic>=2.0 httpx>=0.27