Prompts: шаблоны запросов
Шаблоны запросов MCP в редакции 2026-07-28 - prompts/list и prompts/get, аргументы, состав сообщений, ошибки и чем шаблоны отличаются от инструментов
описана редакция 2026-07-28, сверено со спецификацией 4 октября 2026
Источник - страница Prompts спецификации. В примерах для краткости опущено поле _meta; в настоящем запросе оно обязательно.
Кто решает, когда использовать
Заголовок раздела «Кто решает, когда использовать»Шаблонами управляет пользователь. Спецификация уточняет: речь о том, кто решает применить шаблон, а не о том, кто написал его текст. Текст задаёт сервер.
| Примитив | Кто решает | Страница |
|---|---|---|
| Tools | модель | Tools |
| Resources | приложение | Resources |
| Prompts | пользователь | эта страница |
Способ показа протокол не предписывает. Частый вариант - команды, начинающиеся с косой черты.
Объявление возможности
Заголовок раздела «Объявление возможности»{ "capabilities": { "prompts": { "listChanged": true } }}{ "jsonrpc": "2.0", "id": 1, "result": { "resultType": "complete", "prompts": [ { "name": "code_review", "title": "Request Code Review", "description": "Asks the LLM to analyze code quality and suggest improvements", "arguments": [ { "name": "code", "description": "The code to review", "required": true } ] } ], "ttlMs": 300000, "cacheScope": "public" }}| Поле | Что это |
|---|---|
name |
уникальное имя шаблона |
title |
необязательное название для показа человеку |
description |
необязательное описание |
arguments |
необязательный список аргументов |
icons |
необязательные значки |
Список не зависит от соединения, но может зависеть от прав, с которыми пришёл запрос. Результат несёт подсказки для кэша ttlMs и cacheScope.
Получение шаблона
Заголовок раздела «Получение шаблона»{ "jsonrpc": "2.0", "id": 2, "method": "prompts/get", "params": { "name": "code_review", "arguments": { "code": "def hello():\n print('world')" } }}{ "jsonrpc": "2.0", "id": 2, "result": { "resultType": "complete", "description": "Code review prompt", "messages": [ { "role": "user", "content": { "type": "text", "text": "Please review this Python code:\ndef hello():\n print('world')" } } ] }}У каждого сообщения есть роль (user или assistant) и содержимое одного из типов: text, image, audio, resource_link или resource. Изображение и звук передаются в Base64 с указанием MIME-типа.
Сервер может ответить на prompts/get просьбой о дополнительных данных - см. «Многошаговые запросы».
Изменение списка
Заголовок раздела «Изменение списка»Серверу, объявившему listChanged, следует присылать уведомление notifications/prompts/list_changed клиентам, которые открыли поток subscriptions/listen и попросили об этом.
| Ситуация | Код |
|---|---|
| неизвестное имя шаблона | -32602 |
| не передан обязательный аргумент | -32602 |
| внутренняя ошибка | -32603 |
Требование безопасности
Заголовок раздела «Требование безопасности»Реализации обязаны проверять все входные и выходные данные шаблонов, чтобы не допустить атак внедрением и несанкционированного доступа к ресурсам. Текст шаблона приходит с сервера, поэтому к нему относится всё, что сказано о недоверенном содержимом на странице «Отравление инструментов и внедрение инструкций».