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

Python SDK pro MCP už nenásleduje přesměrování na jiný server

MCP Python SDK 2.2.0 už nenásleduje přesměrování na jiný server, protože by na něj mohl znovu poslat přihlašovací údaje i tělo požadavku. Vydání ze 7. září také zpřísnilo kontrolu OAuth a nastavilo limity pro starší stavové relace.

MCP Python SDK 2.2.0 vyšel 7. září. Poznámky k vydání začínají čtyřmi změnami chování, nikoli novými metodami pro nástroje. Nejvýraznější z nich omezuje, kam smí HTTP klient následovat přesměrování.

Síťový přepínač se zapojenými ethernetovými kabely
Síťový přepínač se zapojenými kabely. Foto: Raysonho @ Open Grid Scheduler / Grid Engine, Wikimedia Commons (CC0)

Stejný server ano, jiný už ne

Klient dál přijme relativní přesměrování a adresu se stejným protokolem, hostitelem i portem. Povolí také přechod z HTTP na HTTPS u stejného hostitele, pokud obě adresy používají výchozí port. Přesměrování na jinou doménu, subdoménu nebo port odmítne. Totéž platí pro návrat z HTTPS na nešifrované HTTP.

U požadavku POST se zachováním metody následuje jen kódy 307 a 308. Kódy 301, 302 a 303 by běžný HTTP klient mohl zopakovat jako GET bez těla, což se pro zprávu MCP nehodí. U GET může SDK následovat i ostatní přesměrování, pořád však pouze uvnitř stejného původu.

Předchozí chování záviselo na tom, kdo HTTP klienta vytvořil. Výchozí klient SDK následoval všechna přesměrování, zatímco vlastní klient vývojáře je bez volby follow_redirects=True nenásledoval. Změna číslo 3397 přesunula rozhodování do transportu MCP. Nastavení follow_redirects na předaném klientovi už tato pravidla nerozšíří.

Původní hlavičky už necestují za cizí adresou

Při volném následování mohl server odpovědět hlavičkou Location s cizí adresou. Klient by na ni podle popisu změny poslal znovu hlavičky, přihlášení i tělo určené původnímu koncovému bodu a odpověď by považoval za odpověď serveru MCP. Autoři k tomu nepřiřadili CVE a poznámky nemluví o známém zneužití. Jde o zpřísnění výchozího chování a současně o nekompatibilní změnu pro služby, které záměrně přesměrovávají jinam.

Doporučení OWASP k ochraně před SSRF radí automatické následování přesměrování v HTTP klientovi vypnout, protože se jím dají obejít kontroly vstupní adresy. Python SDK volí méně přísnou variantu: běžné přesuny uvnitř jednoho serveru zachová, odchod na jiný původ zastaví.

Odmítnuté přesměrování ukončí konkrétní volání chybou MCPError; rozběhnutá relace zůstane použitelná. Výjimkou je počáteční připojení přes starší SSE, které skončí chybou HTTP. Pokud je cílová adresa skutečně správný server, vydání radí zadat ji rovnou jako koncový bod místo spoléhání na přesměrování.

OAuth musí poznat svého vydavatele

Druhá sada změn se týká autorizačních metadat. Klient už i na starší cestě bez metadat chráněného prostředku kontroluje pole issuer. Když v dokumentu stojí jiný vydavatel než původ očekávaný klientem, přihlášení skončí chybou OAuthFlowError. Návrh s kontrolou vydavatele se odvolává na oddíl 3.3 RFC 8414, podle kterého se neshodující metadata nesmějí použít.

Výpadek při načítání metadat se také přestal tvářit jako jejich nepřítomnost. Odpověď 429 nebo chyba řady 5xx nyní autorizační tok zastaví; klient už po ní nespadne na starší výchozí adresy. Poskytovatelé s předem přidělenými údaji dostali volitelný parametr issuer. Ve verzi 3.0 má být povinný.

Serverová strana umí nově zapnout validate_token_resource. Ověřovatel tokenu pak musí uvést, že token vznikl právě pro adresu tohoto serveru; token pro jiný prostředek nebo bez této vazby dostane odpověď 401. Implementace kontroly prostředku ji ve 2.2.0 ponechává vypnutou kvůli rozdílným identifikátorům u poskytovatelů identity. Nenastavená volba ale vyvolá varování a verze 3.0 ji má zapnout jako výchozí.

Opuštěná relace zmizí po půl hodině

Verze 2.2.0 mění i životní cyklus stavových relací staršího přenosu Streamable HTTP. Relace bez rozpracovaného požadavku se po 1 800 sekundách ukončí a další požadavek na její identifikátor dostane stav 404. Otevřený proud GET nebo dlouhé volání nástroje časovač zastaví, takže aktivní práce uprostřed běhu neskončí.

Jeden proces drží ve výchozím stavu nejvýš 10 000 relací. Další inicializaci odmítne stavem 503 a žádnou starší relaci kvůli ní nevyhodí. Smazání klientem uvolní místo okamžitě. Bezstavové servery a spojení podle revize protokolu z 28. července 2026 tento limit nepotřebují, protože relace neuchovávají.

Podobný problém řešila v srpnu Spring AI 2.0.1, ale s jinými výchozími hodnotami: 100 000 relací a vypnuté ukončování po nečinnosti. Python SDK nastavilo desetinu tohoto počtu a časovač zapnulo. Obě knihovny dovolují limit i čas změnit nebo vypnout; konkrétní nasazení si proto musí hodnoty srovnat s počtem klientů a dostupnou pamětí.

Povýšení může odkrýt skryté přesměrování

Správce serveru za reverzní proxy by měl po aktualizaci ověřit konečnou adresu, návratové kódy a protokol. Přesměrování z /mcp na /mcp/ na témže serveru projde. Přechod na jiného hostitele nebo nestandardní port už ne, i když dříve fungoval.

Testy, které převádějí varování na chyby, mohou spadnout i bez síťového problému. Stačí nenastavený issuer u strojového OAuth nebo chybějící rozhodnutí o validate_token_resource. Vydání 2.2.0 ještě zachovává staré chování těchto dvou voleb, ale žádá výslovnou volbu před řadou 3.0. Přechod proto není pouhá výměna čísla balíčku.

Zdroje

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

    Filtr proměnných prostředí v lokálním sandboxu Agents SDK se musí zapnout ručně

    Knihovna openai-agents vydala 8. září verzi 0.22.1 s možností omezit, které proměnné prostředí hostitele uvidí příkaz spuštěný agentem. Zapíná se ručně; bez toho příkaz…

  2. Nástroje

    Ollama ohlásila modely v ChatGPT Desktopu jako novinku, příkaz na ně má od května

    Testovací verze Ollamy 0.34.0-rc1 z 5. září má v poznámkách jako první bod používání modelů Ollamy v ChatGPT Desktopu. Příkaz na to je v projektu od května, nové je…

  3. Nástroje

    Codex zapne experimentální správu kontextu jen třem z šestnácti tarifů ChatGPT

    Codex 0.153.0 vyšel 3. září 2026 a přidal vypnutou položku features.context_management.experimental_mode. Zapíná rozpočet tokenů, poznámky k historii a nástroj new…

  4. Nástroje

    Pydantic AI 2.37 už váže volání nástroje k oznámené zprávě

    Pydantic AI při odpovědi tvořené jen voláním nástroje posílala odkaz na zprávu, kterou proud AG-UI nikdy nezahájil. Verze 2.37.0 přidává prázdný pár začátku a konce…