Для разработчиков · курс 11
MCP: продвинутые темы
Продвинутые возможности протокола: sampling (сервер просит модель что-то сгенерировать), уведомления о логах и прогрессе, roots, устройство JSON-RPC-сообщений, транспорты STDIO и Streamable HTTP, работа с состоянием и подготовка сервера к продакшену. С разбором того, что изменилось в актуальной ревизии спецификации и какие приёмы считаются устаревшими.
Начать курс
0 из 13 пройдено
- Для кого
- Разработчики, которые уже написали хотя бы один MCP-сервер.
- Что нужно
- Курс «Введение в MCP», Python с async, знакомство с SSE.
- Объём
- 13 уроков, 4 модуля, ≈ 3,5 ч с практикой
Модуль 1
Введение
Модуль 2
Ключевые возможности MCP
- 02Sampling: сервер обращается к моделиSampling позволяет MCP-серверу попросить модель хоста сгенерировать текст, не имея собственного ключа к API. Разбираем, зачем это нужно, как устроен запрос sampling/createMessage, что изменилось в ревизии 2026-07-28 и почему возможность помечена устаревшей.11 мин
- 03Sampling на практикеСтроим сервер для CI, который по номеру сборки просит модель хоста описать упавший тест, проверяем его in-memory клиентом с подменой модели и смотрим, какие сообщения ходят между сторонами.12 мин
- 04Уведомления: логи и прогрессУведомления — сообщения без ответа, которыми сервер сообщает клиенту о ходе долгой операции и присылает логи. Разбираем notifications/progress с токеном прогресса, notifications/message с уровнями syslog, уведомления об изменении списков и то, почему логирование через протокол устарело, а прогресс — нет.11 мин
- 05Уведомления на практикеСобираем сервер отчётов по спринту, который шлёт прогресс по ходу работы, смотрим, как уведомления приходят на клиент раньше результата, добавляем логи в stderr и пробуем устаревшее протокольное логирование, чтобы узнать его в чужом коде.12 мин
- 06RootsRoots — список папок, которые клиент считает рабочей областью и сообщает серверу. Разбираем запрос roots/list, что roots гарантируют и чего не гарантируют, как их получить в SDK и почему возможность устарела.9 мин
- 07Roots на практикеСтроим сервер поиска по проекту, который получает рабочие папки от клиента через roots, проверяем его in-memory клиентом с подставными корнями, ловим попытку выйти за границы и переписываем тот же сервер на рекомендованный способ — папки из конфигурации.11 мин
Модуль 3
Транспорты и коммуникация
- 08Типы JSON-сообщенийВсё общение в MCP — это JSON-RPC 2.0. Разбираем четыре вида сообщений (запрос, результат, ошибка, уведомление), правила для id и кодов ошибок, поле _meta и то, как стороны договариваются о версии и возможностях — рукопожатием в старых ревизиях и метаданными в каждом запросе в новой.12 мин
- 09Транспорт STDIOSTDIO — транспорт, при котором хост запускает сервер как дочерний процесс и общается с ним через стандартные потоки. Разбираем правила кадрирования, почему stdout принадлежит протоколу, как передаются секреты, как процесс завершается и как всё это выглядит в SDK и в конфигурации хоста.11 мин
- 10Транспорт Streamable HTTPStreamable HTTP — транспорт для удалённых серверов. Один endpoint, каждый запрос — отдельный POST, ответ — либо JSON, либо поток Server-Sent Events с уведомлениями. Разбираем заголовки, коды ответов, требования безопасности, запуск в SDK и подключение клиента.12 мин
- 11Streamable HTTP в деталяхТранспорт прошёл три поколения, и в поле вы встретите все. Разбираем HTTP+SSE с двумя адресами, Streamable HTTP образца 2025-11-25 с сессиями, GET-потоком и Last-Event-ID, что от этого осталось в 2026-07-28 и как SDK v2 обслуживает старых и новых клиентов сразу.13 мин
- 12Состояние и Streamable HTTPMCP объявлен протоколом без состояния, но серверу всё равно приходится что-то помнить. Разбираем, что именно запрещено помнить, где хранить то, что нужно (requestState, внешнее хранилище по явному идентификатору, шина подписок), как масштабировать сервер за балансировщиком и как устроена аутентификация по спецификации.13 мин
Модуль 4
