# Возможности MCP

> Сервер MCP предлагает приложению инструменты, ресурсы и шаблоны запросов. Здесь показано, чем они различаются и как выглядят.

Ревизия MCP 2026-07-28 · проверено 03.10.2026 · https://mcpprotocol.ru/primitives/

## Три возможности сервера

Сервер MCP может предложить приложению три вида возможностей. Они различаются тем, кто решает, что использовать: модель, приложение или пользователь.

**Возможности сервера MCP**

| Возможность | Кто выбирает | Что это | Основные методы |
|---|---|---|---|
| [Инструмент](https://mcpprotocol.ru/glossary/#tool) (Tool) | Модель | Функция с именем, описанием и схемой параметров | `tools/list`, `tools/call` |
| [Ресурс](https://mcpprotocol.ru/glossary/#resource) (Resource) | Приложение или пользователь | Данные для контекста, доступные по адресу (URI) | `resources/list`, `resources/read`, `resources/templates/list` |
| [Шаблон запроса](https://mcpprotocol.ru/glossary/#prompt) (Prompt) | Пользователь | Заготовка сообщений или сценария | `prompts/list`, `prompts/get` |

Сервер объявляет, какие из трёх возможностей он поддерживает. Минимальный сервер может предлагать только один инструмент.

## Инструменты

Инструмент — единица действия. Сервер описывает каждый инструмент так, чтобы модель могла решить, когда его вызвать, и правильно составить параметры.

- **Имя** — уникальный идентификатор инструмента на сервере.
- **Описание** — текст для модели: что инструмент делает и когда применять. От качества описания зависит, выберет ли модель инструмент верно.
- **Схема входных параметров** — JSON Schema. В ревизии 2026-07-28 допускаются любые ключевые слова JSON Schema 2020-12.
- **Результат** — содержимое для модели и, при необходимости, структурированные данные: в ревизии 2026-07-28 структурированный результат может быть любым значением JSON.

```
{
  "tools": [
    {
      "name": "get_stock",
      "description": "Возвращает остаток товара на складе по артикулу.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sku": { "type": "string", "description": "Артикул товара" }
        },
        "required": ["sku"]
      }
    }
  ],
  "ttlMs": 60000,
  "cacheScope": "public"
}
```

> Поля `ttlMs` и `cacheScope` обязательны в результатах списков с ревизии 2026-07-28: они подсказывают клиенту, как долго можно хранить список. Пример упрощён и вымышлен, полный набор обязательных полей — в спецификации.

### Безопасность инструментов

Спецификация называет инструменты путём к выполнению произвольного кода. Поэтому хост обязан получить явное согласие пользователя перед вызовом, а описания и пометки инструментов следует считать недоверенными данными, если сервер не доверенный.

Практическая рекомендация: подключайте только те серверы, чьё происхождение вы можете проверить, и ограничивайте права, которые сервер получает в ваших системах.

## Ресурсы

Ресурс — данные, которые приложение подгружает в контекст: файл, строка таблицы, страница справки. У каждого ресурса есть адрес (URI). Список доступных ресурсов клиент получает методом `resources/list`, а содержимое — методом `resources/read`. Для семейства однотипных ресурсов сервер публикует шаблоны адресов (`resources/templates/list`).

Ресурс отличается от инструмента тем, что его не «вызывает» модель по своему решению: приложение или пользователь выбирает, что добавить в контекст. Для получения изменений в ревизии 2026-07-28 клиент подписывается на уведомления через единый поток `subscriptions/listen`.

> Если ошибка возникает при чтении несуществующего ресурса, ревизия 2026-07-28 использует код `-32602` (неверные параметры) вместо прежнего `-32002`.

## Шаблоны запросов

Шаблон запроса — готовый сценарий, который сервер предлагает пользователю: например, «проверить код на уязвимости» или «подготовить сводку по неделе». Клиент получает список методом `prompts/list`, а заполненный шаблон — методом `prompts/get`. Выбор всегда за пользователем: ассистент не подставляет шаблон сам.

## Запрос данных у пользователя

Единственная возможность, которую в действующей ревизии предлагает клиент серверу: [запрос данных у пользователя](https://mcpprotocol.ru/glossary/#elicitation) (elicitation). Сервер в ходе работы может попросить выбрать вариант, уточнить параметр или подтвердить действие, например стоимость нового проекта перед созданием.

В ревизии 2026-07-28 такой запрос строится на [многошаговых запросах](https://mcpprotocol.ru/glossary/#mrtr): сервер возвращает промежуточный результат типа `input_required` со списком нужных сведений, а клиент повторяет исходный запрос, добавив ответы. Открытый двунаправленный поток для этого больше не нужен.

## Что устарело

Три возможности признаны устаревшими в ревизии 2026-07-28. Они продолжают работать не менее двенадцати месяцев, но новые реализации не должны их добавлять.

**Устаревшие возможности**

| Возможность | Что было | Что использовать вместо |
|---|---|---|
| Roots [УСТАРЕЛО]устарело | Клиент сообщал серверу доступные каталоги | Пути в параметрах инструментов, адреса ресурсов, настройки сервера |
| Sampling [УСТАРЕЛО]устарело | Сервер просил хост обратиться к модели | Прямая работа с интерфейсом поставщика модели |
| Logging [УСТАРЕЛО]устарело | Журнал сервера передавался клиенту | Вывод в stderr (stdio) или OpenTelemetry |

Полный перечень — в разделе [«Изменения и устаревшее»](https://mcpprotocol.ru/changes/).

