[{"data":1,"prerenderedAt":70},["ShallowReactive",2],{"wiki-mcp-mcp-resources-ru":3},{"meta":4,"html":8,"headings":9,"words":69},{"title":5,"description":6,"published":7,"updated":7,"sourceUpdated":7},"Ресурсы и шаблоны ресурсов в MCP","Ресурс MCP - данные, которые сервер открывает по URI как контекст. Схемы URI, resources/list и resources/read, шаблоны, содержимое, аннотации и подписки.","2026-11-03","\u003Cp>\u003Cstrong>Ресурс (resource)\u003C/strong> в Model Context Protocol (MCP) - данные, которые сервер предоставляет клиенту для использования в качестве контекста: содержимое файла, схема базы данных, документ, запись приложения. Каждый ресурс идентифицируется URI. \u003Cstrong>Шаблон ресурса (resource template)\u003C/strong> описывает целое семейство ресурсов шаблоном URI, например \u003Ccode>weather://forecast/{city}/{date}\u003C/code>, чтобы клиент мог построить URI нужного ресурса.\u003C/p>\n\u003Cp>Ресурсы входят в MCP с первой опубликованной версии спецификации, 2024-11-05. Версия 2026-07-28 изменила то, как клиент узнаёт об изменениях ресурсов: метод \u003Ccode>resources/subscribe\u003C/code> заменён общим потоком \u003Ccode>subscriptions/listen\u003C/code>. Та же версия добавила \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"caching-hints\">подсказки для кеширования\u003C/span> и сменила код ошибки для отсутствующего ресурса. Статья соответствует текущей версии, \u003Cstrong>2026-07-28\u003C/strong>. Базовые понятия протокола описаны в статье \u003Ca href=\"/ru/wiki/mcp/what-is-mcp\" class=\"wiki-link wiki-link--article\">Что такое MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"кратко\" class=\"wiki-heading\">Кратко\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"кратко\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Параметр\u003C/th>\n\u003Cth>Значение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Вид\u003C/td>\n\u003Ctd>Примитив сервера\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Кто решает использовать\u003C/td>\n\u003Ctd>Приложение (хост)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Идентификатор\u003C/td>\n\u003Ctd>URI (RFC 3986)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Шаблоны\u003C/td>\n\u003Ctd>Шаблоны URI (RFC 6570)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Методы\u003C/td>\n\u003Ctd>\u003Ccode>resources/list\u003C/code>, \u003Ccode>resources/read\u003C/code>, \u003Ccode>resources/templates/list\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Уведомления\u003C/td>\n\u003Ctd>\u003Ccode>notifications/resources/list_changed\u003C/code>, \u003Ccode>notifications/resources/updated\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Возможность сервера\u003C/td>\n\u003Ctd>\u003Ccode>resources\u003C/code>, необязательные \u003Ccode>listChanged\u003C/code> и \u003Ccode>subscribe\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Содержимое\u003C/td>\n\u003Ctd>Текст (\u003Ccode>text\u003C/code>) или двоичные данные в Base64 (\u003Ccode>blob\u003C/code>)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Спецификация\u003C/td>\n\u003Ctd>2026-07-28\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"какую-задачу-решают-ресурсы\" class=\"wiki-heading\">Какую задачу решают ресурсы\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"какую-задачу-решают-ресурсы\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Модель отвечает точнее, когда у неё есть нужный контекст: обсуждаемый файл, схема базы данных, документация API. Без протокола каждое ИИ-приложение получает такие данные по-своему. Ресурс даёт этим данным единый адрес и единый способ чтения с любого сервера.\u003C/p>\n\u003Cp>Спецификация называет ресурсы управляемыми приложением (application-driven). Хост решает, какие ресурсы и как включить в контекст. По спецификации приложение может показывать ресурсы деревом или списком для выбора пользователем, предлагать поиск и фильтры или включать контекст автоматически, по эвристикам или по выбору модели. Ни один из этих интерфейсов протокол не предписывает.\u003C/p>\n\u003Cp>Документация описывает ресурсы как пассивные источники данных с доступом только на чтение. Этим они отличаются от инструментов, которые выполняют действия и которые выбирает модель. Различия сведены в конце статьи; инструменты описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-tools\" class=\"wiki-link wiki-link--article\">Инструменты (tools) в MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"история\" class=\"wiki-heading\">История\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"история\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>В таблице - изменения ресурсов по версиям спецификации.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Дата\u003C/th>\n\u003Cth>Событие\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Ноябрь 2024\u003C/td>\n\u003Ctd>Первая версия спецификации, 2024-11-05: \u003Ccode>resources/list\u003C/code>, \u003Ccode>resources/read\u003C/code>, \u003Ccode>resources/templates/list\u003C/code>, подписки через \u003Ccode>resources/subscribe\u003C/code>, уведомления об изменениях, текстовое и двоичное содержимое, схемы \u003Ccode>https://\u003C/code>, \u003Ccode>file://\u003C/code> и \u003Ccode>git://\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Март 2025\u003C/td>\n\u003Ctd>Спецификация 2025-03-26: возможность \u003Ccode>completions\u003C/code> для автодополнения аргументов\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Июнь 2025\u003C/td>\n\u003Ctd>Спецификация 2025-06-18: поле \u003Ccode>title\u003C/code>, ссылки на ресурсы в результатах инструментов, контекст предыдущих аргументов в запросах автодополнения\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Ноябрь 2025\u003C/td>\n\u003Ctd>Спецификация 2025-11-25: иконки ресурсов и шаблонов ресурсов (SEP-973)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>28 июля 2026\u003C/td>\n\u003Ctd>Спецификация 2026-07-28: \u003Ccode>subscriptions/listen\u003C/code> вместо \u003Ccode>resources/subscribe\u003C/code> и \u003Ccode>resources/unsubscribe\u003C/code> (SEP-2575), код ошибки \u003Ccode>-32602\u003C/code> вместо \u003Ccode>-32002\u003C/code> для отсутствующего ресурса, подсказки для кеширования \u003Ccode>ttlMs\u003C/code> и \u003Ccode>cacheScope\u003C/code> (SEP-2549), результаты \u003Ccode>input_required\u003C/code> для \u003Ccode>resources/read\u003C/code> (SEP-2322)\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"uri-и-схемы\" class=\"wiki-heading\">URI и схемы\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"uri-и-схемы\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>У каждого ресурса есть URI в смысле RFC 3986. URI может использовать любую схему, а как её толковать, решает сервер. Спецификация описывает несколько распространённых схем и оговаривает, что список не исчерпывающий.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Схема\u003C/th>\n\u003Cth>Применение по спецификации\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>https://\u003C/code>\u003C/td>\n\u003Ctd>Ресурс в вебе, который клиент может загрузить сам, без MCP-сервера\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>file://\u003C/code>\u003C/td>\n\u003Ctd>Ресурсы, которые ведут себя как файловая система; соответствовать реальной файловой системе они не обязаны\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>git://\u003C/code>\u003C/td>\n\u003Ctd>Интеграция с системой контроля версий Git\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Собственная\u003C/td>\n\u003Ctd>Любая схема, соответствующая RFC 3986\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Для схемы \u003Ccode>https://\u003C/code> есть ограничение. Серверу следует использовать её, только если клиент может сам загрузить ресурс из веба. Если содержимое загружает из интернета сам сервер, ему всё равно следует выбрать другую схему или определить собственную.\u003C/p>\n\u003Cp>Для ресурсов \u003Ccode>file://\u003C/code> сервер может указывать тип MIME из спецификации XDG, например \u003Ccode>inode/directory\u003C/code>, для объектов без стандартного типа MIME, таких как каталоги.\u003C/p>\n\u003Cp>Собственные схемы встречаются часто. Документация MCP приводит примеры вроде \u003Ccode>calendar://events/2024\u003C/code> и \u003Ccode>travel://activities/{city}/{category}\u003C/code>. \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mcp-extension\">Расширение MCP\u003C/span> Apps использует схему \u003Ccode>ui://\u003C/code> для ресурсов с интерактивными интерфейсами; расширения описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-extensions\" class=\"wiki-link wiki-link--article\">Расширения MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"определение-ресурса\" class=\"wiki-heading\">Определение ресурса\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"определение-ресурса\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Сервер описывает каждый ресурс объектом. В таблице - его поля по схеме 2026-07-28.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Поле\u003C/th>\n\u003Cth>Обязательно\u003C/th>\n\u003Cth>Назначение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>uri\u003C/code>\u003C/td>\n\u003Ctd>Да\u003C/td>\n\u003Ctd>Уникальный идентификатор ресурса\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>name\u003C/code>\u003C/td>\n\u003Ctd>Да\u003C/td>\n\u003Ctd>Программное имя ресурса\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>title\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Отображаемое имя для людей\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>description\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Что представляет ресурс; подсказка модели\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mimeType\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Тип MIME, если известен\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>size\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Размер исходного содержимого в байтах, до кодирования в Base64\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>annotations\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Подсказки об адресате, важности и времени изменения\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>icons\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Иконки для пользовательского интерфейса\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>_meta\u003C/code>\u003C/td>\n\u003Ctd>Нет\u003C/td>\n\u003Ctd>Дополнительные метаданные\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>По схеме хост может использовать \u003Ccode>size\u003C/code>, чтобы показывать размер файлов и оценивать, какую часть контекстного окна займёт ресурс.\u003C/p>\n\u003Ch2 id=\"получение-списка-ресурсов\" class=\"wiki-heading\">Получение списка ресурсов\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"получение-списка-ресурсов\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Клиент запрашивает список ресурсов методом \u003Ccode>resources/list\u003C/code>. Метод поддерживает постраничную выдачу: если в результате есть \u003Ccode>nextCursor\u003C/code>, клиент передаёт это значение в \u003Ccode>cursor\u003C/code> и получает следующую страницу.\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 1,\n  &quot;method&quot;: &quot;resources/list&quot;,\n  &quot;params&quot;: {\n    &quot;_meta&quot;: {\n      &quot;io.modelcontextprotocol/protocolVersion&quot;: &quot;2026-07-28&quot;,\n      &quot;io.modelcontextprotocol/clientInfo&quot;: { &quot;name&quot;: &quot;example-client&quot;, &quot;version&quot;: &quot;1.0.0&quot; },\n      &quot;io.modelcontextprotocol/clientCapabilities&quot;: {}\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 1,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;resources&quot;: [\n      {\n        &quot;uri&quot;: &quot;file:///project/README.md&quot;,\n        &quot;name&quot;: &quot;README.md&quot;,\n        &quot;title&quot;: &quot;Project Documentation&quot;,\n        &quot;mimeType&quot;: &quot;text/markdown&quot;,\n        &quot;size&quot;: 4120,\n        &quot;annotations&quot;: {\n          &quot;audience&quot;: [&quot;user&quot;, &quot;assistant&quot;],\n          &quot;priority&quot;: 0.8,\n          &quot;lastModified&quot;: &quot;2026-10-30T09:12:00Z&quot;\n        }\n      }\n    ],\n    &quot;nextCursor&quot;: &quot;page-2&quot;,\n    &quot;ttlMs&quot;: 300000,\n    &quot;cacheScope&quot;: &quot;private&quot;\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Правила для списка те же, что и для инструментов. В списке - ресурсы, которые сейчас доступны запрашивающему клиенту; он может быть пустым и может меняться со временем. Список не должен зависеть от соединения или меняться как побочный эффект других запросов, но может зависеть от авторизации запроса, например от прав (scopes) токена.\u003C/p>\n\u003Ch2 id=\"чтение-ресурса\" class=\"wiki-heading\">Чтение ресурса\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"чтение-ресурса\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Клиент читает ресурс методом \u003Ccode>resources/read\u003C/code> и передаёт его URI:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 2,\n  &quot;method&quot;: &quot;resources/read&quot;,\n  &quot;params&quot;: {\n    &quot;uri&quot;: &quot;file:///project/src/main.rs&quot;,\n    &quot;_meta&quot;: {\n      &quot;io.modelcontextprotocol/protocolVersion&quot;: &quot;2026-07-28&quot;,\n      &quot;io.modelcontextprotocol/clientInfo&quot;: { &quot;name&quot;: &quot;example-client&quot;, &quot;version&quot;: &quot;1.0.0&quot; },\n      &quot;io.modelcontextprotocol/clientCapabilities&quot;: {}\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 2,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;contents&quot;: [\n      {\n        &quot;uri&quot;: &quot;file:///project/src/main.rs&quot;,\n        &quot;mimeType&quot;: &quot;text/x-rust&quot;,\n        &quot;text&quot;: &quot;fn main() {\\n    println!(\\&quot;Hello world!\\&quot;);\\n}&quot;\n      }\n    ],\n    &quot;ttlMs&quot;: 60000,\n    &quot;cacheScope&quot;: &quot;private&quot;\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Результат - массив \u003Ccode>contents\u003C/code>. На один запрос сервер может вернуть несколько элементов: например, содержимое нескольких файлов при чтении ресурса-каталога.\u003C/p>\n\u003Cp>По \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"streamable-http\">Streamable HTTP\u003C/span> запрос несёт заголовки \u003Ccode>Mcp-Method: resources/read\u003C/code> и \u003Ccode>Mcp-Name\u003C/code> с URI ресурса, чтобы шлюзы могли маршрутизировать запросы, не разбирая тело. Транспорты описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-transports\" class=\"wiki-link wiki-link--article\">Транспорты MCP\u003C/a>.\u003C/p>\n\u003Cp>Сервер также может ответить на \u003Ccode>resources/read\u003C/code> результатом типа \u003Ccode>input_required\u003C/code>, если перед чтением ресурса ему нужны дополнительные данные. Тогда клиент повторяет запрос с ответами в \u003Ccode>inputResponses\u003C/code>. Этот механизм описан в статье \u003Ca href=\"/ru/wiki/mcp/stateless-mcp\" class=\"wiki-link wiki-link--article\">MCP без состояния\u003C/a>.\u003C/p>\n\u003Ch3 id=\"текстовое-и-двоичное-содержимое\" class=\"wiki-heading\">Текстовое и двоичное содержимое\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"текстовое-и-двоичное-содержимое\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Каждый элемент \u003Ccode>contents\u003C/code> содержит URI, необязательный \u003Ccode>mimeType\u003C/code> и данные в одной из двух форм. Текстовое содержимое передаётся в поле \u003Ccode>text\u003C/code>, которое заполняется, только если данные действительно представимы текстом. Двоичное содержимое передаётся в поле \u003Ccode>blob\u003C/code> в кодировке Base64:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;uri&quot;: &quot;file:///project/docs/architecture.png&quot;,\n  &quot;mimeType&quot;: &quot;image/png&quot;,\n  &quot;blob&quot;: &quot;iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==&quot;\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Тип MIME позволяет клиенту правильно обработать данные. Спецификация требует, чтобы двоичные данные были корректно закодированы.\u003C/p>\n\u003Ch3 id=\"ошибки\" class=\"wiki-heading\">Ошибки\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"ошибки\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Если запрошенного ресурса нет, сервер обязан вернуть ошибку JSON-RPC с кодом \u003Ccode>-32602\u003C/code> (Invalid params). Для внутренних ошибок ему следует возвращать \u003Ccode>-32603\u003C/code>.\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 5,\n  &quot;error&quot;: {\n    &quot;code&quot;: -32602,\n    &quot;message&quot;: &quot;Resource not found&quot;,\n    &quot;data&quot;: { &quot;uri&quot;: &quot;file:///nonexistent.txt&quot; }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cblockquote>\n\u003Cp>До версии 2025-11-25 включительно отсутствующий ресурс обозначался кодом \u003Ccode>-32002\u003C/code>. Этот код остаётся зарезервированным, и клиентам следует по-прежнему принимать его от серверов прежних версий.\u003C/p>\n\u003C/blockquote>\n\u003Cp>Сервер не должен возвращать пустой массив \u003Ccode>contents\u003C/code> для несуществующего ресурса. Пустой массив неоднозначен: он может означать, что ресурс существует, но содержимого у него нет.\u003C/p>\n\u003Ch2 id=\"шаблоны-ресурсов\" class=\"wiki-heading\">Шаблоны ресурсов\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"шаблоны-ресурсов\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Шаблон ресурса описывает параметризованные ресурсы шаблоном URI по RFC 6570. Клиент запрашивает шаблоны методом \u003Ccode>resources/templates/list\u003C/code>, который, как и другие списки, поддерживает постраничную выдачу и кеширование:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 3,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;resourceTemplates&quot;: [\n      {\n        &quot;uriTemplate&quot;: &quot;weather://forecast/{city}/{date}&quot;,\n        &quot;name&quot;: &quot;weather-forecast&quot;,\n        &quot;title&quot;: &quot;Weather Forecast&quot;,\n        &quot;description&quot;: &quot;Weather forecast for any city and date&quot;,\n        &quot;mimeType&quot;: &quot;application/json&quot;\n      }\n    ],\n    &quot;ttlMs&quot;: 3600000,\n    &quot;cacheScope&quot;: &quot;public&quot;\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>У шаблона есть поля \u003Ccode>uriTemplate\u003C/code>, \u003Ccode>name\u003C/code>, \u003Ccode>title\u003C/code>, \u003Ccode>description\u003C/code>, \u003Ccode>mimeType\u003C/code>, \u003Ccode>annotations\u003C/code>, \u003Ccode>icons\u003C/code> и \u003Ccode>_meta\u003C/code>. Поле \u003Ccode>mimeType\u003C/code> указывается, только если у всех ресурсов, подходящих под шаблон, один и тот же тип.\u003C/p>\n\u003Cp>Документация различает два способа обнаружения. \u003Cstrong>Прямые ресурсы (direct resources)\u003C/strong> имеют фиксированные URI и попадают в \u003Ccode>resources/list\u003C/code>, например \u003Ccode>calendar://events/2024\u003C/code>. \u003Cstrong>Шаблоны\u003C/strong> описывают динамические URI с параметрами, например \u003Ccode>travel://activities/{city}/{category}\u003C/code>. Клиент подставляет значения в шаблон, получает URI вида \u003Ccode>travel://activities/barcelona/museums\u003C/code> и читает его методом \u003Ccode>resources/read\u003C/code>.\u003C/p>\n\u003Ch3 id=\"автодополнение-аргументов-шаблона\" class=\"wiki-heading\">Автодополнение аргументов шаблона\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"автодополнение-аргументов-шаблона\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Сервер может подсказывать значения параметров шаблона, пока пользователь их вводит. Сервер с такой поддержкой объявляет возможность \u003Ccode>completions\u003C/code>. Клиент отправляет \u003Ccode>completion/complete\u003C/code> со ссылкой типа \u003Ccode>ref/resource\u003C/code>, шаблоном URI, именем аргумента и его текущим значением:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 4,\n  &quot;method&quot;: &quot;completion/complete&quot;,\n  &quot;params&quot;: {\n    &quot;_meta&quot;: {\n      &quot;io.modelcontextprotocol/protocolVersion&quot;: &quot;2026-07-28&quot;,\n      &quot;io.modelcontextprotocol/clientInfo&quot;: { &quot;name&quot;: &quot;example-client&quot;, &quot;version&quot;: &quot;1.0.0&quot; },\n      &quot;io.modelcontextprotocol/clientCapabilities&quot;: {}\n    },\n    &quot;ref&quot;: { &quot;type&quot;: &quot;ref/resource&quot;, &quot;uri&quot;: &quot;weather://forecast/{city}/{date}&quot; },\n    &quot;argument&quot;: { &quot;name&quot;: &quot;city&quot;, &quot;value&quot;: &quot;Par&quot; }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 4,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;completion&quot;: { &quot;values&quot;: [&quot;Paris&quot;, &quot;Park City&quot;], &quot;total&quot;: 2, &quot;hasMore&quot;: false }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Ответ содержит не больше 100 значений, отсортированных по релевантности, необязательное поле \u003Ccode>total\u003C/code> и признак \u003Ccode>hasMore\u003C/code>. Для шаблонов с несколькими параметрами клиент передаёт уже выбранные значения в \u003Ccode>context.arguments\u003C/code>. Тот же механизм обслуживает \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"prompt-argument\">аргументы промптов\u003C/span>, которые описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-prompts\" class=\"wiki-link wiki-link--article\">Промпты (prompts) в MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"аннотации\" class=\"wiki-heading\">Аннотации\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"аннотации\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Ресурсы, шаблоны ресурсов и блоки содержимого поддерживают необязательные аннотации. Это подсказки, которые помогают клиенту решить, как использовать или показывать данные.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Поле\u003C/th>\n\u003Cth>Смысл\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>audience\u003C/code>\u003C/td>\n\u003Ctd>Адресат: \u003Ccode>user\u003C/code>, \u003Ccode>assistant\u003C/code> или оба\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>priority\u003C/code>\u003C/td>\n\u003Ctd>Важность от 0 до 1: 1 - фактически обязательно, 0 - полностью необязательно\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>lastModified\u003C/code>\u003C/td>\n\u003Ctd>Время последнего изменения в формате ISO 8601\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>По спецификации клиент может использовать аннотации, чтобы отбирать ресурсы по адресату, решать, какие ресурсы включить в контекст, и сортировать их по свежести. Как именно хост должен реагировать на конкретные значения, спецификация не определяет.\u003C/p>\n\u003Ch2 id=\"ресурсы-в-результатах-инструментов\" class=\"wiki-heading\">Ресурсы в результатах инструментов\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"ресурсы-в-результатах-инструментов\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Инструмент может вернуть ресурсы в результате двумя способами. В таблице они сравниваются.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C/th>\n\u003Cth>Ссылка на ресурс\u003C/th>\n\u003Cth>Встроенный ресурс\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Тип содержимого\u003C/td>\n\u003Ctd>\u003Ccode>resource_link\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>resource\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Что несёт\u003C/td>\n\u003Ctd>URI, имя и другие поля определения ресурса\u003C/td>\n\u003Ctd>Содержимое: \u003Ccode>uri\u003C/code> и \u003Ccode>text\u003C/code> или \u003Ccode>blob\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Как клиент получает данные\u003C/td>\n\u003Ctd>Читает URI методом \u003Ccode>resources/read\u003C/code> или подписывается на него\u003C/td>\n\u003Ctd>Данные уже в результате\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Требование к серверу\u003C/td>\n\u003Ctd>Ссылка не обязательно есть в выдаче \u003Ccode>resources/list\u003C/code>\u003C/td>\n\u003Ctd>Серверу следует реализовать возможность \u003Ccode>resources\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 6,\n  &quot;result&quot;: {\n    &quot;resultType&quot;: &quot;complete&quot;,\n    &quot;content&quot;: [\n      {\n        &quot;type&quot;: &quot;resource_link&quot;,\n        &quot;uri&quot;: &quot;file:///project/src/main.rs&quot;,\n        &quot;name&quot;: &quot;main.rs&quot;,\n        &quot;description&quot;: &quot;Primary application entry point&quot;,\n        &quot;mimeType&quot;: &quot;text/x-rust&quot;\n      },\n      {\n        &quot;type&quot;: &quot;resource&quot;,\n        &quot;resource&quot;: {\n          &quot;uri&quot;: &quot;file:///project/Cargo.toml&quot;,\n          &quot;mimeType&quot;: &quot;text/plain&quot;,\n          &quot;text&quot;: &quot;[package]\\nname = \\&quot;demo\\&quot;\\nversion = \\&quot;0.1.0\\&quot;&quot;\n        },\n        &quot;annotations&quot;: { &quot;audience&quot;: [&quot;assistant&quot;], &quot;priority&quot;: 0.7 }\n      }\n    ]\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Обе формы поддерживают те же аннотации, что и ресурсы. Встроенные ресурсы могут быть и в сообщениях промптов; по схеме клиент сам решает, как показать их модели или пользователю. Результаты инструментов описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-tools\" class=\"wiki-link wiki-link--article\">Инструменты (tools) в MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"уведомления-об-изменениях-и-подписки\" class=\"wiki-heading\">Уведомления об изменениях и подписки\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"уведомления-об-изменениях-и-подписки\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>В возможности \u003Ccode>resources\u003C/code> сервер объявляет две необязательные функции:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Ccode>listChanged\u003C/code>: сервер отправляет \u003Ccode>notifications/resources/list_changed\u003C/code>, когда меняется список ресурсов;\u003C/li>\n\u003Cli>\u003Ccode>subscribe\u003C/code>: сервер отправляет \u003Ccode>notifications/resources/updated\u003C/code>, когда меняется ресурс, за которым следит клиент.\u003C/li>\n\u003C/ul>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;capabilities&quot;: {\n    &quot;resources&quot;: { &quot;listChanged&quot;: true, &quot;subscribe&quot;: true }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>С версии 2026-07-28 оба вида уведомлений приходят только в поток, который клиент открывает запросом \u003Ccode>subscriptions/listen\u003C/code>. Этот запрос заменил прежние методы \u003Ccode>resources/subscribe\u003C/code> и \u003Ccode>resources/unsubscribe\u003C/code> и отдельную точку HTTP GET. Клиент перечисляет нужные типы уведомлений; другие типы сервер отправлять не должен.\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;id&quot;: 8,\n  &quot;method&quot;: &quot;subscriptions/listen&quot;,\n  &quot;params&quot;: {\n    &quot;_meta&quot;: {\n      &quot;io.modelcontextprotocol/protocolVersion&quot;: &quot;2026-07-28&quot;,\n      &quot;io.modelcontextprotocol/clientInfo&quot;: { &quot;name&quot;: &quot;example-client&quot;, &quot;version&quot;: &quot;1.0.0&quot; },\n      &quot;io.modelcontextprotocol/clientCapabilities&quot;: {}\n    },\n    &quot;notifications&quot;: {\n      &quot;resourcesListChanged&quot;: true,\n      &quot;resourceSubscriptions&quot;: [&quot;file:///project/config.json&quot;]\n    }\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Сначала сервер отправляет \u003Ccode>notifications/subscriptions/acknowledged\u003C/code> с той частью фильтра, которую согласился выполнять; неподдерживаемые типы в ней отсутствуют. Клиенту следует сравнить её с запрошенным. Дальше сервер присылает уведомления по мере изменения ресурсов:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"json\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">JSON\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>{\n  &quot;jsonrpc&quot;: &quot;2.0&quot;,\n  &quot;method&quot;: &quot;notifications/resources/updated&quot;,\n  &quot;params&quot;: {\n    &quot;_meta&quot;: { &quot;io.modelcontextprotocol/subscriptionId&quot;: 8 },\n    &quot;uri&quot;: &quot;file:///project/config.json&quot;\n  }\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Каждое сообщение в потоке несёт \u003Ccode>io.modelcontextprotocol/subscriptionId\u003C/code>, равный \u003Ccode>id\u003C/code> запроса \u003Ccode>subscriptions/listen\u003C/code> в JSON-RPC. У клиента может быть несколько подписок одновременно, и он различает их по этому полю. URI в уведомлении может указывать на вложенный ресурс того, на который подписан клиент. Нового содержимого уведомление не несёт: клиент заново читает ресурс методом \u003Ccode>resources/read\u003C/code>.\u003C/p>\n\u003Cp>Подписка заканчивается, когда клиент закрывает поток SSE (Streamable HTTP) или отправляет \u003Ccode>notifications/cancelled\u003C/code> (\u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"stdio\">stdio\u003C/span>), когда её завершает сервер или когда закрывается транспорт. Серверу, который завершает подписку по своей инициативе, следует сначала отправить обычный ответ на запрос \u003Ccode>subscriptions/listen\u003C/code>. Если транспорт закрылся без такого ответа, это неожиданный разрыв, после которого клиент может переподключиться. На stdio сервер не хранит состояние подписок между переподключениями, поэтому клиент отправляет \u003Ccode>subscriptions/listen\u003C/code> заново.\u003C/p>\n\u003Ch2 id=\"кеширование\" class=\"wiki-heading\">Кеширование\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"кеширование\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Окончательные результаты \u003Ccode>resources/list\u003C/code>, \u003Ccode>resources/templates/list\u003C/code> и \u003Ccode>resources/read\u003C/code> обязаны нести подсказки для кеширования. \u003Ccode>ttlMs\u003C/code> - время в миллисекундах, в течение которого результат можно считать актуальным; \u003Ccode>cacheScope\u003C/code> определяет, кто может использовать его повторно. Поля описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-tools\" class=\"wiki-link wiki-link--article\">Инструменты (tools) в MCP\u003C/a>; несколько правил касаются именно ресурсов.\u003C/p>\n\u003Cul>\n\u003Cli>Ключ кеша - метод вместе с параметрами, которые влияют на результат. Для \u003Ccode>resources/read\u003C/code> это \u003Ccode>uri\u003C/code>.\u003C/li>\n\u003Cli>\u003Ccode>private\u003C/code> подходит для результатов \u003Ccode>resources/read\u003C/code>, которые зависят от аутентифицированного пользователя. \u003Ccode>public\u003C/code> подходит для данных, одинаковых для всех пользователей.\u003C/li>\n\u003Cli>Результат, полученный повторным запросом с \u003Ccode>inputResponses\u003C/code> или \u003Ccode>requestState\u003C/code>, кешировать нельзя.\u003C/li>\n\u003Cli>Соответствующее уведомление, например \u003Ccode>notifications/resources/list_changed\u003C/code> для закешированного списка, сразу делает закешированный результат устаревшим, даже если TTL ещё не истёк.\u003C/li>\n\u003C/ul>\n\u003Cp>Сервер может изменить данные и до истечения TTL: TTL - подсказка об актуальности, а не гарантия. Спецификация также требует, чтобы сервер применял контроль доступа к каждому примитиву и не полагался только на \u003Ccode>cacheScope\u003C/code>.\u003C/p>\n\u003Ch2 id=\"безопасность\" class=\"wiki-heading\">Безопасность\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"безопасность\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Спецификация предъявляет требования к серверам, которые предоставляют ресурсы:\u003C/p>\n\u003Cul>\n\u003Cli>сервер обязан проверять все URI ресурсов;\u003C/li>\n\u003Cli>для чувствительных ресурсов следует реализовать контроль доступа и проверять права перед операциями;\u003C/li>\n\u003Cli>двоичные данные обязаны быть корректно закодированы;\u003C/li>\n\u003Cli>для ресурсов \u003Ccode>file://\u003C/code> сервер обязан очищать пути, чтобы не допустить выхода за пределы каталога (directory traversal).\u003C/li>\n\u003C/ul>\n\u003Cp>Содержимое ресурса попадает в контекст модели. Текст документов, веб-страниц или задач может содержать инструкции, адресованные модели; этот риск описан в статьях \u003Ca href=\"/ru/wiki/mcp/mcp-security\" class=\"wiki-link wiki-link--article\">Безопасность MCP\u003C/a> и \u003Ca href=\"/ru/wiki/ai-testing/prompt-injection\" class=\"wiki-link wiki-link--article\">Prompt injection\u003C/a>.\u003C/p>\n\u003Ch2 id=\"ресурс-и-инструмент\" class=\"wiki-heading\">Ресурс и инструмент\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"ресурс-и-инструмент\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Ресурсы и инструменты могут дать модели доступ к одним и тем же данным, но работают по-разному. В таблице они сравниваются.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C/th>\n\u003Cth>Ресурс\u003C/th>\n\u003Cth>Инструмент\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Назначение\u003C/td>\n\u003Ctd>Данные для контекста\u003C/td>\n\u003Ctd>Действие или вычисление\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Кто решает использовать\u003C/td>\n\u003Ctd>Приложение\u003C/td>\n\u003Ctd>Модель\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Идентификация\u003C/td>\n\u003Ctd>URI\u003C/td>\n\u003Ctd>Имя\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Параметры\u003C/td>\n\u003Ctd>Части URI через шаблон\u003C/td>\n\u003Ctd>Аргументы по \u003Ccode>inputSchema\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Обнаружение\u003C/td>\n\u003Ctd>\u003Ccode>resources/list\u003C/code>, \u003Ccode>resources/templates/list\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>tools/list\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Доступ\u003C/td>\n\u003Ctd>\u003Ccode>resources/read\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>tools/call\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Результат\u003C/td>\n\u003Ctd>\u003Ccode>contents\u003C/code>: \u003Ccode>text\u003C/code> или \u003Ccode>blob\u003C/code> с типом MIME\u003C/td>\n\u003Ctd>Блоки \u003Ccode>content\u003C/code> и \u003Ccode>structuredContent\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Ошибки\u003C/td>\n\u003Ctd>Ошибка JSON-RPC, \u003Ccode>-32602\u003C/code> для отсутствующего ресурса\u003C/td>\n\u003Ctd>Ошибка протокола или результат с \u003Ccode>isError: true\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Кеширование результата\u003C/td>\n\u003Ctd>Подсказки в результате \u003Ccode>resources/read\u003C/code>\u003C/td>\n\u003Ctd>Подсказок в результате \u003Ccode>tools/call\u003C/code> нет\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Уведомления об изменениях\u003C/td>\n\u003Ctd>Изменения списка и обновления отдельных ресурсов\u003C/td>\n\u003Ctd>Только изменения списка\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Заголовок \u003Ccode>Mcp-Name\u003C/code>\u003C/td>\n\u003Ctd>URI\u003C/td>\n\u003Ctd>Имя инструмента\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Главное различие - кто инициирует доступ. Ресурс выбирает приложение или пользователь, и он добавляется в контекст. Хост решает, что передать модели: часть данных, результаты поиска или всё целиком. Инструмент выбирает модель по ходу диалога и сама заполняет его аргументы.\u003C/p>\n\u003Cp>Два примитива используются вместе. Инструмент может вернуть ссылку на ресурс, и клиент прочитает ресурс, когда понадобятся данные. В MCP Apps инструмент ссылается в своём \u003Ccode>_meta\u003C/code> на ресурс \u003Ccode>ui://\u003C/code> с интерфейсом, и хост может прочитать этот ресурс ещё до вызова. Промпт может объединить ресурсы и инструменты в одном сценарии; промпты описаны в статье \u003Ca href=\"/ru/wiki/mcp/mcp-prompts\" class=\"wiki-link wiki-link--article\">Промпты (prompts) в MCP\u003C/a>.\u003C/p>\n\u003Ch2 id=\"термины\" class=\"wiki-heading\">Термины\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"термины\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Термин\u003C/th>\n\u003Cth>Значение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Ресурс\u003C/td>\n\u003Ctd>Данные, идентифицируемые URI, которые сервер предоставляет для использования в качестве контекста\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Шаблон ресурса\u003C/td>\n\u003Ctd>Описание параметризованных ресурсов шаблоном URI по RFC 6570\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Прямой ресурс\u003C/td>\n\u003Ctd>Ресурс с фиксированным URI, который есть в выдаче \u003Ccode>resources/list\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Ссылка на ресурс\u003C/td>\n\u003Ctd>Блок содержимого типа \u003Ccode>resource_link\u003C/code>, который указывает на ресурс по его URI\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Встроенный ресурс\u003C/td>\n\u003Ctd>Блок содержимого типа \u003Ccode>resource\u003C/code>, в который вложены данные ресурса\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Аннотации ресурса\u003C/td>\n\u003Ctd>Подсказки \u003Ccode>audience\u003C/code>, \u003Ccode>priority\u003C/code> и \u003Ccode>lastModified\u003C/code> для ресурсов и блоков содержимого\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Подписка на ресурс\u003C/td>\n\u003Ctd>Запрос уведомлений об изменениях ресурсов с заданными URI через \u003Ccode>subscriptions/listen\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"источники\" class=\"wiki-heading\">Источники\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"источники\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/server/resources\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Resources, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://github.com/modelcontextprotocol/specification/blob/main/schema/2026-07-28/schema.ts\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Schema of the specification 2026-07-28 (schema.ts), GitHub\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/basic/patterns/subscriptions\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Subscriptions, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/server/utilities/caching\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Caching, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/server/utilities/completion\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Completion, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/server/tools\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Tools, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/basic/transports/streamable-http\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Streamable HTTP, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/basic\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Overview: error codes, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2026-07-28/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key changes, specification 2026-07-28\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2025-11-25/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key changes, specification 2025-11-25\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2025-06-18/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key changes, specification 2025-06-18\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2025-03-26/changelog\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Key changes, specification 2025-03-26\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/specification/2024-11-05/server/resources\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Resources, specification 2024-11-05\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/docs/2026-07-28/learn/server-concepts\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Understanding MCP servers, MCP documentation\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://modelcontextprotocol.io/docs/extensions/apps\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">MCP Apps, MCP documentation\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003C/ul>\n",[10,14,17,20,23,26,29,32,36,39,42,45,48,51,54,57,60,63,66],{"id":11,"level":12,"text":13},"кратко",2,"Кратко",{"id":15,"level":12,"text":16},"какую-задачу-решают-ресурсы","Какую задачу решают ресурсы",{"id":18,"level":12,"text":19},"история","История",{"id":21,"level":12,"text":22},"uri-и-схемы","URI и схемы",{"id":24,"level":12,"text":25},"определение-ресурса","Определение ресурса",{"id":27,"level":12,"text":28},"получение-списка-ресурсов","Получение списка ресурсов",{"id":30,"level":12,"text":31},"чтение-ресурса","Чтение ресурса",{"id":33,"level":34,"text":35},"текстовое-и-двоичное-содержимое",3,"Текстовое и двоичное содержимое",{"id":37,"level":34,"text":38},"ошибки","Ошибки",{"id":40,"level":12,"text":41},"шаблоны-ресурсов","Шаблоны ресурсов",{"id":43,"level":34,"text":44},"автодополнение-аргументов-шаблона","Автодополнение аргументов шаблона",{"id":46,"level":12,"text":47},"аннотации","Аннотации",{"id":49,"level":12,"text":50},"ресурсы-в-результатах-инструментов","Ресурсы в результатах инструментов",{"id":52,"level":12,"text":53},"уведомления-об-изменениях-и-подписки","Уведомления об изменениях и подписки",{"id":55,"level":12,"text":56},"кеширование","Кеширование",{"id":58,"level":12,"text":59},"безопасность","Безопасность",{"id":61,"level":12,"text":62},"ресурс-и-инструмент","Ресурс и инструмент",{"id":64,"level":12,"text":65},"термины","Термины",{"id":67,"level":12,"text":68},"источники","Источники",2091,1793718888716]