MCPprotocol.ru

Главная / Возможности MCP

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

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

Ревизия MCP 2026-07-28 · проверено 03.10.2026 · Markdown

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

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

Возможности сервера MCP
ВозможностьКто выбираетЧто этоОсновные методы
Инструмент (Tool)МодельФункция с именем, описанием и схемой параметровtools/list, tools/call
Ресурс (Resource)Приложение или пользовательДанные для контекста, доступные по адресу (URI)resources/list, resources/read, resources/templates/list
Шаблон запроса (Prompt)ПользовательЗаготовка сообщений или сценарияprompts/list, prompts/get

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

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

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

  • Имя — уникальный идентификатор инструмента на сервере.
  • Описание — текст для модели: что инструмент делает и когда применять. От качества описания зависит, выберет ли модель инструмент верно.
  • Схема входных параметров — JSON Schema. В ревизии 2026-07-28 допускаются любые ключевые слова JSON Schema 2020-12.
  • Результат — содержимое для модели и, при необходимости, структурированные данные: в ревизии 2026-07-28 структурированный результат может быть любым значением JSON.
Пример ответа на tools/list (вымышленный сервер)
{
  "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. Выбор всегда за пользователем: ассистент не подставляет шаблон сам.

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

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

В ревизии 2026-07-28 такой запрос строится на многошаговых запросах: сервер возвращает промежуточный результат типа input_required со списком нужных сведений, а клиент повторяет исходный запрос, добавив ответы. Открытый двунаправленный поток для этого больше не нужен.

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

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

Устаревшие возможности
ВозможностьЧто былоЧто использовать вместо
Roots устарелоКлиент сообщал серверу доступные каталогиПути в параметрах инструментов, адреса ресурсов, настройки сервера
Sampling устарелоСервер просил хост обратиться к моделиПрямая работа с интерфейсом поставщика модели
Logging устарелоЖурнал сервера передавался клиентуВывод в stderr (stdio) или OpenTelemetry

Полный перечень — в разделе «Изменения и устаревшее».