The post has been translated automatically. Original language: Russian
In three days, from September 23 to September 25, 2026, FastMCP, the popular Python framework for writing Model Context Protocol servers, released five versions in a row: 4.0.6, 4.0.7, 4.0.8, 4.0.9 and 4.0.10. The major release of 4.0.6 brought both security fixes and a redesign of resource template matching, and the next three versions were repaired. the consequences of this alteration. The case when you need to update not to the first released version, but to the latest one.
Checking visibility and response cache
In 4.0.6, there was a restriction: responses to auto-completion requests should refer only to those objects that are available to a specific client. The check was done by simulating a list request through middleware, and limiters, logging, and metrics began to see two requests for each auto-completion instead of one. Version 4.0.7 narrowed the check to typed list handlers, and the counters counted one request per request again.
But it was precisely in this form that the check turned out to be dangerous. The notes to 4.0.8 say it bluntly: simulating list requests via middleware in version 4.0.7 allowed the response cache to give hidden hints to other clients. The mechanism, conceived for the sake of access control, turned into a leak channel when caching was enabled, and in 4.0.8 the visibility check was rolled back to the behavior of version 4.0.5.
The second security edit in 4.0.8 concerns the OAuth proxy: when revoking an updating token, the proxy now actually revokes the token of the upstream provider, rather than sending its own up.
Dynamic Proxy memory
The second plot of these releases is compiled resource URI templates. In 4.0.7, they began to be cached in order to speed up reading. In 4.0.8, the size limit was removed from the cache: on servers with thousands of templates, the limit rested on the border of about four thousand records and performance dropped. We removed the limit and got unlimited process memory growth from dynamic proxies that create templates on the go. The solution was released in 4.0.9: the template object holds its compiled template for its own lifetime, and the shared cache is again limited in size.
Templates, schemas, and sessions
Resource templates in 4.0.6 began to be compared with what customers actually send: literals both in raw form and in percentage encoding according to RFC 6570, and list request parameters in separate repetitions and comma—separated ones. JSON schemas accept integer values written as fractions, and string length limits are maintained even with the specified format. Client exit upon cancellation now releases the session instead of leaking.
Version 4.0.10 closes a defect familiar to those who hide some of the tools from the model: the tools on the task backend were not registered if they were hidden by search transformations or CodeMode mode, and a call from another tool returned an empty receipt instead of the result. Now they are registered even hidden, and the tool is called from the tool in the foreground.
What does this mean in practice?
The main conclusion is simple: versions 4.0.6 and 4.0.7 should be skipped entirely. If you have updated to one of them and you have a response cache enabled, you should assume that the hidden hints could have got to the wrong client.
- Metrics and limiters. If the schedules for auto-completion requests have doubled these days, this is not an increase in workload, but a consequence of a double pass through middleware.
- Memory consumption. Dynamic proxies that generate templates for each request could grow without limit by 4.0.8. Restarting will hide the symptom, but not the cause — you need 4.0.9 or later.
- Pattern matching. If you had your own patches for percentage coding or list parameters, they may conflict with the new behavior — run integration tests on resource templates.
- Limitations in the schemes. Some schemas used to be loaded with loss of conditions, but now they validate more strictly. Validation errors after the update are most likely not a regression, but a fixed check.
The draft text was prepared with the participation of AI, the facts were checked against the original source — the official notes for the releases of FastMCP versions 4.0.6-4.0.10.
За три дня, с 23 по 25 сентября 2026 года, у FastMCP — популярного Python-фреймворка для написания серверов Model Context Protocol — вышло пять версий подряд: 4.0.6, 4.0.7, 4.0.8, 4.0.9 и 4.0.10. Крупный релиз 4.0.6 привёз и исправления безопасности, и переделку сопоставления шаблонов ресурсов, а следующие три версии чинили последствия этой переделки. Тот случай, когда обновляться нужно не на первую вышедшую версию, а на последнюю.
Проверка видимости и кеш ответов
В 4.0.6 появилось ограничение: ответы на запросы автодополнения должны ссылаться только на те объекты, которые доступны конкретному клиенту. Проверку сделали через имитацию запроса списка сквозь middleware, и лимитеры, логирование и метрики стали видеть по два обращения на каждое автодополнение вместо одного. Версия 4.0.7 сузила проверку до типизированных обработчиков списка, и счётчики снова считали одно обращение на запрос.
Но именно в этом виде проверка оказалась опасной. В заметках к 4.0.8 сказано прямо: имитация запросов списка через middleware в редакции 4.0.7 позволяла кешу ответов отдавать скрытые подсказки другим клиентам. Механизм, задуманный ради разграничения доступа, при включённом кешировании превращался в канал утечки, и в 4.0.8 проверку видимости откатили к поведению версии 4.0.5.
Вторая правка безопасности в 4.0.8 касается OAuth-прокси: при отзыве обновляющего токена прокси теперь действительно отзывает токен вышестоящего провайдера, а не отправляет наверх свой собственный.
Память динамических прокси
Второй сюжет этих релизов — компилированные шаблоны URI ресурсов. В 4.0.7 их начали кешировать ради ускорения чтения. В 4.0.8 с кеша убрали ограничение размера: на серверах с тысячами шаблонов лимит упирался в границу около четырёх тысяч записей и производительность падала. Убрали лимит — и получили неограниченный рост памяти процесса у динамических прокси, которые создают шаблоны на ходу. Решение вышло в 4.0.9: объект шаблона держит свой скомпилированный шаблон в течение собственного времени жизни, а общий кеш снова ограничен по размеру.
Шаблоны, схемы и сессии
Шаблоны ресурсов в 4.0.6 стали сопоставляться с тем, что клиенты реально присылают: литералы как в сыром виде, так и в процентном кодировании по RFC 6570, а списковые параметры запроса — и раздельными повторами, и склеенными через запятую. JSON-схемы принимают целые значения, записанные как дробные, а ограничения на длину строки сохраняются даже при указанном формате. Выход клиента при отмене теперь освобождает сессию вместо утечки.
Версия 4.0.10 закрывает дефект, знакомый тем, кто прячет часть инструментов от модели: инструменты на бэкенде задач не регистрировались, если их скрывали поисковые трансформации или режим CodeMode, и вызов из другого инструмента возвращал пустую квитанцию вместо результата. Теперь они регистрируются даже скрытыми, а вызов инструмента из инструмента идёт на переднем плане.
Что это значит на практике
Главный вывод простой: версии 4.0.6 и 4.0.7 лучше пропустить целиком. Если вы обновились на одну из них и у вас включён кеш ответов, стоит считать, что скрытые подсказки могли попасть не тому клиенту.
- Метрики и лимитеры. Если графики обращений к автодополнению в эти дни удвоились, это не рост нагрузки, а следствие двойного прохода через middleware.
- Потребление памяти. Динамические прокси, генерирующие шаблоны на каждый запрос, на 4.0.8 могли расти без предела. Перезапуск скроет симптом, но не причину — нужна 4.0.9 или новее.
- Сопоставление шаблонов. Если у вас были свои заплатки для процентного кодирования или списковых параметров, они могут конфликтовать с новым поведением — прогоните интеграционные тесты на шаблонах ресурсов.
- Ограничения в схемах. Часть схем раньше загружалась с потерей условий, а теперь валидирует строже. Ошибки валидации после обновления — скорее всего не регресс, а починенная проверка.
Черновик текста подготовлен с участием ИИ, факты сверены с первоисточником — официальные заметки к релизам FastMCP версий 4.0.6-4.0.10.