Бета · редакция 2026.10-beta1 · MCP 2026-07-28

Сообщения JSON RPC

L02 · MCP 2026-07-28 · открытая бета · редакция 2026.10-beta1

Мне проще отлаживать MCP, когда я сначала вижу обычный JSON-RPC. Запрос имеет jsonrpc, id, method и при необходимости params. Ответ возвращает тот же id и ровно один из result или error. Это маленький контракт, на котором держится корреляция параллельных операций.

Предварительно: L01

Как я это использую

Notification не содержит id и не ожидает ответа. Строковый id удобен в трассировке, но его нельзя путать с идентификатором пользователя или durable task. Ошибка JSON-RPC описывает проблему протокола или вызова, а прикладная ошибка инструмента может приходить в результате tools/call с isError. Для профиля 2026-07-28 добавляются метаданные каждого запроса и дискриминатор resultType в результате.

Корреляция сообщений

Разбираем конкретный контракт

Это учебный fixture: поля с доменом .example и идентификаторы вымышлены. Если показан фрагмент, его нужно поместить в соответствующий envelope выбранного профиля.

{
  "jsonrpc": "2.0",
  "id": "req-12",
  "method": "tools/list",
  "params": {
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "2026-07-28",
      "io.modelcontextprotocol/clientCapabilities": {},
      "io.modelcontextprotocol/clientInfo": {
        "name": "course-client",
        "version": "1.0.0"
      }
    }
  }
}

Лаборатория · L02

Измените условия, проверьте результат и разберите ошибку. Все адреса и данные учебные.

Что легко сломать

Я встречал логи, где клиент сопоставлял ответы по порядку прихода. При двух параллельных вызовах это ломается. Сопоставляйте по id, проверяйте форму envelope и не принимайте одновременно result и error. Batch не стоит считать универсально поддерживаемым способом ускорения MCP.

Практика и самопроверка

Исправить повреждённый envelope и сопоставить запрос с ответом. Ошибки: неверный id, смешение result и error.

Я советую сначала предсказать результат, затем изменить один параметр в лаборатории и объяснить разницу. Сохраните небольшой fixture с нормальным и ошибочным случаем для своего проекта. Тренажёр открыт без регистрации; для сохранения ответов на тесты и завершения урока войдите в аккаунт.

В конце страницы — три вопроса. После правильных ответов можно завершить урок; ошибка в следующей тренировке не стирает уже полученное подтверждение этой редакции теста.

На что я опирался

Профиль и ссылки проверены 15 октября 2026. Core, deprecated compatibility и extensions в этом курсе помечены отдельно. Примеры объясняют выбранные сценарии; для реализации сверяйте нормативные MUST/SHOULD и schema соответствующей версии.

Проверка знаний

Читайте свободно. Войдите, чтобы отвечать и сохранять прогресс.

Чем сопоставляются запрос и ответ?

Чем notification отличается от request?

Можно ли вернуть result и error вместе?