ГАЙД 2026

Skills over MCP: как MCP-сервер отдаёт навыки агенту (SEP-2640)

MCP-сервер теперь может отдавать не только инструменты, но и навыки: спецификация SEP-2640 стала официальным расширением протокола. Разбираем, как это устроено на уровне JSON-RPC, сколько контекста экономит и что проверить перед включением.

ГайдMCPAgent Skills
Уровень СреднийВремя чтения 12–15 минутОбновлено 05.11.2026

До недавнего времени навыки агента и его инструменты жили в двух разных каналах: файлы SKILL.md ставились из репозитория или маркетплейса плагинов, а MCP-серверы подключались отдельно, со своими правами и версиями. Расширение Skills over MCP меняет это: сервер отдаёт навык как обычный MCP-ресурс — вместе с инструментами, в одном канале доставки. Ниже — что именно описано в SEP-2640, какие вызовы делает клиент, как проверяется целостность файлов и где остаются риски.

Короткий ответ
SEP-2640 (Skills Extension) получил статус Final и опубликован как официальное расширение io.modelcontextprotocol/skills. Сервер объявляет расширение в server/discover, клиент вызывает skills/list и skills/get, а содержимое файлов читает через обычный resources/read. Навык остаётся папкой с SKILL.md по спецификации Agent Skills — меняется только способ доставки.

01Что такое Skills over MCP

Agent Skills — это формат упаковки процедурных знаний: папка, в которой лежит SKILL.md с YAML-заголовком (name, description) и, при необходимости, вспомогательные файлы, скрипты и шаблоны. Агент читает описание навыка постоянно, а полный текст — только когда задача совпала с описанием. Это и есть progressive disclosure: контекст не тратится на инструкции, которые сейчас не нужны.

MCP (Model Context Protocol) отвечает за другое — за подключение к внешним данным и действиям: инструменты, ресурсы, промпты. Проблема была в том, что знания и доступ шли по разным каналам: навыки ставились плагином, MCP-серверы настраивались отдельно, права и версии тоже жили раздельно. Skills over MCP сводит это в один канал: сервер отдаёт и инструменты, и инструкцию по работе с ними.

Три уровня, которые не надо путать
Хост агентаРешает, что попадёт в контекст: список навыков, их описания, момент загрузки полного текстакто читаетMCP-серверОтдаёт инструменты и навыки: объявляет расширение, реализует skills/list и skills/getчто хранитНавык (SKILL.md + файлы)Инструкции, чек-листы, шаблоны и скрипты, которые описывают, как выполнять работузачем
Способ доставки инструкцийГде живётПлюсыМинусы
Навык на MCP-сервереРядом с инструментами, один серверОдин канал, одни права, обновление без переустановкиТребует поддержки расширения клиентом
Навык из репозитория / плагинаЛокальная папка или маркетплейсРаботает без сервера, версионируется в gitОтдельный канал доставки и отдельные права
Инструкции в описании инструментаСхема tools/listНичего не нужно настраиватьВесь текст грузится при подключении, съедает контекст
Промпт в чатеСама сессияМаксимально быстроНе переиспользуется, теряется между сессиями
Четыре способа передать агенту «как делать»; расширение закрывает первый, не отменяя остальные.
Инструкции в описании инструмента остаются самым дорогим вариантом по контексту — они загружаются всегда.
Это не замена MCP и не замена навыков
Расширение описывает только доставку. Оно не учит модель лучше рассуждать и не отменяет необходимость инструментов: без MCP навык не получит доступ к данным, без навыка сервер не объяснит, в каком порядке вызывать его инструменты.

02Как это работает по протоколу

Сервер, который поддерживает расширение, обязан объявить две вещи: возможность resources и само расширение io.modelcontextprotocol/skills в ответе server/discover. Клиент не гадает: он вызывает skills/list и skills/get только после того, как увидел объявление.

server-discover.jsonjson
{
  "capabilities": {
    "resources": {},
    "extensions": {
      "io.modelcontextprotocol/skills": {
        "directoryRead": true
      }
    }
  }
}

Флаг directoryRead необязательный и по умолчанию false: он разрешает клиенту просматривать папку навыка через resources/directory/read. Пустой объект расширения означает поддержку без чтения каталога. Примеры в документации используют ревизию протокола 2026-07-28 или новее.

Один цикл: от объявления до загрузки навыка
1server/discoverСервер объявляет resources и расширение skills2skills/listКлиент получает список: URI, frontmatter, манифест файлов с digest3skills/getТочное чтение записи по URI, если нужна одна карточка навыка4resources/readХост читает SKILL.md и вспомогательные файлы по мере надобностиСхема по документации расширения; чтение SKILL.md само по себе навык не активирует
skills-list.jsonjson
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "skills/list",
  "params": {}
}

// ответ (сокращён)
{
  "result": {
    "resultType": "complete",
    "skills": [{
      "uri": "skill://code-review/SKILL.md",
      "frontmatter": {
        "name": "code-review",
        "description": "Review code using the team's checklist."
      },
      "resources": [
        {"uri": "skill://code-review/SKILL.md",
         "digest": "sha256:d2489d6c...", "size": 149}
      ]
    }],
    "ttlMs": 300000,
    "cacheScope": "public"
  }
}

В манифесте перечислены все файлы навыка: SKILL.md и каждый вспомогательный файл, с SHA-256-дайджестом и размером в байтах. Вместо манифеста сервер может вернуть строку dynamic, если содержимое генерируется на лету. Список поддерживает пагинацию: при наличии nextCursor клиент передаёт его в params.cursor.

Поле ответа skills/listЧто означаетЗачем нужно
uriАдрес SKILL.md навыкаИдентификация вместе с сервером-источником
frontmatterВсе поля YAML-заголовка без измененийКлиент не изобретает метаданные заново
resourcesМанифест файлов: URI, digest, sizeПроверка целостности до загрузки в контекст
ttlMs, cacheScopeСвежесть и область кэшированияКэш не путает навыки разных серверов
resultTypeВсегда completeПризнак, что запись самодостаточна
Состав записи навыка по спецификации расширения.
Идентичность важнее имени
Идентичность навыка — это идентичность сервера плюс URI навыка. Имена — только ярлыки и не гарантируют уникальность, поэтому хост обязан сохранять и сервер, и URI в реестрах, подтверждениях и кэше. Определять навык только по схеме skill:// запрещено.

03Сколько контекста это экономит

Главный аргумент за такой способ доставки — не удобство, а расход контекстного окна. Когда инструкция живёт в описании инструментов, она загружается при каждом подключении. Когда инструкция живёт в навыке, при подключении видны только имя и описание, а полный текст читается по требованию.

Сколько контекста занимает инструкция до первого запросатыс. токенов, оценки из публичных разборов, ноябрь 2026
0 тыс. токенов25 тыс. токенов50 тыс. токеновGitHub MCP, ранние версии50 тыс. токеновGitHub MCP, сокращённый23 тыс. токеновSKILL.md вместо сервера0,2 тыс. токенов
Порядок величин, а не точный замер: 23–50 тыс. токенов на схему инструментов GitHub против ~200 токенов инструкции «используй gh CLI». Источник — разбор The New Stack со ссылкой на публичные описания Anthropic.

Те же цифры фигурируют в разборах progressive discovery: на одном рабочем сценарии переход от «загрузить все определения» к «искать инструменты по мере надобности» сократил расход со 150 000 до 2 000 токенов, а в тесте с пятью серверами и 58 инструментами — снизил стартовые 55 000 токенов примерно на 85% и поднял точность выбора инструмента. Это данные авторов публикаций, а не независимый бенчмарк, и на своём стеке цифры будут другими.

Экономия не бесплатна
Навык, который читается по требованию, добавляет лишний шаг: сначала выбор по описанию, потом чтение файлов. Если описания написаны плохо, агент либо не выберет навык, либо выберет не тот. Описание — это и документация, и подсказка для маршрутизации.

04Безопасность: что даёт digest и что не даёт

Навык — это исполняемая единица поставки: инструкции могут подтолкнуть агента к опасному действию, а скрипт внутри папки — сделать что угодно в пределах выданных прав. Обзорная работа по экосистеме навыков оценивает долю community-навыков с уязвимостями в 26,1% — это чужие замеры, но порядок проблемы они показывают.

РискЧто делает протоколЧто остаётся на стороне хоста
Подмена файла навыкаSHA-256 digest на каждый файлСверить digest до загрузки в контекст
Навык с чужого сервера под тем же именемидентичность = сервер + URIХранить сервер в реестрах и подтверждениях
Скрытая активация при чтениичтение ≠ активацияПроводить чтение через путь загрузки с подтверждением
Вредные инструкции внутри навыкане решается протоколомРевью текста и скриптов, ограничение прав
Полный доступ через инструменты серверачастично: отзыв правЯвное согласие человека на опасные операции
Расширение закрывает целостность и идентичность, но не оценивает смысл инструкций.

Отдельно стоит правило: чтение SKILL.md через resources/read само по себе навык не активирует. Хост обязан провести чтение через свой путь загрузки навыка, проверить содержимое и, если требуется, запросить подтверждение пользователя. Это важно, потому что иначе любой сервер мог бы «влить» инструкции в контекст одним чтением ресурса.

05Как включить у себя

Две стороны: сервер и клиент
1
Соберите папку навыка
SKILL.md с name и description плюс вспомогательные файлы только по делу: чем короче описание, тем точнее срабатывание.
terminalcopy
my-skill/
  SKILL.md
  references/checklist.md
  scripts/check.py
2
Объявите расширение на сервере
В ответе server/discover добавьте resources и io.modelcontextprotocol/skills. directoryRead включайте, только если реально поддерживаете чтение каталога.
terminalcopy
{"capabilities":{"resources":{},"extensions":{"io.modelcontextprotocol/skills":{}}}}
3
Реализуйте skills/list и skills/get
Оба метода обязательны. В список кладите полный манифест файлов с digest и size, отдавайте resultType, ttlMs и cacheScope.
terminalcopy
skills/list -> {skills:[{uri, frontmatter, resources}]}
4
Отдайте файлы через resources/read
Содержимое SKILL.md и вспомогательных файлов — обычные MCP-ресурсы. Схему skill:// использовать желательно, но не обязательно.
terminalcopy
resources/read uri=skill://my-skill/SKILL.md
5
Проверьте на клиенте
Клиент должен сначала увидеть объявление в server/discover, потом вызвать skills/list. Если клиент не поддерживает расширение — навык просто не появится, ошибки не будет.
terminalcopy
# проверка: в логах клиента есть skills/list и чтение SKILL.md
Поддержка ещё докатывается
Расширение финальное, но SDK и хосты реализуют его постепенно — в документации есть матрица поддержки клиентов. Если ваш агент навыки с сервера не видит, дело чаще в клиенте, а не в сервере.

06Насколько это уже прижилось

Косвенный показатель — интерес к самим репозиториям. Публичный репозиторий навыков Anthropic остаётся самым заметным, спецификация MCP — второй по массе, а репозиторий самого расширения пока небольшой: это нормально для спецификации, которой меньше года.

Звёзды GitHub у репозиториев темыснято 05.11.2026 через GitHub API
0 звёзд100 000 звёзд200 000 звёздanthropics/skills187 581 звёздmodelcontextprotocol/modelcontext…9 621 звёздmodelcontextprotocol/ext-skills762 звёзд
Звёзды — не качество и не внедрение, но показывают, куда смотрит сообщество. Числа меняются ежедневно.
Хронология
Окт 2025Запуск Agent SkillsФормат SKILL.md появляется впродуктах AnthropicДек 2025Открытый стандартСпецификация Agent Skillsпубликуется для других клиентовИюл 2026Ревизия MCP 2026-07-28Крупное обновление протокола, накоторое опирается расширениеОкт–ноя 2026SEP-2640 FinalSkills over MCP становитсяофициальным расширением MCP

Практический вывод: если вы пишете MCP-сервер и у него есть нетривиальный сценарий работы («сначала найди, потом сверь, потом обнови»), логично положить этот сценарий в навык рядом с инструментами. Если сценарий простой, достаточно описаний инструментов — лишний слой только запутает.

07Итог

Skills over MCP решает конкретную инженерную задачу: убирает второй канал доставки и привязывает инструкции к тому сервису, который они описывают. Механика небольшая — объявление расширения, два метода, чтение файлов через resources и digest на каждый файл. Основная работа остаётся не в протоколе, а в качестве самих навыков и в дисциплине подтверждений на стороне хоста.

Частые вопросы

Что такое SEP-2640 простыми словами?
Это официальное расширение MCP, которое позволяет серверу отдавать агенту навыки — папки с SKILL.md и вспомогательными файлами — тем же каналом, что и инструменты. Клиент видит список навыков и читает нужный файл только при необходимости.
Чем это отличается от установки навыка из репозитория?
Каналом доставки и правами. Навык из репозитория ставится отдельно от MCP-серверов; навык на сервере приезжает вместе с инструментами, обновляется на сервере и не требует переустановки у клиента.
Обязательно ли использовать схему skill://?
Нет. Спецификация рекомендует её, но разрешает другую схему. Хостам при этом запрещено определять навык только по схеме URI: идентичность складывается из сервера-источника и URI навыка.
Заменяет ли Skills over MCP сами MCP-серверы?
Нет. Навык описывает, как выполнять работу, но не даёт доступа к данным и действиям. Без инструментов сервера навык останется текстовой инструкцией.
Как проверить, что сервер поддерживает расширение?
Посмотреть ответ server/discover: там должны быть объявлены capability resources и расширение io.modelcontextprotocol/skills. Клиенты вызывают skills/list только после этого объявления.
Что будет, если клиент не поддерживает расширение?
Сервер продолжит работать как обычный MCP-сервер с инструментами. Навыки просто не появятся в клиенте — отдельной ошибки или падения не предполагается.

Источники

Итог гайда
8,7/ 10
Материал объясняет механику расширения по первичной документации и отделяет проверенные факты от чужих оценок. Оценка — полезность и точность гайда, не рейтинг продукта.
Собираете агента под задачу?
Каталог AI-агентов с единой методикой оценки, фильтрами и сравнением.