Přeskočit na obsah
Nástroje 3 min čtení

Modul mcp.server.fastmcp se do SDK vrátil jen proto, aby spadl s odkazem na návod

Přejmenování třídy FastMCP na MCPServer nechalo ve druhé verzi knihovny mcp starý import padat na holé hlášce, ze které se nedalo poznat, že je nainstalovaná jiná hlavní verze. Vydání 2.1.1 z 25. srpna 2026 proto do balíčku vrátilo modul mcp.server.fastmcp, který nemá žádné API a při importu spadne s odkazem na návod k přechodu. O den později přišel týž modul i do už překonané řady 2.0.x.

Sál plný účastníků konference PyCon
Setkání pythonistů PyCon v Dháce, 2014. Knihovna mcp je hlavní cesta, kterou se v Pythonu píšou servery protokolu MCP. Foto: Nasir Khan Saikat, Wikimedia Commons (CC BY-SA 3.0)

Balíček mcp, oficiální knihovna protokolu Model Context Protocol pro Python, dostal ve verzi 2.1.1 jeden nový soubor. Nepřidává funkci ani neopravuje výpočet. Je to modul mcp.server.fastmcp – tedy import, který z knihovny před měsícem zmizel –, a jediné, co umí, je spadnout s lepší hláškou.

Do konce července instaloval příkaz pip install mcp řadu 1. Vydání 2.0.0 z 28. července 2026 to změnilo a spolu s tím přejmenovalo hlavní serverovou třídu: z FastMCP se stal MCPServer a celý strom modulů pod mcp.server.fastmcp se přestěhoval pod mcp.server.mcpserver. Kdo měl v kódu starý import, dostal od Pythonu jeho obvyklou větu: „No module named 'mcp.server.fastmcp'“. Z té se nedá poznat vůbec nic – ani to, že je balíček nainstalovaný, ani že jde o jinou hlavní verzi.

Šestnáct řádků, které nic nedělají

Právě to podle návrhu změny číslo 3388 vedlo k nápravě. Soubor mcp/server/fastmcp.py je krátký, nemá jedinou funkci a při načtení skončí výjimkou ModuleNotFoundError s tímto textem:

„No module named 'mcp.server.fastmcp'. This is mcp 2.x, where FastMCP was renamed to MCPServer (from mcp.server.mcpserver import MCPServer) and other APIs changed; see the migration guide at (…) or pin 'mcp<2' to keep running v1 code.“

Přeloženo: tohle je verze 2, kde se FastMCP jmenuje MCPServer a změnila se i další rozhraní; podívej se do návodu k přechodu, nebo si zamkni mcp pod verzi 2, aby starý kód dál běžel. Volba výjimky není náhodná: zůstává to ModuleNotFoundError, takže kód, který kolem starého importu měl větev except ImportError, funguje dál stejně jako předtím.

Rozsah té změny se dá změřit na souborech ve vydaných kolech na PyPI. Poslední vydání staré řady, 1.29.1, veze pod cestou mcp/server/fastmcp devatenáct souborů. Kolo 2.0.0 nemá ani jeden. Kola 2.0.1 a 2.1.1 mají přesně jeden – ten, který spadne.

Osmdesát jedna hlášení předtím, jedenáct set potom

Kolik projektů na to narazilo, jde odečíst z veřejného vyhledávání GitHubu. Dotaz na doslovnou větu „No module named 'mcp.server.fastmcp'“ vrátil 28. srpna 2026 celkem 1 183 hlášení a návrhů změn. Před 28. červencem, tedy před vydáním 2.0.0, jich vzniklo 81; od toho dne do dne měření 1 102.

Je to vlastní měření přes rozhraní api.github.com/search/issues a má své meze: sčítá hlášení i návrhy změn dohromady, hledá shodu v názvu i v těle a vidí jen veřejné repozitáře. Skutečný počet zasažených projektů je tedy nejspíš jiný. Poměr mezi obdobími ale mění řád, ne desetiny.

Testy projdou, instalace ne

Proč se to nechytlo dřív, popisuje pěkně hlášení u serveru agy-mcp z 27. srpna. Projekt si v pyproject.toml žádá mcp[cli]>=1.21.2 bez horní hranice, takže čerstvá instalace z PyPI stáhne 2.1.1 a server se nespustí. Jeho vlastní testy přitom procházejí: zámek závislostí uv.lock drží mcp na verzi 1.27.1 a oba běhy testů instalují právě z něj. Prostředí, které vadu odhalí, je to jediné, kam se údržbář běžně nedívá – čistý virtuální stroj s instalací podle zveřejněných metadat.

Stejného dne přibylo podobné hlášení u serveru open-notebook-mcp, včetně obchozí cesty, kterou si uživatel poradí sám: spustit nástroj s --with 'mcp<2'. Návrhy změn, které v posledních dnech chodí do desítek dalších repozitářů, dělají v podstatě totéž – buď dopisují horní mez závislosti, nebo přepisují import na nové jméno.

Oprava dorazila i do řady, kterou už nahradila jiná

Nový modul přišel 25. srpna ve verzi 2.1.1. O den později ho správci vydali znovu jako 2.0.1, tedy do starší větve, kterou už mezitím vystřídala 2.1. Poznámka k tomu vydání říká rovnou proč: je to jednorázový zpětný přenos „kvůli tomu, že do téhle chyby padá spousta lidí a zakládají kvůli ní hlášení v cizích repozitářích“. A dodává radu, kterou obsahuje i ta chybová hláška: buď si zamkněte mcp<2, nebo přejděte na dvojku.

Návod k přechodu, na který se to všechno odkazuje, existoval od začátku a je obsáhlý; jen do něj nikdo neměl jak trefit. Vede tabulku, kde je v prvním sloupci změna a ve druhém „první příznak“, podle kterého se pozná – u přejmenování třídy je tím příznakem právě zmíněný ModuleNotFoundError. Od 25. srpna má ten řádek dovětek, že novější vydání dvojky za hlášku připojují i odkaz sem.

Za pozornost stojí ten rozdíl v rychlosti. Samotný protokol MCP si na rušení funkcí dal pravidla s lhůtou nejméně jednoho roku, aby se implementace stihly připravit. Knihovna, kterou se ten protokol v Pythonu píše, žádnou takovou lhůtu nemá – řídí se číslováním verzí, a to dovoluje nekompatibilní změnu kdykoli, když se zvedne první číslo. Mezi obojím stojí soubory pyproject.toml tisíců cizích projektů, ve kterých horní hranice závislosti většinou chybí.

Zdroje: vydání knihovny mcp na GitHubu, návrh změny 3393, návod k přechodu z verze 1 na 2 a obsah kol stažených z PyPI.

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. Nástroje

    Ollama 0.33.1 začala v MLX skutečně vynucovat JSON Schema

    Ollama uměla přijmout JSON Schema i u modelů v MLX, její runner se jím však neřídil. Verze 0.33.1 to mění: XGrammar před každým krokem zakáže tokeny, které by porušily…

  2. Nástroje

    Paseo ovládá z telefonu nativní CLI devětatřiceti agentních nástrojů

    Paseo pouští nativní příkazovou řádku cizích agentních nástrojů na stroji uživatele a ovládat se dá z telefonu, prohlížeče i desktopu. Model si nevybírá: rozhoduje o něm…

  3. Nástroje

    Claude sdílí paměť mezi chatem a cloudovým Coworkem

    Anthropic propojil paměť v chatu s cloudovými úlohami Coworku. Co si Claude uloží při rozhovoru, může použít při samostatné práci a poznatek z Coworku se vrátí do…

  4. Nástroje

    Ollama vypíná v Claude Code odpočet tokenů, protože jí rušil mezipaměť

    Ollama posílá ve vývojové větvi Claude Code novou proměnnou prostředí, po které nástroj přestane do rozhovoru vkládat zprávu s počtem zbývajících tokenů. Ta se totiž při…