Denva / Články / Zranitelnost MCP SDK: sedm oprav z října 2026 a co změnit v kódu vlastního MCP serveru
Automatizace a AI

Zranitelnost MCP SDK: sedm oprav z října 2026 a co změnit v kódu vlastního MCP serveru

· 12 min čtení
Zranitelnost MCP SDK: sedm oprav z října 2026 a co změnit v kódu vlastního MCP serveru

Od 30. září do 15. října 2026 zveřejnili správci oficiálního MCP SDK pro TypeScript sedm bezpečnostních upozornění, pět z nich s vysokou závažností, a u čtyř samotná aktualizace balíčku nemusí stačit. Pokud firma provozuje vlastní MCP server dostupný přes HTTP, přes který AI asistent sahá na interní data, týká se jí i zranitelnost MCP SDK, při které server mohl doručit odpověď jednoho klienta jinému. Oprava ve verzi 2.3.0 balíčku @modelcontextprotocol/server vyžaduje i změnu kódu. Lokálních serverů přes stdio se serverové chyby netýkají.

Širší rámec toho, co se ve firmě vyplatí automatizovat, najdete v našem průvodci AI automatizací firemních procesů. Webhooky, přístupy a API klíče v automatizačních tocích rozebírá článek o bezpečnosti automatizací. Tady řešíme jednu konkrétní knihovnu a to, co s ní udělat ještě tento týden. Pokud chcete MCP server nebo integraci s AI nechat zkontrolovat někým, kdo je staví, podívejte se na naši službu automatizace firemních procesů.

Koho se zranitelnost MCP SDK týká a koho ne

Zasažený je projekt, který používá MCP SDK pro TypeScript a jehož server nebo klient komunikuje přes HTTP; servery spouštěné jen lokálně přes stdio se serverových chyb netýkají.

MCP (Model Context Protocol) je protokol, přes který se AI aplikace připojuje k nástrojům a datům. Server nabízí nástroje, například vyhledání objednávky, a klient je aplikace s AI modelem, která je volá. Specifikace MCP ve verzi 2026-07-28 zná dva standardní způsoby přenosu. U stdio spouští server přímo klientská aplikace jako podproces na stejném počítači. U Streamable HTTP běží server jako samostatná služba s jednou adresou a každou zprávu přijímá jako HTTP požadavek, takže se k němu může připojit více klientů.

Pro firmu z toho vyplývají tři situace:

  • vlastní MCP server dostupný přes HTTP, například nasazený na serveru nebo v cloudu, aby k interním datům mohlo přistupovat více lidí: týkají se ho chyby se sdílenou instancí, ověřováním tokenů a velikostí požadavků,
  • vlastní aplikace nebo skript, který se přes SDK připojuje k MCP serverům přes HTTP a přihlašuje se přes OAuth nebo API klíč: týkají se ho dvě chyby klienta, při kterých mohly přihlašovací údaje odejít na cizí adresu,
  • server spouštěný jen lokálně přes stdio, například z desktopové AI aplikace: serverové chyby se ho netýkají a aktualizaci můžete udělat při běžné údržbě.

Verzi zjistíte v souboru package.json nebo příkazem npm ls ve složce projektu. Větev 1.x je jeden balíček @modelcontextprotocol/sdk. Větev 2.x je rozdělená na samostatné balíčky @modelcontextprotocol/server, @modelcontextprotocol/client a adaptéry pro Express, Node a Hono. Když ve výpisu nenajdete žádný balíček @modelcontextprotocol, tato upozornění se vašeho projektu netýkají. Když ho najdete, pokračujte tabulkou níže.

Vlevo jedno zařízení propojené s jedním procesem uvnitř uzavřeného rámu, vpravo otevřený uzel s oranžovou značkou, ke kterému vedou čáry z mnoha zařízení
Lokální server přes stdio poslouchá jen jednu aplikaci, server přes HTTP přijímá požadavky od více klientů.

MCP server, který má svého správce

Pokud nevíte, na jaké verzi váš MCP server běží a kdo ho aktualizuje, podívejte se, jak integrace s AI navrhujeme, stavíme a předáváme zdokumentované.

Sedm upozornění MCP SDK v jedné tabulce

Pět upozornění se týká serveru a dvě klienta; všechny chyby ve větvi 1.x opravuje verze 1.32.0 balíčku @modelcontextprotocol/sdk.

Všech sedm upozornění je zveřejněných v části bezpečnostních upozornění repozitáře MCP TypeScript SDK na GitHubu. Každé obsahuje dotčené verze, opravené verze a to, zda je kromě aktualizace potřeba změnit i kód.

Co se mohlo státStranaZávažnost (CVSS)Opravená verzeStačí aktualizace?
Sdílená instance serveru doručila odpověď jednoho klienta jinémuserver 2.xvysoká, 7,7server 2.3.0ne, je potřeba změnit kód
Server přijal token vydaný pro jinou službuserverstřední, 6,8sdk 1.32.0, server 2.3.0, express 2.0.2ne, je potřeba zapnout kontrolu audience
Jeden požadavek v limitu 4 MiB vyčerpal paměť serveruservervysoká, 7,5sdk 1.32.0, server 2.3.0ne, je potřeba nastavit limity
Chyběl limit velikosti požadavku a délky dávkyservervysoká, 7,5sdk 1.30.1, server a node 2.1.0, hono 2.0.1ano
Experimentální úlohy nebyly vázané na session, která je vytvořilaserver 1.xvysoká, 8,6sdk 1.32.0ano, případně odstranit taskStore
OAuth klient poslal přihlašovací údaje autorizačnímu serveru, který vybral MCP serverklientvysoká, 7,5sdk 1.31.0, client 2.2.0ne vždy, záleží na nastavení a uložených tokenech
Klient při přesměrování na jinou doménu znovu poslal hlavičky a tělo požadavkuklientstřední, 6,5sdk 1.32.0, client 2.3.0ano, při podezření vyměnit klíče
Stav k říjnu 2026, podle bezpečnostních upozornění v repozitáři modelcontextprotocol/typescript-sdk na GitHubu.

K 22. říjnu 2026 jsou na npm nejnovější verze 1.32.1 pro @modelcontextprotocol/sdk a 2.3.1 pro server i client. Žádné ze sedmi upozornění neuvádí, že by chybu někdo zneužil. U dvou chyb s pamětí serveru však podle upozornění útočník nepotřebuje přihlašovací údaje, pokud server neověřuje požadavky dřív, než se dostanou k SDK. Dokud aktualizaci odkládáte, server může spadnout po jediném požadavku od kohokoli, kdo se k jeho adrese dostane.

Kde aktualizace nestačí: čtyři změny v kódu

U sdílené instance serveru, ověřování tokenů, limitu vstupů a OAuth klienta musí vývojář po aktualizaci upravit i kód nebo nastavení.

Jeden server pro všechny klienty

Upozornění GHSA-jm63-cq47-j5jp popisuje kód, který vytvoří transport nebo server jednou při startu aplikace a všechny HTTP požadavky posílá přes něj. SDK přiřazovalo zprávy ke spojení jen podle JSON-RPC id. Klienti SDK číslují požadavky od nuly, takže se tato id při běžném provozu shodují a odpověď s údaji jednoho uživatele mohla odejít jinému. Přesně tento vzor do vydání opravy ukazovaly příklady v README adaptérů pro Hono, Express, Fastify a Node. Server, který podle nich napsal člověk nebo AI nástroj, proto zkontrolujte jako první.

Verze 2.3.0 sdílení odmítne: druhé připojení skončí chybou ALREADY_CONNECTED a bezstavový transport odmítne druhý požadavek. Takový server po samotné aktualizaci přestane odpovídat. Kód je potřeba upravit tak, aby vytvářel nový server pro každý požadavek, nebo jeden server a jeden transport pro každou session. Větev 1.x má stejný typ chyby opravený od verze 1.26.0 ze 4. února 2026.

Černý server posílá obálky dvěma krychlím pod sebou a oranžová obálka míří po zkřížených cestách k nesprávné krychli
U sdílené instance serveru mohla odpověď určená jednomu klientovi skončit u druhého.

Token vydaný pro jinou službu

Když jeden autorizační server vydává tokeny pro více služeb, MCP server s funkcí requireBearerAuth() nebo verifyBearerToken() přijal i platný token určený jiné službě. Část specifikace o bezpečnostních postupech v MCP přitom říká, že server nesmí přijmout token, který nebyl vydán pro něj. Opravené verze přidávají nastavení expectedResource, které je ve výchozím stavu vypnuté. Je potřeba ho zapnout a zároveň vracet audience tokenu z verifyAccessToken(). Pokud uděláte jen první změnu, server odmítne každý požadavek s kódem 401. Na starších verzích problém uzavře verifyAccessToken(), který sám odmítne token, pokud jeho aud váš server neobsahuje.

Limit velikosti vstupu

Jeden požadavek ve výchozím limitu 4 MiB mohl při ověřování vstupu vyčerpat paměť a proces skončil chybou JavaScript heap out of memory. Riziko je podle upozornění GHSA-46jr-4wx8-v453 nejvyšší u nástrojů, jejichž vstup obsahuje pole nebo záznam. Nová volba maxToolInputElements je ve výchozím stavu vypnutá, proto ji nastavte těsně nad největší vstup, který vaše nástroje potřebují, a zároveň snižte maxRequestBodySize. Pokud tělo požadavku zpracováváte sami, například přes express.json(), nastavte limit i tam.

OAuth klient a staré uložené tokeny

Klient postavený na SDK mohl poslat refresh_token a client_secret autorizačnímu serveru, který si vybral MCP server. Oprava ukládá k přihlašovacím údajům i issuer, tokeny uložené před aktualizací ho ale nemají. Doplňte ho k nim, nebo je smažte, aby se uživatelé přihlásili znovu. Hotovým poskytovatelům, například ClientCredentialsProvider, je potřeba předat expectedIssuer. Pokud se klient mohl připojit k serveru, kterému nedůvěřujete, upozornění doporučuje vyměnit client secret nebo podpisový klíč a zrušit vydané tokeny.

U ověřování tokenů a limitu vstupů platí, že bez těchto změn uvidíte v package.json opravenou verzi, ale server se chová stejně jako před aktualizací.

Postup pro firmu: šest kroků na tento týden

Zjistěte, kdo server spravuje, ověřte verze, aktualizujte na testovací kopii, upravte kód, otestujte server se dvěma klienty najednou a při podezření vyměňte klíče.

  1. Sepište všechny MCP servery a klienty ve firmě a ke každému člověka, který ho spravuje. Patří sem i prototypy, které někdo postavil s AI nástrojem a nechal běžet.
  2. V každém projektu spusťte npm ls a hledejte balíčky @modelcontextprotocol. Ve větvi 1.x je cílem alespoň 1.32.0, ve větvi 2.x server a client alespoň 2.3.0 a adaptéry podle tabulky.
  3. Aktualizujte nejdřív testovací kopii, ne ostrý server. Server se sdílenou instancí po aktualizaci přestane odpovídat, dokud se neupraví kód.
  4. Udělejte změny z předchozí části: server pro každý požadavek nebo session, kontrolu audience, nastavení maxToolInputElements a maxRequestBodySize, issuer u OAuth. Pokud kód používá experimentální taskStore, odstraňte ho, protože specifikace 2026-07-28 ho nahradila novým rozšířením.
  5. Otestujte server se dvěma klienty současně a ověřte, že každý dostává jen své odpovědi. Pošlete i požadavek větší než 4 MiB a ověřte, že ho server odmítne kódem 413 a nespadne.
  6. Pokud se klient mohl připojit k serveru mimo vaši kontrolu nebo ho tam mohlo poslat přesměrování, vyměňte API klíče a client secret a zrušte vydané tokeny.
Věž z černých kvádrů, do jejíž spodní části se zasouvá nový oranžový kvádr, a vedle ní visací zámek s klíčem
Nová verze balíčku je jen první krok, po ní přicházejí změny v kódu a výměna klíčů.

Podobnou situaci jsme popisovali u změny přístupů v Supabase Data API: aplikace funguje, dokud se nezmění knihovna nebo služba pod ní, a pak rozhoduje, zda ji někdo ve firmě umí upravit. Server bez správce zůstane na staré verzi i se všemi chybami, které se ho týkají.

Zranitelnost MCP SDK v praxi: kdo za server odpovídá

Podle nás je největším rizikem MCP server, který vznikl jako rychlý pokus a nemá člověka, který by ho aktualizoval.

U automatizací v menších firmách v praxi vídáme toky, které vznikly jako pokus a zůstaly běžet. U MCP serverů hrozí totéž, jen s větším dosahem, protože server zpřístupňuje AI asistentovi objednávky, faktury nebo údaje zákazníků. Pokud server pracuje s osobními údaji, odpověď doručená nesprávnému klientovi znamená, že se tyto údaje dostaly k jinému uživateli. Kontrolu, komu údaje patří, dělá server. Jak s dodanými údaji potom pracuje samotný model, vysvětlujeme v článku co je LLM a co AI opravdu neumí.

Před stavbou vlastního serveru si proto položte otázku, zda ho opravdu potřebujete. Pokud potřebujete jen propojit dva běžné nástroje, může stačit automatizační platforma, kterou aktualizuje její provozovatel. Srovnání najdete v článku o automatizacích pro malé firmy přes n8n a Make.

Jak to řešíme v Denvě: integrace napojujeme přes oficiální rozhraní nástrojů a přístupy držíme na nezbytném minimu. Kritické kroky nastavíme tak, aby vás chyba upozornila hned, a řešení předáme zdokumentované, abyste mu rozuměli a nebyli na nás vázaní.

Kdy to zvládnete sami a kdy s námi

Zvládnete sami, pokud:

  • server spravuje vývojář, který ho napsal a zná jeho kód,
  • používáte jen lokální servery přes stdio v desktopové AI aplikaci,
  • aktualizace prošla na testovací kopii a server odpovídá dvěma klientům najednou správně.

Vyplatí se přizvat nás, pokud:

  • server postavil AI nástroj nebo externí dodavatel a nikdo ve firmě jeho kód nezná,
  • server pracuje s objednávkami, fakturami nebo osobními údaji zákazníků,
  • klient se přihlašuje přes OAuth a není jasné, které tokeny a klíče je potřeba vyměnit.

Závěr

Pokud v projektech nemáte žádný balíček @modelcontextprotocol, nemusíte dělat nic. Lokální server přes stdio aktualizujte při nejbližší údržbě. Pokud přes HTTP běží MCP server, který pracuje s firemními nebo osobními údaji, aktualizace a čtyři změny v kódu patří do tohoto týdne, nejdřív na testovací kopii a pak s testem dvou klientů najednou. Server bez správce nechte někoho převzít, nebo ho vypněte, dokud se tak nestane.

Nevíte, zda je váš MCP server v pořádku?

Napište nám, co váš MCP server nebo integrace s AI dělá a kdo ji postavil, a projdeme s vámi verze, kód i přístupy.

FAQ

Časté otázky.

Týká se zranitelnost MCP SDK i lokálních serverů přes stdio?

Serverových chyb ne. Upozornění na sdílenou instanci, vyčerpání paměti a chybějící limit požadavků výslovně uvádějí, že servery jen přes stdio zasažené nejsou, a obě chyby klienta se netýkají klientů přes stdio. Aktualizaci na opravenou verzi přesto doporučujeme při nejbližší údržbě.

Na jakou verzi MCP SDK je potřeba aktualizovat?

Ve větvi 1.x alespoň na @modelcontextprotocol/sdk 1.32.0, ve větvi 2.x na server a client 2.3.0 nebo novější. K 22. říjnu 2026 jsou na npm nejnovější verze 1.32.1 a 2.3.1. Adaptéry express, node a hono mají vlastní opravené verze 2.0.2, 2.1.0 a 2.0.1.

Zneužil někdo tyto chyby v praxi?

Upozornění o zneužití nic neuvádějí. U dvou chyb s pamětí serveru však podle nich útočník nepotřebuje přihlašovací údaje, pokud server neověřuje požadavky dřív, než se dostanou k SDK, proto aktualizaci neodkládejte.

Proč po aktualizaci MCP server přestal odpovídat?

Server pravděpodobně sdílí jednu instanci serveru nebo transportu mezi více klienty. Verze 2.3.0 balíčku @modelcontextprotocol/server to odmítne chybou ALREADY_CONNECTED, proto je potřeba kód upravit tak, aby vytvářel server pro každý požadavek nebo pro každou session.

Musím po těchto opravách vyměnit API klíče?

Jen pokud se klient mohl připojit k MCP serveru, kterému nedůvěřujete, nebo ho přesměrování mohlo poslat na cizí adresu. Pak upozornění doporučují vyměnit API klíče, client secret nebo podpisový klíč a zrušit vydané tokeny.

Sdílet
Při tvorbě článku jsme využili umělou inteligenci. Fakta a zdroje prošly redakční kontrolou.
Související služby

Potřebujete pomoct s webem nebo e-shopem?

Automatizace

Automatizace, které odbourají opakovanou práci.

Další články

Mohlo by vás zajímat.

Postavme něco společně

Nápad máte vy. Zbytek nechte na nás.

Řekněte nám, co potřebujete. Ozveme se do jednoho pracovního dne s upřímným pohledem, zda jsme ti praví, jaký vidíme rozsah a termín, a pošleme cenovou nabídku na míru.

Povinné je jen jméno, e-mail a zpráva. Pole s červenou tečkou jsou povinná.

S čím vám můžeme pomoci?
Připojte podklady (volitelné)
Nebo nám napište na hello@denva.studio · +421 902 074 830