MCP Docs ревизия 2026-07-28

Начало / Понятия / Обнаружение

Обнаружение (server/discover)

Как сервер рассказывает о себе

ПереводОснова: Спецификация, раздел «Discovery»Сверено 05.10.2026, ревизия 2026-07-28Открыть .md

server/discover позволяет клиенту узнать поддерживаемые версии протокола, возможности и идентичность сервера до любых других запросов. Реализовать его ДОЛЖНЫ все серверы; клиент может его не вызывать.

Из чего состоит сервер#

Схема показывает типичный сервер MCP, разобранный на семь групп. Наведите на деталь или перемещайтесь стрелками: справа от каждой — её назначение, внизу — подробности и фрагмент сообщения.

ОбъектMCP-сервер
Источникспец. server/*
Версия2026-07-28

Запрос и ответ#

Запрос не несёт параметров, кроме стандартных полей _meta (подробнее):

json
{
  "jsonrpc": "2.0",
  "id": "discover-1",
  "method": "server/discover",
  "params": {
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "2026-07-28",
      "io.modelcontextprotocol/clientInfo": {
        "name": "ExampleClient",
        "version": "1.0.0"
      },
      "io.modelcontextprotocol/clientCapabilities": {}
    }
  }
}

Ответ содержит версии, возможности и идентичность сервера. Результат можно кэшировать:

json
{
  "jsonrpc": "2.0",
  "id": "discover-1",
  "result": {
    "resultType": "complete",
    "supportedVersions": ["2026-07-28"],
    "capabilities": {
      "tools": {},
      "resources": {}
    },
    "_meta": {
      "io.modelcontextprotocol/serverInfo": {
        "name": "ExampleServer",
        "version": "1.0.0"
      }
    },
    "instructions": "This server provides weather and resource utilities.",
    "ttlMs": 3600000,
    "cacheScope": "public"
  }
}

Таблица полей#

Поле Описание
resultType Тип результата. Для обычного ответа "complete".
supportedVersions Версии протокола, которые поддерживает сервер. Клиент выбирает одну из них для следующих запросов.
capabilities Возможности сервера: инструменты, ресурсы, шаблоны запросов и другие.
_meta["io.modelcontextprotocol/serverInfo"] Название и версия программы сервера. Серверам СЛЕДУЕТ указывать это поле.
instructions Необязательные указания на естественном языке для языковой модели о том, как эффективно пользоваться сервером.
ttlMs Время свежести ответа в миллисекундах: подсказка для кэширования.
cacheScope Кто может использовать кэш: "public" или "private".

Как отвечает ваш сервер, можно проверить бесплатной проверкой MCP-сервера: она сверяет server/discover, ttlMs, cacheScope, resultType и название сервера с требованиями ревизии.

Когда вызывать#

Вызывать server/discover не обязательно: клиент может сразу отправить любой запрос и обработать ошибку UnsupportedProtocolVersionError, если версия не поддерживается. Но метод полезен в двух случаях.

  • Показать сведения о сервере. Из одного ответа клиент узнаёт идентичность, возможности и версии, не опрашивая по отдельности tools/list, prompts/list и resources/list.
  • Проба совместимости на stdio. У stdio нет статус-кодов HTTP, по которым можно было бы решить, возвращаться ли к старому протоколу. Поэтому клиент, который поддерживает и современные, и прежние серверы, СЛЕДУЕТ отправить server/discover первым. Правила отката: «Версии и совместимость».

Возможности и перечни#

Возможности сервера в capabilities определяют, какие методы клиент может вызывать. Например, "tools": {"listChanged": true} значит, что сервер умеет уведомлять об изменении перечня инструментов, а "resources": {} — что он отвечает на resources/list и resources/read. Клиент, получив это, не пытается вызвать то, чего сервер не поддерживает.

Результаты server/discover, tools/list, prompts/list, resources/list, resources/templates/list и resources/read несут обязательные поля ttlMs и cacheScope. ttlMs подсказывает клиенту, как долго можно не обновлять ответ, а cacheScope показывает, могут ли общие посредники (например, прокси) его кэшировать. Эти поля дополняют уведомления об изменениях.