Обнаружение: server/discover
Запрос server/discover в MCP 2026-07-28 - как клиент узнаёт версии, возможности и имя сервера, когда его вызывать и чем он отличается от MCP Server Card
появился в редакции 2026-07-28, сверено со спецификацией 4 октября 2026
По спецификации у запроса нет параметров, кроме обычного _meta.
{ "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": {} } }}{ "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" }}| Поле | Что в нём |
|---|---|
supportedVersions |
версии протокола, которые поддерживает сервер |
capabilities |
возможности сервера: инструменты, ресурсы, шаблоны и другие |
_meta с ключом io.modelcontextprotocol/serverInfo |
имя и версия программы сервера; рекомендуемое поле |
instructions |
необязательная подсказка для модели, как пользоваться сервером |
ttlMs, cacheScope |
сколько миллисекунд ответ можно считать свежим и можно ли кэшировать его на общих узлах |
Имя и версию сервер сообщает сам, протокол их не проверяет. Спецификация не рекомендует менять по ним поведение клиента и принимать по ним решения о безопасности.
Когда вызывать
Заголовок раздела «Когда вызывать»Спецификация называет два случая.
- Показать сведения о сервере. Один ответ заменяет три отдельных запроса
tools/list,prompts/listиresources/list, если нужно только узнать, что сервер умеет. - Проверить эпоху сервера на stdio. На stdio нет статуса HTTP, по которому можно понять, что сервер старый. Клиенту, который поддерживает и Modern, и Legacy, следует сначала отправить
server/discover.
Три исхода проверки на stdio:
| Ответ сервера | Вывод | Что делать |
|---|---|---|
результат DiscoverResult |
сервер Modern | выбрать версию из supportedVersions |
распознанная ошибка Modern, например -32022 |
сервер Modern, но версия не подошла | взять версию из списка в ошибке; на initialize не переходить |
| любая другая ошибка или тишина | сервер Legacy | перейти на рукопожатие initialize |
Привязывать переход к одному коду ошибки нельзя: старые серверы отвечают на незнакомый запрос по-разному, а иногда не отвечают совсем.
Клиенту, который поддерживает только Modern, проверка тоже рекомендована. Некоторые старые серверы не проверяют, что запрос пришёл после initialize, и выполнят его по старым правилам. Проверка даёт предсказуемый отказ.
Отличие от MCP Server Card
Заголовок раздела «Отличие от MCP Server Card»server/discover - принятая часть протокола и работает на любом транспорте. Авторы изменения, которое ввело server/discover, прямо пишут, что оба механизма задуманы как дополняющие друг друга.
Что читать дальше
Заголовок раздела «Что читать дальше»- Редакции и версии - полная таблица совместимости эпох.
- Ядро без состояния - поля
_meta, которые несёт каждый запрос.