MCP Python SDK 2.2 посилив захист OAuth і обмежив накопичення сесій
Версія 2.2 офіційного Python SDK для Model Context Protocol обмежує зовнішні редиректи, перевіряє issuer OAuth і автоматично закриває неактивні HTTP-сесії.

Офіційний Python SDK для Model Context Protocol отримав версію 2.2.0 із помітними змінами безпеки для HTTP і OAuth. Клієнт більше не переходить за редиректом на довільний інший домен, сервер автоматично прибирає неактивні сесії, а механізм авторизації суворіше перевіряє, хто саме видав токен. Це не косметичне оновлення: частина стандартних значень змінилася, тому власникам MCP-серверів і агентних платформ варто переглянути конфігурацію перед розгортанням.

Редиректи тепер залишаються в межах origin
Методи Client, streamable_http_client і sse_client автоматично переходять лише на адресу з тим самим протоколом, хостом і портом. Виняток — безпечне підвищення з HTTP до HTTPS на тому самому хості. Якщо сервер повертає перенаправлення на інший origin, запит завершується помилкою, але сесія клієнта залишається придатною до подальшої роботи.
Практичний сенс цього правила — зменшення ризику витоку токена, заголовків або запиту до чужого вузла. Раніше загальний параметр follow_redirects у переданому HTTP-клієнті міг створити занадто широке правило. Тепер SDK окремо контролює MCP-запити, а OAuth-провайдери застосовують такий самий захист. Звичайний редирект через відсутній завершальний слеш у межах endpoint продовжує працювати.
Неактивні сесії більше не ростуть безмежно
Для stateful Streamable HTTP-сервера з протоколом старішої редакції неактивна сесія типово закривається через 30 хвилин. Коли клієнт звернеться знову, він отримає 404 і повинен повторити ініціалізацію. Клієнти з відкритим GET-потоком, stateless-сервери та з’єднання редакції 2026-07-28 цим правилом не зачіпаються.
Додатково один процес приймає не більше 10 000 одночасних сесій. Після досягнення межі нові ініціалізації отримують 503. Обидва обмеження можна вимкнути через session_idle_timeout=None і max_sessions=None, але робити це без власного механізму очищення небезпечно: покинута клієнтом сесія може утримувати пам’ять, черги та пов’язані ресурси.
OAuth став суворішим
SDK тепер перевіряє поле issuer у метаданих сервера авторизації навіть на старому шляху discovery. Невідповідність очікуваному origin завершує процес помилкою OAuthFlowError. Відповідь 403 без ознаки insufficient_scope повертається виклику, а помилки 5xx або 429 під час отримання protected resource metadata більше не маскуються переходом до legacy-механізму.
Новий параметр AuthSettings.validate_token_resource дає змогу приймати лише токени, які TokenVerifier вважає виданими саме для цього resource server. Конструктори ClientCredentialsOAuthProvider і PrivateKeyJWTOAuthProvider отримали явний issuer. У гілці 2.x старий код ще працює з попередженням, але в майбутній 3.0 значення стане обов’язковим.
Що змінити розробнику
- Зафіксувати endpoint: якщо інфраструктура навмисно перенаправляє клієнта на інший домен або порт, слід одразу вказати кінцеву адресу.
- Перевірити життєвий цикл: клієнт має вміти переініціалізувати сесію після 404, а балансувальник — коректно обробляти 503.
- Задати issuer: не відкладати виправлення попереджень до виходу SDK 3.0.
- Увімкнути перевірку audience/resource: особливо коли один authorization server обслуговує кілька MCP-сервісів.
- Прогнати інтеграційні тести: окремо перевірити proxy, trailing slash, OAuth discovery, довгі tool-виклики й відновлення після idle timeout.
Відомі обмеження
Реліз не реалізує розширення tasks SEP-2663, DPoP SEP-1932 і grant jwt-bearer; команда прямо залишає їх у roadmap. Крім того, ліміт сесій захищає один процес, але не замінює загальні rate limits, контроль тіла запиту, аутентифікацію та моніторинг. У кластері потрібно враховувати маршрутизацію, спільне сховище стану й повторні підключення.
Практичний висновок: MCP Python SDK 2.2 робить безпечнішими типові конфігурації, але одночасно виявляє приховані залежності від зовнішніх редиректів і безстрокових сесій. Оновлення варто починати зі staging, журналювання 404/503 та перевірки OAuth issuer.
Джерело та права
Матеріал є самостійним українським перекладом-переказом офіційних release notes MCP Python SDK 2.2.0, опублікованих 7 вересня 2026 року. Репозиторій, release notes і документація поширюються за ліцензією MIT. Перекладено й адаптовано редакцією «Бібліотеки програміста». Обкладинка створена редакцією за допомогою AI і не входить до першоджерела.
Матеріал перекладено, переказано та доповнено редакцією українською мовою.
Читайте далі — ми вже розбираємо наступну важливу тему.


