Course
Полтора года назад Model Context Protocol оставался нишевым термином за пределами Anthropic. Сейчас он появляется в собеседованиях на роли в области AI-инжиниринга, developer relations и бэкенда, потому что многие команды, выпускающие агентов, имеют MCP-сервер или клиент где-то в стеке.
MCP (Model Context Protocol) — это открытый протокол, стандартизирующий, как AI‑приложения подключаются к внешним инструментам, данным и шаблонам подсказок. Он решает проблему интеграции N × M: без общего протокола каждая связка модель‑инструмент требует собственного коннектора. С MCP вы строите коннектор один раз — и любой совместимый хост сможет его использовать. Его можно услышать как «USB‑C для AI», что подходит в качестве первого объяснения, но не дальше.

Вопросы на собеседовании сильно зависят от роли. Младшему разработчику могут предложить объяснить разницу между tools и resources. Инженеру платформы скорее зададут вопрос о том, как без状態ный (stateless) ядро протокола меняет деплой. Я организовал материал по сложности и кейсам использования, так что сосредоточьтесь на разделах, соответствующих вашей роли.
Здесь важен тайминг, и я говорю об этом явно, потому что MCP всё ещё меняется. На момент написания текущая стабильная спецификация — 2025-11-25. Релиз‑кандидат для 2026-07-28 зафиксирован и должен выйти примерно через четыре недели, поэтому всё из этого RC помечено как ориентированное на будущее.
Вопросы для начинающих по MCP
Эти вопросы встречаются на многих этапах, вне зависимости от уровня. Я бы начал со словаря терминов.
Что такое MCP и зачем он был создан?
MCP — это открытый стандарт, изначально созданный компанией Anthropic и выложенный в открытый доступ в ноябре 2024 года, для подключения AI‑приложений к внешним инструментам и источникам данных. Проще говоря: реализуйте MCP один раз, и вы сможете общаться с любым совместимым MCP‑сервером вместо написания нового коннектора под каждый инструмент.
Что такое MCP‑сервер?
Сервер — это программа, которая предоставляет инструменты (tools), ресурсы (resources) и подсказки (prompts) MCP‑клиенту. Он может работать как локальный подпроцесс через stdio или как независимый удалённый процесс, доступный по HTTP. Сервер ничего не знает о самой модели; он отвечает на запросы по протоколу.
Что такое MCP‑клиент?
Клиент — это коннектор на уровне протокола, который живёт внутри хост‑приложения (вроде Claude Desktop, VS Code или Cursor) и общается с одним сервером за раз по JSON‑RPC. Один хост может запускать несколько клиентов, у каждого из которых своё соединение «один к одному» с сервером.
Чем MCP отличается от обычного REST API?
REST API пишут для вызовов из кода разработчиком. MCP создавался для того, чтобы LLM мог обнаруживать и вызывать функции на лету. Это различие важнее, чем формат «по проводу». Клиент может запросить у сервера tools/list и получить структурированное описание доступных возможностей — то, чего типичный REST API по умолчанию не предоставляет. Для одной простой интеграции прямой вызов API часто быстрее и дешевле.
Какие типы ресурсов может предоставлять сервер?
Всё, что адресуется по URI: файлы, записи в базе данных, документы, значения конфигурации, ответы API. Ресурсы — это контекст только для чтения, а не действия, что часто путают новички.
Вопросы по базовым концепциям MCP
Когда терминология усвоена, интервьюеры переходят к тому, как компоненты взаимодействуют.
Какова архитектура на высоком уровне?
Три роли: хост, клиент, сервер. Хост — это приложение, которым пользуется человек. Оно создаёт один или несколько клиентов, и каждый клиент держит одно соединение с сервером. Все сообщения между клиентом и сервером — это JSON‑RPC 2.0, что даёт стабильный формат «по проводу» вне зависимости от транспорта.
Каковы три этапа жизненного цикла соединения?
Инициализация, работа и завершение. Во время инициализации клиент отправляет поддерживаемую версию протокола и свои возможности, а сервер отвечает своими. Когда стороны согласовали версии и возможности, в фазе работы идут обычные запросы вроде tools/list и tools/call . Завершение — это просто корректное закрытие.
Какие транспорты MCP использует сегодня?
stdio для локальных серверов‑подпроцессов и Streamable HTTP для удалённых серверов. Streamable HTTP заменил более старый транспорт HTTP плюс SSE в спецификации от 2025-03-26, поэтому описание двух отдельных SSE‑эндпоинтов уже устарело.
В чём реальная разница между tools, resources и prompts?
Эта разница — про контроль, а не про тип данных:
- Инструментами управляет модель. LLM решает, когда вызывать инструмент исходя из контекста.
- Ресурсами управляет приложение. Хост или пользователь решает, когда загружать ресурс.
- Подсказками управляет пользователь. Человек явно выбирает шаблон до начала инференса.
Многие кандидаты определяют их по типу данных, что упускает суть.
Вопросы по инструментам, ресурсам и подсказкам MCP
Когда модель контроля понятна, следующий вопрос — как эти примитивы выглядят на практике.
Что включает определение инструмента?
Имя name, description, inputSchema на JSON Schema и, начиная со спецификации от 2025-06-18, необязательные outputSchema плюс annotations, описывающие поведение, например, является ли инструмент только для чтения или деструктивным. Клиенты должны считать аннотации ненадёжными, если они не поступают с доверенного сервера. Это подсказки, а не гарантии.
Когда что‑то должно быть инструментом, а не ресурсом?
Если есть побочный эффект или требуется свежая, живая вычислительная операция — это инструмент. Если это статичные или полу‑статичные справочные данные без побочных эффектов — это ресурс. Запрос погоды к живому API — инструмент. Кэшированный список поддерживаемых городов — ресурс.
Что делает MCP‑инструмент хорошим, помимо работоспособности?
Проектируйте его вокруг задачи пользователя, а не вокруг имеющихся у вас эндпоинтов. Инструмент должен инкапсулировать завершённый рабочий процесс, а не единичный сырой вызов API. Важна и его «description»: этот текст попадает в контекст модели и влияет на то, выберет ли модель правильный инструмент. Ниже — минимальный пример с FastMCP из Python SDK:
from mcp.server.fastmcp import FastMCP
app = FastMCP("weather-demo")
@app.tool()
async def get_weather(city: str) -> str:
"""Get the current weather for a city."""
return f"Weather data for {city}"
@app.resource("config://units")
async def get_units() -> str:
"""Static configuration for the unit system in use."""
return '{"temperature": "celsius"}'
Docstring инструмента становится его описанием; ресурс — это статичные данные за URI, без побочных эффектов.
Как клиент получает ресурс?
Он вызывает resources/read по URI, который получил из resources/list. Если сервер поддерживает возможность listChanged, он может уведомлять клиента об изменении списка ресурсов. Без этой возможности у клиента нет сигнала, и ему приходится опрашивать или обновлять вручную.
Вопросы по разработке MCP‑серверов
Здесь концепции должны превратиться в работающий код.
Какие официальные SDK существуют и одинаково ли они зрелые?
Нет. SDK разделены по уровням: TypeScript, Python, C# и Go — Tier 1 с полной поддержкой функций, Java и Rust — Tier 2, а Swift, Ruby, PHP и Kotlin — Tier 3. В Python SDK есть FastMCP — серверный API на декораторах.
Какая самая частая ошибка ломает локальный сервер?
Вывод в stdout там, где нельзя. Транспорт stdio использует stdout исключительно для сообщений JSON‑RPC, поэтому случайный print() или console.log() портит поток сообщений, и парсер клиента «задыхается». Всё, что нужно залогировать для отладки, должно идти в stderr.
Как работает обработка ошибок в MCP и почему это важно для собеседований?
Есть три уровня. Ошибки транспорта — это проблемы соединения. Ошибки протокола используют стандартные коды JSON‑RPC (-32700 для ошибки парсинга, -32600 по -32603 для некорректных запросов, неизвестных методов и т. п.). Ошибки уровня приложения, например, когда внутренний вызов API в вашем инструменте вернул ошибку, должны возвращаться с isError: true в результате инструмента, чтобы модель могла это увидеть и отреагировать.
return {
"content": [{"type": "text", "text": "Rate limit exceeded, try again later"}],
"isError": True
}
Этот флаг позволяет модели увидеть сбой и попробовать другой подход.
MCP сейчас сохраняет состояние?
Да, сессии сегодня отслеживаются на уровне соединения. Это создаёт проблемы масштабирования для продакшн‑команд, о которых я расскажу в разделе по системному дизайну.
Вопросы по безопасности и управлению MCP
Вопросы безопасности теперь часто встречаются в собеседованиях по MCP, особенно для платформенных и корпоративных ролей.
Чем отличается аутентификация между транспортами stdio и HTTP?
Для локальных серверов на stdio аутентификация на практике опциональна; вы уже доверяете запущенному процессу. Для удалённых серверов по HTTP используется рамка OAuth 2.1, а серверы классифицируются как ресурсные серверы OAuth 2.0 согласно спецификации от 2025-06-18. OAuth не обязателен повсеместно в MCP.
Что такое отравление инструмента (tool poisoning)?
Это вредоносные инструкции, спрятанные в метаданных инструмента, обычно в описании или схеме, которые модель читает при выборе инструмента для вызова. Инструмент не нужно вызывать, чтобы это имело значение, ведь модель уже увидела инструкции при листинге инструментов.
Чем атака «rug pull» отличается от отравления инструмента?
Отравление — это проблема на входе. «Rug pull» — проблема стойкости: инструмент выглядит чистым при одобрении, а затем его определение меняется, и у большинства клиентов нет встроенного механизма принудительного переодобрения. Защита от одного не защищает от другого.
Что такое Enterprise‑Managed Authorization и почему это важно сейчас?
EMA — это расширение MCP, ставшее стабильным 18 июня 2026 года. Оно переносит решение об авторизации к провайдеру идентичности организации вместо отдельных кликов согласия от каждого сотрудника на каждом сервере. Клиент получает подписанный Identity Assertion JWT при SSO и обменивает его на ограниченный по сфере доступа токен у сервера авторизации. Это поддерживают Anthropic, Microsoft и Okta.
Вопросы о MCP и AI‑агентах
Здесь протокол начинает соединяться с дизайном агентов.
Почему MCP важен именно для агентов?
Агентам нужен контекст и действия. MCP объединяет оба в одном протоколе. Как упоминалось ранее, tools/list позволяет агенту обнаружить доступные возможности вместо жёстко прошитого списка в коде агента.

Модель хоста агента, клиента и сервера. Изображение автора.
В чём разница между MCP и A2A?
Короткое правило: MCP соединяет агентов с инструментами, A2A — агентов друг с другом. Сейчас оба протокола входят в Agentic AI Foundation, поэтому их обычно рассматривают как отдельные слои, а не конкурентов.
Что такое sampling‑примитив и стоит ли всё ещё о нём упоминать?
Sampling позволяет серверу запросить завершение от модели через клиента — так сервер может вести себя как агент без владения ключами API. Знайте этот примитив, но добавляйте оговорку: в RC 2026-07-28 Sampling, Roots и Logging помечены как устаревающие по новой политике жизненного цикла функций. Они останутся работоспособными как минимум двенадцать месяцев, но авторам серверов всё чаще рекомендуют вызывать API провайдера модели напрямую.
Как агенты избегают переполнения контекстного окна определениями инструментов?
Не загружая все определения инструментов заранее. Подход Anthropic Tool Search откладывает загрузку схем инструментов до момента, когда они действительно нужны, и, по инженерному отчёту, снижает использование токенов на 85% для конфигураций с большим числом инструментов при сохранении доступности всей библиотеки. На собеседовании я бы сочетал отложенную загрузку с узко сфокусированными серверами.
Вопросы по системному дизайну MCP
Сценарные вопросы проверяют, можете ли вы применять идеи с учётом ограничений, а не просто повторять определения.
Спроектируйте систему извлечения документов с использованием MCP.
Здесь MCP и RAG не конкурируют. RAG отвечает за заранее проиндексированное векторное извлечение; MCP делает это извлечение доступным как инструмент или ресурс, который агент может вызывать в реальном времени, наряду с другими необходимыми действиями. Воспринимайте вопрос как о сочетаемости двух подходов, а не о взаимозаменяемости.
Спроектируйте MCP‑сервер для внутренних данных компании.
Начните с принципа единственной ответственности: по одному серверу на домен — например, сервер базы данных и отдельный файловый сервер — вместо одного сервера «на все случаи». Добавьте OAuth 2.1, минимально необходимые области доступа (scopes) для каждого инструмента и аудит‑логирование с самого начала, потому что контроль доступа сложнее исправлять после запуска сервера.
Как бы вы масштабировали MCP‑развёртывание сегодня, до выхода без状態ной спецификации?
Кандидаты часто ошибаются, описывая будущую спецификацию так, будто она уже вышла. Сохранение состояния, упомянутое в разделе о серверах, — это и есть проблема масштабирования: для горизонтального масштабирования нужны «липкие» маршруты, общий стор сессий или MCP‑шлюз. RC 2026-07-28 убирает сессии на уровне протокола, но это ещё не в продакшне.
Как не утопить модель в токенах при большом развёртывании с множеством серверов?
Идея отложенной загрузки из раздела про агентов помогает и здесь. На уровне развёртывания также фильтруйте и агрегируйте данные на стороне сервера до того, как они попадут в контекст модели, и пагинируйте всё, что возвращает список. Главное правило — контролировать то, что попадает в контекстное окно.
Вопросы по интеграции MCP
Вопросы по интеграции проверяют, понимаете ли вы, где MCP встречается в распространённых инструментах разработчика.
Как MCP проявляется в продуктах Claude?
Claude.ai, Claude Desktop и Claude Code поддерживают MCP, а Anthropic ведёт каталог коннекторов с готовыми серверами. Также есть MCP‑коннектор в Messages API для удалённых серверов, на момент написания ещё в бета‑версии.

Claude Desktop с подключённым MCP‑сервером. Изображение автора.
Полезен ли MCP только с Claude?
Нет. OpenAI приняла MCP в своих Agents SDK и Apps SDK начиная с марта 2025. VS Code добавил поддержку полной спецификации в середине 2025 года, Cursor поддерживает MCP через mcp.json, а Google Cloud к апрелю 2026 имела более 50 управляемых MCP‑серверов в GA или превью.
Чем MCP конкретно отличается от RAG?
Это короткая версия ответа из системного дизайна: RAG отвечает из заранее сформированной базы знаний, MCP обеспечивает живые обращения и действия.
Продвинутые вопросы по MCP
Продвинутые вопросы проверяют, следите ли вы за изменениями протокола, а не только знаете его текущее состояние.
Можете пройтись по истории версий спецификации?
Интервьюеры спрашивают это, чтобы понять, знаете ли вы, что менялось и когда. Важны пять ревизий, и только одна всё ещё на стадии предположений:
|
Версия |
Дата |
Что изменилось |
|
2024-11-05 |
Ноя 2024 |
Первый релиз |
|
2025-03-26 |
Мар 2025 |
Streamable HTTP заменяет HTTP+SSE; введён OAuth 2.1 |
|
2025-06-18 |
Июн 2025 |
Структурированные выходы инструментов, elicitation, классификация как ресурсного сервера OAuth |
|
2025-11-25 |
Ноя 2025 |
Текущая стабильная спецификация; асинхронные Tasks (эксперимент), формализовано управление |
|
2026-07-28 |
RC зафиксирован в мае 2026 |
Без状態ное ядро, MCP Apps, фреймворк расширений |
Главное — понимать, какая строка уже вышла в релиз.
Кто сейчас управляет MCP?
Anthropic передала протокол в Agentic AI Foundation, целевой фонд под эгидой Linux Foundation, 9 декабря 2025 года. Block и OpenAI соосновали AAIF вместе с Anthropic, а Google, Microsoft, AWS, Cloudflare и Bloomberg выступают поддерживающими участниками. Мейнтейнеры сохранили контроль над техническими решениями; управление перешло к более широкой организации.
Что конкретно меняется в релизе 2026-07-28?
Главное изменение — без状態ное ядро из раздела системного дизайна: рукопожатие initialize/initialized и заголовок Mcp-Session-Id исчезают, их заменяет передача информации о возможностях в _meta каждого запроса. Это снимает требование «липкой» маршрутизации. Также фреймворк расширений определяет, как опциональные возможности, такие как MCP Apps и Tasks, поставляются и стабилизируются самостоятельно.
Что такое расширения MCP и работают ли они везде?
Нет. Расширения — это опциональные возможности, такие как Enterprise‑Managed Authorization, OAuth Client Credentials для machine‑to‑machine‑аутентификации и MCP Apps для интерактивного UI внутри хоста. Поддержка варьируется от клиента к клиенту, поэтому не стоит проектировать, исходя из универсальной поддержки расширений.
Сценарные вопросы по MCP
Они проверяют диагностическое мышление больше, чем заученные факты, поэтому структурируйте ответы как путь от симптома к причине и решению.
Вызовы инструментов периодически падают. Что проверить сначала?
Проверьте, приходят ли сбои как isError: true в результате инструмента или как ошибка на уровне протокола. Это покажет, внутри ли проблема в логике инструмента или в транспорте. Далее посмотрите лимиты запросов у обёрнутого сервисом API и таймауты, прежде чем считать, что дело в модели.
Агент продолжает работать с устаревшими данными ресурса. Почему?
Это возвращает нас к вопросу о ресурсах: listChanged — это сигнал, сообщающий клиенту об изменении ресурса. Без его объявления у клиента нет сигнала, и он продолжает отдавать кэшированный снимок, пока что‑то не заставит обновиться.
Один MCP‑сервер стал явным узким местом. Ваши действия?
Разделите по доменам, добавьте пул соединений и масштабируйте горизонтально. Пока без状態ное ядро не вышло, вам может понадобиться аффинность сессий, обсуждавшаяся в системном дизайне.
Через вызов инструмента утекли конфиденциальные данные. Как это произошло?
Две частые причины — инструмент с более широкими правами, чем нужно, или отсутствие санитизации выходных данных до попадания в контекст модели. Решения — наименьшие привилегии для каждого инструмента и шаг санитизации перед контекстом. Связано и с отравлением инструментов: модель можно инструктировать пересылать данные без явного кода для эксфильтрации.
Распространённые ошибки на собеседованиях по MCP
Есть несколько типичных паттернов, которые стоит отметить отдельно:
-
Восприятие MCP как «прямой замены» REST после объяснённого ранее различия
-
Определение инструментов и ресурсов по типу данных после уже изложенной модели контроля
-
Предположение, что одно и то же правило аутентификации применимо к
stdioи HTTP -
Дача «устаревшего SSE‑ответа» после изменения транспорта, описанного ранее
-
Смешивание выпущенной спецификации и RC 2026-07-28
-
Пропуск рисков безопасности из раздела выше при проектировании системы вызова инструментов
Большинство этих ошибок идут из старых туториалов.
Как готовиться к собеседованиям по MCP
Для этого протокола важна практика.
-
Соберите небольшой сервер на FastMCP или TypeScript SDK, откройте один инструмент и один ресурс и запустите его
-
Установите официальный Inspector (
npx @modelcontextprotocol/inspector) и посмотрите «сырое» JSON‑RPC‑движение, которое он показывает -
Подключите ваш сервер к реальному клиенту — Claude Desktop, VS Code или Cursor — и посмотрите на рукопожатие инициализации
-
Читайте настоящий changelog спецификации, а не пересказы, особенно записи от 2025-06-18 и 2025-11-25
-
Выберите один сценарий системного дизайна из этой статьи и напишите полный ответ до собеседования
Эти шаги отделяют знание определений от практического опыта.
Заключение
Считаю, что просто заучивать определения MCP уже недостаточно. Сложнее — знать, какой ответ относится к какой версии спецификации. В текущих развёртываниях всё ещё есть сессии на уровне соединения; RC 2026-07-28 указывает на без状態ное ядро. Если смешать эти два факта, архитектурный ответ звучит уверенно, но неточно.
Поэтому я бы относился к MCP как к чему‑то, что нужно пробовать, а не только читать. Соберите небольшой сервер из раздела подготовки, посмотрите, как клиент листит инструменты и читает ресурсы, и обратите внимание, где заканчивается протокол и начинается дизайн вашего приложения. Полезный ответ на собеседовании — это не «MCP — это USB‑C для AI». Это «вот что MCP стандартизирует, вот что — нет, и вот что недавно изменилось».
Для более структурированного продолжения наш курс Building Scalable Agentic Systems рассматривает MCP и A2A в контексте дизайна, тестирования и развёртывания агентов.
FAQs
Нужно ли запоминать даты всех версий спецификации?
Нет. Знайте порядок и что менялось на каждом шаге, особенно переключение транспорта и какая версия уже вышла. Интервьюерам важнее, можете ли вы рассуждать, почему произошло изменение, чем то, повторите ли вы точную дату.
Sampling устаревает. Стоит ли его всё ещё изучать?
Да, пока что. Он останется полностью работоспособным как минимум год после публикации устаревания. Поймите, почему его выводят: риски безопасности и ограниченное принятие по сравнению со сложностью.
С какого SDK начать, если я никогда не работал с MCP?
Python с FastMCP — самый простой старт, потому что API на декораторах скрывает большую часть шаблонного кода. Используйте TypeScript, если ваш стек уже сильно завязан на JavaScript; этот SDK тоже в Tier 1.
Будет ли MCP по‑прежнему важен после выхода спецификации 2026-07-28?
Скорее всего, да. Без状態ное ядро, обсуждённое выше, призвано исправить проблемы масштабирования в продакшне, с которыми сталкивались команды. Упрощение протокола под давлением — часто признак зрелости, а не упадка.
Насколько техническими бывают собеседования начального уровня по MCP?
Зависит от роли. Общее собеседование по AI‑инжинирингу может ограничиться хостом, клиентом и сервером и разницей между tools и resources. На платформенных или инфраструктурных ролях могут быстро перейти к транспортам и аутентификации, даже на относительно младшем уровне.