# Prompts: шаблоны запросов

> Шаблоны запросов MCP в редакции 2026-07-28 - prompts/list и prompts/get, аргументы, состав сообщений, ошибки и чем шаблоны отличаются от инструментов

Страница: https://mcpdoc.ru/protocol/prompts/
Указатель сайта: https://mcpdoc.ru/llms.txt

Prompt - готовый шаблон сообщений, который сервер предлагает пользователю. Пользователь выбирает шаблон сам, обычно командой в интерфейсе, и при необходимости задаёт аргументы. Клиент получает список запросом `prompts/list`, а готовые сообщения - запросом `prompts/get`.

описана редакция 2026-07-28, сверено со спецификацией 4 октября 2026

Источник - страница [Prompts](https://modelcontextprotocol.io/specification/2026-07-28/server/prompts) спецификации. В примерах для краткости опущено поле `_meta`; в настоящем запросе оно [обязательно](https://mcpdoc.ru/protocol/stateless/).

## Кто решает, когда использовать

Шаблонами управляет пользователь. Спецификация уточняет: речь о том, кто решает применить шаблон, а не о том, кто написал его текст. Текст задаёт сервер.

| Примитив | Кто решает | Страница |
|---|---|---|
| Tools | модель | [Tools](https://mcpdoc.ru/protocol/tools/) |
| Resources | приложение | [Resources](https://mcpdoc.ru/protocol/resources/) |
| Prompts | пользователь | эта страница |

Способ показа протокол не предписывает. Частый вариант - команды, начинающиеся с косой черты.

## Объявление возможности

```json
{
  "capabilities": {
    "prompts": { "listChanged": true }
  }
}
```

## Список

```json title="Ответ на prompts/list"
{
  "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` | необязательные значки |

Список не зависит от соединения, но может зависеть от прав, с которыми пришёл запрос. Результат несёт [подсказки для кэша](https://mcpdoc.ru/protocol/resources/#подсказки-для-кэша) `ttlMs` и `cacheScope`.

## Получение шаблона

```json title="Запрос"
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "prompts/get",
  "params": {
    "name": "code_review",
    "arguments": { "code": "def hello():\n    print('world')" }
  }
}
```

```json title="Ответ"
{
  "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` просьбой о дополнительных данных - см. [«Многошаговые запросы»](https://mcpdoc.ru/protocol/mrtr/).

## Изменение списка

Серверу, объявившему `listChanged`, следует присылать уведомление `notifications/prompts/list_changed` клиентам, которые открыли поток `subscriptions/listen` и попросили об этом.

## Ошибки

| Ситуация | Код |
|---|---|
| неизвестное имя шаблона | `-32602` |
| не передан обязательный аргумент | `-32602` |
| внутренняя ошибка | `-32603` |

## Требование безопасности

Реализации обязаны проверять все входные и выходные данные шаблонов, чтобы не допустить атак внедрением и несанкционированного доступа к ресурсам. Текст шаблона приходит с сервера, поэтому к нему относится всё, что сказано о недоверенном содержимом на странице [«Отравление инструментов и внедрение инструкций»](https://mcpdoc.ru/security/threats/).
