Skip to content

fix(deps): mcp <2 (2.0.0 usunęło fastmcp) + wydanie 0.2.0 - #17

Merged
mpasternak merged 2 commits into
mainfrom
fix/mcp-2-upper-bound
Aug 7, 2026
Merged

fix(deps): mcp <2 (2.0.0 usunęło fastmcp) + wydanie 0.2.0#17
mpasternak merged 2 commits into
mainfrom
fix/mcp-2-upper-bound

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Problem

uvx bpp-mcp@latest wywala się na starcie dla każdego nowego użytkownika:

File ".../bpp_mcp/server.py", line 16, in <module>
    from mcp.server.fastmcp import Context, FastMCP
ModuleNotFoundError: No module named 'mcp.server.fastmcp'

mcp 2.0.0 wyszło 28.07.2026 (cztery minuty po 1.29.0) i usunęło moduł mcp.server.fastmcpFastMCP przeniósł się do mcp.server.mcpserver.MCPServer. W 0.1.1 zależność brzmiała mcp[cli]>=1.28.0, bez górnej granicy, więc resolver u użytkownika ciągnął 2.0.0.

Nie jest to problem czyjegoś środowiska — 0.1.1 na PyPI jest niedziałające dla świeżych instalacji.

Dlaczego CI tego nie złapało

Job test idzie przez uv sync, czyli po uv.lock z przypiętym mcp 1.28.1. Testy nigdy nie rozwiązywały zależności tak, jak robi to resolver u kogoś instalującego z PyPI, więc zerwanie API u zależności nie miało jak zapalić czerwonego światła.

Zmiany

  • mcp[cli]>=1.28.0,<2 w pyproject.toml, z komentarzem dlaczego granica musi zostać do czasu portu na MCPServer.
  • Nowy job test-newest-depsuv sync --extra dev --upgrade, czyli rozwiązanie zależności od zera, jak u użytkownika. continue-on-error: true, bo czerwony oznacza tam „ktoś z góry wydał niekompatybilną wersję", a nie „ten PR jest zły". Gdyby istniał wcześniej, złapałby 2.0.0 przed wydaniem 0.1.1.
  • Wydanie 0.2.0 (minor, nie patch) — od v0.1.1 wisi niewydana autodetekcja discovery OAuth (probe_instance, tryb PROXY/PASSTHROUGH, BPP_MCP_ISSUER_URL) oraz paczka .mcpb.

Weryfikacja

  • 204 testy przechodzą zarówno na mcp 1.28.1 z lockfile'a, jak i na 1.29.0 z --upgrade; ruff check + format czyste.
  • Zbudowane koło zainstalowane przez uv tool install (prawdziwy resolver, bez ochrony lockfile'a) → rozwiązuje mcp 1.29.0, a bpp-mcp login dochodzi do właściwej logiki i kończy komunikatem o braku BPP_BASE_URL zamiast ModuleNotFoundError.
  • twine check --strict przechodzi na sdist i wheel.
  • Test dymny po stdio na żywym bpp.umlub.pl: serwer listuje 11 narzędzi, szukaj_autora zwraca prawdziwe dane.
  • Tryb HTTP startuje, wykrywa passthrough i oddaje poprawne 401 z WWW-Authenticate.

Dalej

Zdjęcie <2 to osobna, realna robota: FastMCP siedzi w całym server.py — rejestracja 11 narzędzi, lifespan, _auth_kwargs, własna trasa metadanych AS. mcp.server.auth przeżyło w 2.0.0 (AuthSettings, AccessToken), więc warstwa OAuth przeniesie się w dużej mierze bez zmian.

🤖 Generated with Claude Code

mpasternak and others added 2 commits August 7, 2026 12:59
`mcp` 2.0.0 (28.07.2026, cztery minuty po 1.29.0) wyrzuciło moduł
`mcp.server.fastmcp`; FastMCP przeniósł się do
`mcp.server.mcpserver.MCPServer`. Zależność `mcp[cli]>=1.28.0` nie miała
górnej granicy, więc świeża instalacja z PyPI (`uvx bpp-mcp@latest`)
ciągnęła 2.0.0 i wywalała się na imporcie w `server.py:16`. 0.1.1 było
przez to niedziałające dla każdego nowego użytkownika.

CI tego nie złapało, bo `test` idzie przez `uv sync`, czyli po `uv.lock`
z przypiętym `mcp` 1.28.1, i nigdy nie rozwiązuje zależności tak, jak
resolver u kogoś instalującego z PyPI. Stąd drugi job `test-newest-deps`
(`uv sync --extra dev --upgrade`) — informacyjny, bo czerwony oznacza
tam „ktoś z góry wydał niekompatybilną wersję", a nie „ten PR jest zły".

Zdjęcie `<2` wymaga portu `bpp_mcp.server` na MCPServer: 11 narzędzi,
lifespan, `_auth_kwargs` i własna trasa metadanych AS. `mcp.server.auth`
przeżyło w 2.0.0 (`AuthSettings`, `AccessToken`), więc warstwa OAuth
przeniesie się w dużej mierze bez zmian.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Minor, nie patch: od v0.1.1 wisi niewydana autodetekcja discovery OAuth
(`probe_instance`, tryb PROXY/PASSTHROUGH w `build_mcp`,
`effective_issuer_url` + `BPP_MCP_ISSUER_URL`) oraz paczka `.mcpb`
z przyciskami instalacji. Do tego naprawa rozwiązywania `mcp` <2.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@mpasternak
mpasternak merged commit cf732ba into main Aug 7, 2026
5 checks passed
@mpasternak
mpasternak deleted the fix/mcp-2-upper-bound branch August 7, 2026 11:23
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