Чему вы научитесь
- Объяснять назначение MCP и различать роли приложения, клиента, сервера и инструмента
- Подготавливать Python-проект с MCP SDK и запускать собственные локальные серверы инструментов
- Регистрировать Python-функции как MCP-инструменты и определять их аргументы и возвращаемые результаты
- Создавать сервер заказов с инструментами поиска заказа по идентификатору и расчёта его стоимости
- Самостоятельно разрабатывать отдельный сервер доставки с поиском тарифа и расчётом стоимости по зоне и весу
- Читать учебные данные из JSON-файлов и использовать их в предметной логике MCP-инструментов
- Описывать обязательные аргументы и типы данных инструментов и проверять входные параметры
- Подключать Python-клиента к MCP-серверу через stdio с запуском сервера отдельным процессом
- Получать список доступных инструментов через MCP-клиент и проверять их обнаружение
- Вызывать инструменты заказов и доставки из Python-клиента и разбирать возвращаемые результаты
- Проверять правильность расчётов стоимости заказа и доставки на конкретных входных данных
- Обрабатывать неизвестные идентификаторы заказов, несуществующие зоны доставки и недопустимый вес
- Отличать ошибки проверки аргументов от ошибок исполнения инструмента и анализировать неудачные вызовы
- Писать позитивные и негативные тесты MCP-инструментов с помощью pytest
- Проверять взаимодействие клиента и сервера через реальный stdio-процесс, а не только прямой вызов Python-функции
- Самостоятельно диагностировать неверную стоимость доставки по аргументам вызова и фактическим результатам инструментов
- Подтверждать исправление повторными расчётами, тестами pytest и проверкой stdio-взаимодействия
О курсе

🧭 Отправная точка
Клиент находит инструмент calculate_delivery_cost на MCP-сервере и вызывает его, но возвращённая стоимость доставки отличается от ожидаемой. Чтобы разобраться, нужно проверить аргументы запроса, данные о тарифе и результат вычисления. Такой случай вы самостоятельно исследуете в конце курса.
MCP (Model Context Protocol) позволяет приложениям получать список доступных инструментов и вызывать их через единый протокол. На курсе вы создадите два небольших MCP-сервера на Python, напишете клиентов для работы с ними и научитесь проверять успешные и ошибочные вызовы.
Сначала вместе с курсом разработаете сервер заказов: поиск заказа по идентификатору и расчёт его стоимости. Затем самостоятельно создадите сервер доставки с поиском тарифа и расчётом цены по зоне и весу. У каждого сервера будет своя логика и локальный JSON-файл с данными.
🎯 Цель курса — научиться самостоятельно создавать MCP-инструменты, подключать к ним Python-клиентов, находить ошибки и подтверждать правильность работы тестами.
⚙️ Что вы будете делать
-
⚙️ Создавать MCP-серверы и инструменты. Зарегистрируете функции
get_orderиcalculate_order_totalдля заказов, затем самостоятельно реализуетеget_tariffиcalculate_delivery_costдля доставки. Разберёте аргументы, возвращаемые значения и чтение данных из JSON. -
🔗 Подключать MCP-клиентов. Напишете Python-клиентов, которые получают список инструментов и вызывают их с нужными аргументами. Проверите запуск сервера отдельным процессом и обмен через
stdio. -
🧩 Обрабатывать неверные данные и ошибки. Исследуете обязательные аргументы, их типы, неизвестные заказы и зоны доставки, недопустимый вес. Научитесь отличать ошибку проверки входных данных от ошибки при выполнении инструмента и проверять результат на стороне клиента.
-
🧪 Писать тесты и разбирать неисправности. Добавите pytest-проверки для обоих серверов: обнаружение инструментов, правильные расчёты и ожидаемые отказы. Отдельно проверите взаимодействие через
stdio, а в финале восстановите неисправный вызов и повторите тесты.
🔥 Чем отличается курс
Вся практика строится вокруг двух понятных задач. Сервер заказов вы будете разрабатывать последовательно по объяснениям и примерам. Сервер доставки придётся реализовать самостоятельно: использовать знакомый способ регистрации инструментов, но написать собственную логику расчётов, клиента и тесты.
Вы проверите работу инструментов двумя способами. Сначала тесты обращаются к MCP-серверу через клиент SDK. Затем отдельная проверка запускает оба сервера как самостоятельные процессы и связывается с ними через stdio. Так вы увидите, работает ли взаимодействие за пределами прямого вызова Python-функции.
Ошибочные запросы входят в обычную практику: неизвестный заказ, неверная зона, неподходящий тип аргумента или недопустимый вес должны давать ожидаемый результат ошибки. Тесты будут проверять ответы MCP-клиента и конкретные значения, в том числе стоимость заказа и доставки.
Курс бесплатный: 5 модулей, 21 урок, видеолекции, текстовые объяснения и самостоятельные задания. Для практики достаточно Python 3.12 и Git. Все серверы работают локально, без Docker, платных языковых моделей и API-ключей. Результаты заданий вы проверяете по условиям и тестам, без ручной рецензии.
🎯 Итоговый проект
В собственном GitHub-репозитории у вас будут два MCP-сервера — заказов и доставки, по два инструмента в каждом, Python-клиенты и автоматические тесты.
В финальном задании новый сценарий обращения к серверу доставки выдаст неверную стоимость. Вы воспроизведёте ошибку, проверите входные данные и ответы инструментов, определите причину и исправите её. После этого оба контрольных расчёта должны пройти, а тесты pytest и отдельная проверка stdio — подтвердить, что серверы продолжают работать.
В результате вы сможете создавать MCP-инструменты для собственных задач, подключать их к приложениям и самостоятельно проверять корректность вызовов.
🧪 Поддержка
🧪 Самопроверка вместо ожидания ручной рецензии. Вы сверяете результат по критериям задания, ответам и предусмотренным в курсе локальным проверкам. Разборы самостоятельных упражнений доступны там, где они предусмотрены программой.
Индивидуальная проверка работ преподавателем и персональные консультации в этом курсе не предусмотрены. Формат рассчитан на самостоятельное прохождение.
🚀 О XNova
XNova — практические курсы и учебные проекты для разработчиков, тестировщиков и инженеров. Мы разбираем технологии на работающих примерах: с кодом, наблюдаемым результатом и объяснением инженерных решений.
🔗 xnova.dev — другие курсы и материалы XNova.
📬 Контакты и сообщество
Продолжить знакомство с XNova, следить за новыми материалами или задать организационный вопрос можно здесь:
- 📣 Telegram-канал: @xnova_dev — анонсы курсов, статьи и новости проекта.
- 💬 Написать XNova: @xnova_contact — контакт для вопросов о курсах и проекте.
- ✉️ Почта: contact@xnova.dev — если удобнее написать письмом.
- 💻 GitHub: xnova-tech — открытые учебные проекты и примеры.
Для кого этот курс
Начальные требования
📚 Что нужно знать
- Основы Python: функции, типы данных, словари, импорты и обработка ошибок.
- Базовая работа с Git и терминалом: создавать файлы, запускать Python-скрипты и выполнять простые команды.
- JSON: понимать, как устроены небольшие файлы с данными.
Знать MCP заранее не требуется. С устройством протокола, созданием инструментов и подключением клиента познакомимся в самом курсе.
🧰 Что понадобится
- Python 3.12 и возможность устанавливать библиотеки.
- Git и аккаунт GitHub для своего учебного проекта.
- Windows, macOS или Ubuntu Linux — настройка окружения описана в первых уроках.
Курс бесплатный. Все практические задания выполняются локально; платные модели, API-ключи, Docker и облачные сервисы не нужны.
Как проходит обучение
🧩 От первого инструмента до двух работающих MCP-серверов. В пяти модулях и 21 уроке видеолекции и текстовые разборы чередуются с вопросами и практикой.
- 🛠️ Собираете по шагам: создаёте сервер заказов, подключаете собственного клиента и проверяете вызовы инструментов.
- 🚀 Пробуете самостоятельно: разрабатываете сервер доставки по требованиям задания и разбираетесь с ошибками вызовов.
- ✅ Подтверждаете результат: запускаете тесты pytest и изучаете решения самостоятельных упражнений после своей попытки.
Программа курса
В курс входят
- 22 урока
- 38минут видео
- 22 теста
Наши преподаватели
Что вы получаете
- Собственный GitHub-проект с двумя отдельными MCP-серверами на Python для заказов и доставки
- Сервер заказов с инструментами get_order и calculate_order_total и чтением учебных данных из JSON
- Самостоятельно реализованный сервер доставки с инструментами get_tariff и calculate_delivery_cost
- Python-клиенты для получения списка инструментов и выполнения вызовов обоих серверов через MCP
- Проверки аргументов и обработка ошибок для неизвестных заказов, тарифов, зон доставки и некорректного веса
- Набор автоматических тестов pytest для обнаружения инструментов, успешных расчётов и ошибочных вызовов
- Проверенный запуск MCP-серверов отдельными процессами с обменом через stdio
- Исправленный итоговый сценарий расчёта доставки с подтверждением двух контрольных результатов и повторным запуском тестов