Skill MCP в этой задаче — расширение MCP Skills, через которое сервер публикует инструкции Agent Skills для клиента как ресурсы. Клиент обнаруживает запись через `skills/list`, уточняет её через `skills/get`, читает `SKILL.md` через `resources/read` и сверяет содержимое с манифестом. Поддержку расширения и источник навыка проверяют до загрузки на каждом подключённом MCP-сервере.
Расширение протокола
Стабильная спецификация MCP Skills описывает транспорт навыка поверх Resources для базовой ревизии MCP 2026-07-28 и новее. Сервер объявляет расширение, клиент получает манифест и читает файлы; проверка происхождения и допуск к применению остаются отдельными действиями.
Навык здесь означает каталог инструкций с корневым `SKILL.md` и возможными вспомогательными файлами. В отличие от MCP tools, навык описывает последовательность работы для агента, а инструмент выполняет конкретную операцию. Сервер может публиковать оба вида возможностей. Поддержку навыков показывает отдельное объявление расширения. Клиент сначала смотрит объявленные расширения сервера и лишь затем вызывает методы семейства `skills/`.
По стабильной спецификации расширения, сервер сообщает поддержку в `server/discover` под именем `io.modelcontextprotocol/skills` и также объявляет Resources. Обязательные методы расширения — `skills/list` и `skills/get`. Файлы читаются обычным `resources/read`; дополнительное чтение каталога доступно только при объявленном `directoryRead`. Так в рабочей схеме разделяются перечень навыков, запись одного навыка и фактическое содержимое файла.
Это отличается от локального навыка, лежащего в репозитории команды. У локального файла источник определён файловой средой, а в MCP-расширении инструкции приходят от подключённого сервера. Клиент обязан сохранять идентичность сервера вместе с URI навыка: одинаковый `skill://` адрес у разных серверов может обозначать разные материалы. Название навыка служит меткой. Автора и право на использование подтверждают по источнику.
Манифест и URI
Запись `Skill` содержит URI корневого `SKILL.md`, frontmatter и перечень ресурсов. Для обычного стабильного набора каждый файл перечислен с размером и digest. Адрес вида `skill://workflow/SKILL.md` удобен как пример; схема `skill://` рекомендована, но спецификация допускает и другие схемы. Важно проверить точный URI из записи конкретного сервера. Навык подтверждают записью сервера, помимо проверки вида адреса.
Метод `skills/list` возвращает опубликованные записи с возможной пагинацией. Для известного URI метод `skills/get` возвращает запись одного навыка, даже если тот отсутствует в частичном списке. Сама запись содержит метаданные и манифест, а текст инструкции получают отдельным `resources/read`. Такое разделение позволяет до чтения увидеть происхождение, состав файлов и размер набора. Клиент может показать эти сведения ответственному за подключение без автоматической активации навыка.
Digest фиксирует содержимое конкретного файла на уровне байтов. При чтении host сверяет размер и digest с записью; расхождение означает необходимость остановить применение и обновить запись. Для полного перечня ресурсов удобен скрипт, который сравнивает URI, размеры и digest по манифесту. Языковая модель может объяснить найденное расхождение и предложить гипотезу об обновлении, а человек сверяет список с фактическим ответом сервера. Совпавший digest подтверждает целостность пары «манифест — файл», но доверие к поставщику оценивают отдельно.
Сохраняйте идентичность сервера, URI и набор digest для каждого одобренного навыка. При изменении файлов запрашивайте новую запись и новое решение о загрузке.
Маршрут пилота
Для будущего пилота подойдёт тестовый навык с кратким алгоритмом классификации обезличенного обращения. Сервер публикует его `SKILL.md` и разрешённый справочный файл. Клиент проверяет объявление расширения, получает запись и показывает владельцу процесса источник, описание и состав ресурсов. Тестовый набор состоит из открытых инструкций и обезличенных данных, без рабочих ключей и скрытых команд. Такой пример позволяет изучить транспорт и доверие к инструкциям без изменения внешних систем.
- Проверьте, что сервер объявил `io.modelcontextprotocol/skills` и Resources. Зафиксируйте идентичность сервера и базовую ревизию протокола.
- Вызовите `skills/list`, найдите URI тестового `SKILL.md` и сохраните запись с перечнем файлов. Для конкретного известного URI сверьте результат `skills/get`.
- Покажите человеку источник, frontmatter и полный состав ресурсов. Отдельно просмотрите содержание инструкции и возможные запросы на дополнительные права.
- Получите `SKILL.md` через `resources/read`. Сверьте размер, digest и frontmatter; вспомогательные файлы читайте по мере надобности через тот же метод.
- Измените тестовый файл на стороне пилотного сервера как отдельный контролируемый сценарий. Проверьте, что прежнее одобрение требует нового рассмотрения после изменения манифеста.
Вызов `resources/read` сам по себе только доставляет содержимое. Активацию выполняет собственный механизм host после проверки записи и требуемого согласия пользователя. Этот порядок важен для безопасного теста: можно прочитать файл для инспекции, сохранив его статус обычного внешнего текста. Содержание навыка рассматривают как недоверенный материал. Если текст просит запускать скрипт либо расширять файловые полномочия, решение проходит отдельный допуск и серверную проверку прав.
Проверка результата состоит из журнала: какой сервер предложил URI, какая запись получена, какие файлы прочитаны и кто разрешил загрузку. Для полного набора скрипт сопоставляет манифест и считанные байты, а модель помогает человеку сформулировать причину возможного расхождения. Про общую конструкцию серверных возможностей есть материал о собственном MCP-сервере; здесь проверяется публикация инструкций через расширение.
Хотите проверить публикацию навыков на тестовом сервере?
Доверие и допуск
Манифест нужен для контроля изменений, однако digest приходит с того же сервера, что и файл. Совпадение хешей показывает согласованность ответа, а происхождение и намерение автора устанавливают по отдельной процедуре доверия. Host показывает пользователю сервер-источник и содержимое навыка до загрузки. Совпадающие названия на разных серверах различают по паре «сервер, URI». Подмена локального навыка одноимённым MCP-ресурсом должна блокироваться правилами host.
| Проверка | Что сверять | Решение |
|---|---|---|
| Объявление | Расширение и поддержка Resources | Разрешить чтение метаданных |
| Происхождение | Идентичность сервера и URI | Показать владельцу навыка |
| Целостность | Размер, digest, frontmatter | Загрузить только совпавший набор |
| Полномочия | Инструкции и запрашиваемые инструменты | Подтвердить отдельно или отклонить |
Особого внимания требуют поля, обещающие модели дополнительные инструменты. По спецификации поле `allowed-tools` в навыке с MCP-источником требует отдельного согласия на расширение полномочий. То же касается выполнения кода на стороне host. Право читать внешний ресурс, запускать программу или менять данные определяют политика host и сервер. При отказе фиксируют правило и источник попытки, сохраняя журнал без чувствительного содержимого.
Если сервер публикует динамическое содержимое с `resources: "dynamic"`, у записи нет устойчивого перечня digest для связывания одобрения с набором файлов. Для пилота выберите стабильный манифест; динамический вариант требует отдельной оценки риска. После смены списка файлов или digest прежнее сохранённое согласие теряет силу по правилам расширения. Так выявляют обновление содержимого. Доверие к самому серверу оценивают отдельно.
Приёмка пилота
Пилот принимают по наблюдаемому маршруту публикации и загрузки навыка. Сервер должен объявить расширение, вернуть запись по URI, отдать файл как ресурс и пройти сверку содержимого. Отдельные отрицательные проверки включают неизвестный URI, изменённый digest и попытку получить лишнее право из инструкции. Ответственный человек подтверждает, что инспектировал источник и состав навыка перед решением о загрузке.
В протоколе полезно сохранять идентичность сервера, URI, описание навыка, манифест, результат проверки байтов и решение о допуске. При новой версии тот же процесс повторяют для обновлённого набора ресурсов. Испытание проходит на тестовом сервере и обезличенных данных, а использование в рабочем контуре обсуждают только после оценки источника. Полезность инструкции проверяют на отдельном эталонном задании с ручной оценкой.
Стоимость внедрения зависит от поддержки расширения у host и сервера, проверки происхождения, настройки прав и сопровождения версий. Тарифы и смету обсуждают по составу работ без числовых обещаний. Для команды, которая хочет связать навыки с задачами агента, полезна страница про внедрение ИИ-агентов. На обсуждении стоит сразу обозначить владельца инструкций, порядок проверки обновлений и допустимые инструменты.
Итоговое решение формулируют ясно: какие навыки опубликованы, какие файлы одобрены и какие действия остаются под отдельным контролем. При несовпадении манифеста с содержимым загрузку останавливают до новой проверки. При смене сервера даже знакомый URI рассматривают как другой источник. Такой порядок переносит инструкции между сервером и клиентом с проверяемым происхождением. Разрешение на выполнение остаётся отдельным решением.