Elicitation: вопрос пользователю
Elicitation в MCP 2026-07-28 - как сервер запрашивает данные у пользователя, режимы form и url, три варианта ответа, запрет на секреты в форме и правила работы со ссылками
описана редакция 2026-07-28, сверено со спецификацией 4 октября 2026
Источник - страница Elicitation спецификации.
Как это устроено в редакции 2026-07-28
Заголовок раздела «Как это устроено в редакции 2026-07-28»Сервер не отправляет вопрос отдельным запросом. Он возвращает результат «нужны данные», внутри которого лежит elicitation/create, а клиент присылает ответ в повторе исходного запроса. Весь порядок описан на странице «Многошаговые запросы».
Объявление возможности
Заголовок раздела «Объявление возможности»Клиент, который умеет задавать вопросы пользователю, объявляет возможность elicitation в _meta каждого запроса.
{ "_meta": { "io.modelcontextprotocol/clientCapabilities": { "elicitation": { "form": {}, "url": {} } } }}Пустой объект "elicitation": {} означает поддержку только режима form. Сервер не должен использовать режим, который клиент не объявил.
Общие параметры вопроса
Заголовок раздела «Общие параметры вопроса»| Параметр | Значение |
|---|---|
mode |
form или url; если не указан, считается form |
message |
понятное человеку объяснение, зачем нужны данные |
Режим form
Заголовок раздела «Режим form»Сервер присылает схему ожидаемого ответа в параметре requestedSchema.
{ "method": "elicitation/create", "params": { "mode": "form", "message": "Please provide your GitHub username", "requestedSchema": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"] } }}{ "action": "accept", "content": { "name": "octocat" }}Схема намеренно ограничена: только плоский объект с простыми полями. Вложенные объекты и списки объектов не поддерживаются.
| Тип поля | Что можно задать |
|---|---|
| строка | длину, формат (email, uri, date, date-time), значение по умолчанию |
| число или целое | минимум, максимум, значение по умолчанию |
| логическое | значение по умолчанию |
| выбор одного | перечень значений, с подписями или без |
| выбор нескольких | список из перечня, с ограничением количества |
Режим url
Заголовок раздела «Режим url»Сервер присылает ссылку. Пользователь открывает её и вводит данные на странице, которой доверяет. Клиент видит только саму ссылку.
{ "method": "elicitation/create", "params": { "mode": "url", "url": "https://mcp.example.com/ui/set_api_key", "message": "Please provide your API key to continue." }}{ "action": "accept" }Ответ accept здесь значит только согласие открыть ссылку. Чем закончилось действие на странице, клиент не знает. Он повторяет исходный запрос, и сервер сам решает: вернуть итог или снова ответить «нужны данные».
Режим url не служит для доступа клиента к самому серверу MCP - этим занимается авторизация. Он нужен, когда серверу требуются секреты пользователя или разрешение в стороннем сервисе.
Три варианта ответа
Заголовок раздела «Три варианта ответа»| Действие | Что произошло | Поле content |
|---|---|---|
accept |
пользователь согласился и отправил данные | в режиме form - данные; в режиме url - отсутствует |
decline |
пользователь явно отказался | обычно отсутствует |
cancel |
пользователь закрыл окно, не выбрав | обычно отсутствует |
Серверу не следует рассчитывать, что вопрос всегда получит ответ. Отказ и отмену он обязан обрабатывать.
Требования к серверу
Заголовок раздела «Требования к серверу»- Формой нельзя запрашивать пароли, ключи API, токены и платёжные данные. Для них обязателен режим
url. - Имя, почту и другие обычные сведения запрашивать формой не запрещено.
- Вопрос обязан быть привязан к клиенту и пользователю.
- Нельзя полагаться на сведения о личности пользователя, полученные от клиента, без собственной проверки. Пример из спецификации: ответ «я joe@example.com» ничего не доказывает, личность определяется через авторизацию.
- В ссылке не должно быть чувствительных сведений о пользователе (учётных и персональных данных) и готового доступа к защищённому ресурсу.
- Сервер обязан убедиться, что ссылку открыл тот же пользователь, для которого она создана. Иначе возможна подмена: ссылку передают другому человеку, и его разрешение привязывается к чужой учётной записи.
- Учётные данные стороннего сервиса не должны проходить через клиента и не должны ему передаваться.
Требования к клиенту
Заголовок раздела «Требования к клиенту»- Показывать, какой сервер задаёт вопрос.
- Давать понятные варианты «отказаться» и «отменить».
- В режиме
form- позволить просмотреть и исправить ответ до отправки. - В режиме
url: не загружать ссылку заранее, не открывать без явного согласия, показывать адрес целиком и открывать так, чтобы ни клиент, ни модель не видели содержимое страницы и ввод пользователя. - Не следует делать нажимаемыми ссылки из других полей вопроса: это рекомендация, остальные пункты списка - требования.
Что читать дальше
Заголовок раздела «Что читать дальше»- Многошаговые запросы - как вопрос попадает к клиенту и возвращается.
- Модель доверия - почему ответ пользователя нельзя считать проверенным.