The post has been translated automatically. Original language: Russian
On September 7, 2026, release 2.2.0 of the official SDK of the Model Context Protocol for Python was released, which is the library on which most of the homemade tool servers for AI agents are based. The release is notable for the fact that it almost entirely consists not of new features, but of behavioral changes: three things that used to work freely are now working more strictly. For those who already have an MCP server in production, this means that an update may change the behavior of the working code.
Redirects no longer take the client beyond the source address
Previously, the client was redirected to where the server was sending it. Now the client entry points —the regular client, the HTTP streaming transport client, and the SSE client—follow the redirect only if it remains within the same scheme, the same host, and the same port. Redirection to any other address results in a MCPError error, while the session remains operational.
An important detail for those who set up the transport with their own hands: the configuration of following redirects in the asynchronous httpx2 client for MCP requests is no longer taken into account. The same restriction has been extended to OAuth providers.
Idle sessions are closed and their number is limited.
The second change is about HTTP streaming transport in its old version, for specifications up to and including November 25, 2025. A stateful session in which nothing has been happening for 30 minutes is now being closed. Clients who keep the GET stream open do not fall under this rule.
At the same time, the server has a ceiling: no more than 10 thousand simultaneous sessions, everything above this receives a 503 response. Both limits are enabled by default, but are disabled by empty values of the timeout and maximum session parameters. In addition, the client's DELETE request now releases the session immediately, rather than leaving it hanging.
Stricter OAuth verification and two new warnings
The OAuth client now checks the publisher in the authorization server metadata and on the outdated path, too: metadata whose publisher does not match the server's own address is rejected. Error handling has also changed — 403 responses without a mark about a lack of rights are returned to the calling code, rather than leading to a retry, and errors 5xx and 429 stop the process instead of rolling back to a backup script.
Two new deprecation warnings have appeared, both indicating settings that will become mandatory in version 3.0: providers created without the publisher parameter, and authentication settings where the resource server address is set, but the token resource verification feature is not set. Minor edits: Links inside the result schema of the tool are now resolved within their schema document.
What does this mean in practice?
The first thing to check before updating is whether your client is relying on redirects. A typical scheme that will break: the server behind the load balancer responds with a redirect from HTTP to HTTPS or from an address without a prefix to an address with it. Changing the circuit or port is now considered going beyond the source, and the request will drop. This is treated not by rolling back the version, but by the fact that the client is immediately configured to the destination address.
The second is an idle timeout. Thirty minutes sounds like a lot, until we talk about a background agent that wakes up once an hour. The choice is simple: keep the GET stream open, disable the timeout explicitly, or teach the client to reset the session.
Third, warnings about obsolescence should be perceived as a list of tasks, and not as noise in logs: by version 3.0, these parameters will become mandatory. And separately about the session limit: if the client creates a new session for each call and does not close the old ones, the ceiling of 10 thousand will be reached faster than it seems, and sudden 503 responses will be a symptom. The authors separately list what is not yet in the release: task expansion, DPoP mechanism and jwt-bearer resolution type are not yet available. implemented.
The draft text was prepared with the participation of AI, the facts were checked against the original source — the official notes for the release of the MCP SDK for Python version 2.2.0 on GitHub.
7 сентября 2026 года вышел выпуск 2.2.0 официального SDK протокола Model Context Protocol для Python — библиотеки, на которой держится большинство самодельных серверов инструментов для ИИ-агентов. Выпуск примечателен тем, что почти целиком состоит не из новых возможностей, а из изменений поведения: три вещи, которые раньше работали свободно, теперь работают строже. Для тех, у кого MCP-сервер уже в продакшене, это значит, что обновление может изменить поведение рабочего кода.
Редиректы больше не выводят клиента за пределы исходного адреса
Раньше клиент шёл по перенаправлению туда, куда его отправлял сервер. Теперь клиентские точки входа — обычный клиент, клиент потокового HTTP-транспорта и клиент SSE — следуют редиректу только если он остаётся в пределах той же схемы, того же хоста и того же порта. Перенаправление на любой другой адрес завершается ошибкой MCPError, при этом сессия остаётся рабочей.
Важная деталь для тех, кто настраивал транспорт руками: настройка следования редиректам у асинхронного клиента httpx2 для MCP-запросов больше не учитывается. То же ограничение распространили и на OAuth-провайдеров.
Простаивающие сессии закрываются, а их количество ограничено
Второе изменение — про потоковый HTTP-транспорт в его старом варианте, для спецификаций по 25 ноября 2025 года включительно. Сессия с сохранением состояния, в которой ничего не происходит 30 минут, теперь закрывается. Клиенты, которые держат открытым GET-поток, под это правило не попадают.
Одновременно у сервера появился потолок: не более 10 тысяч одновременных сессий, всё сверх этого получает ответ 503. Оба ограничения включены по умолчанию, но отключаются пустыми значениями параметров таймаута простоя и максимума сессий. Кроме того, клиентский запрос DELETE теперь освобождает сессию сразу, а не оставляет её висеть.
Строже проверка OAuth и два новых предупреждения
OAuth-клиент теперь проверяет издателя в метаданных сервера авторизации и на устаревшем пути тоже: метаданные, у которых издатель не совпадает с собственным адресом сервера, отклоняются. Изменилась и обработка ошибок — ответы 403 без пометки о недостатке прав возвращаются вызывающему коду, а не приводят к повторной попытке, а ошибки 5xx и 429 останавливают процесс вместо отката на запасной сценарий.
Появились два новых предупреждения об устаревании, оба указывают на настройки, которые станут обязательными в версии 3.0: провайдеры, созданные без параметра издателя, и настройки аутентификации, где задан адрес сервера ресурсов, но не задан признак проверки ресурса токена. Из мелких правок: ссылки внутри схемы результата инструмента теперь разрешаются в пределах своего документа схемы.
Что это значит на практике
Первое, что стоит проверить перед обновлением, — не полагается ли ваш клиент на перенаправления. Типичная схема, которая сломается: сервер за балансировщиком отвечает редиректом с HTTP на HTTPS или с адреса без префикса на адрес с ним. Смена схемы или порта теперь считается выходом за пределы источника, и запрос упадёт. Лечится это не откатом версии, а тем, что клиент сразу настраивают на конечный адрес.
Второе — таймаут простоя. Тридцать минут звучат как много, пока речь не заходит о фоновом агенте, который просыпается раз в час. Выбор простой: держать GET-поток открытым, отключить таймаут явно или научить клиента переустанавливать сессию.
Третье — предупреждения об устаревании стоит воспринимать как список задач, а не как шум в логах: к версии 3.0 эти параметры станут обязательными. И отдельно про лимит сессий: если клиент создаёт новую сессию на каждый вызов и не закрывает старые, потолок в 10 тысяч будет достигнут быстрее, чем кажется, а симптомом станут внезапные ответы 503. Авторы отдельно перечисляют, чего в выпуске пока нет: расширение задач, механизм DPoP и тип разрешения jwt-bearer ещё не реализованы.
Черновик текста подготовлен с участием ИИ, факты сверены с первоисточником — официальные заметки к выпуску MCP SDK для Python версии 2.2.0 на GitHub.