[{"data":1,"prerenderedAt":73},["ShallowReactive",2],{"wiki-mcp-publishing-to-mcp-registry-ru":3},{"meta":4,"html":8,"headings":9,"words":72},{"title":5,"description":6,"published":7,"updated":7,"sourceUpdated":7},"Публикация MCP-сервера в MCP Registry","MCP Registry - официальный каталог метаданных MCP-серверов. Формат server.json, пространства имён, проверка владения, mcp-publisher, версии, субреестры.","2026-11-03","\u003Cp>\u003Cstrong>MCP Registry\u003C/strong> - официальный каталог метаданных о публично доступных \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mcp-server\">MCP-серверах\u003C/span> по адресу \u003Ccode>registry.modelcontextprotocol.io\u003C/code>. Код он не хранит: каждая запись - документ \u003Ccode>server.json\u003C/code>, который называет сервер, описывает его и указывает, где его взять: в реестре пакетов, например npm или PyPI, или по адресу удалённого сервера. Опубликовать сервер - значит отправить его \u003Ccode>server.json\u003C/code> в реестр утилитой командной строки \u003Ccode>mcp-publisher\u003C/code>, предварительно подтвердив право на имя сервера.\u003C/p>\n\u003Cp>Реестр появился в феврале 2025 года как проект сообщества: авторы MCP David Soria Parra и Justin Spahr-Summers попросили команды PulseMCP и Goose помочь построить общий реестр. В режиме предварительной версии (preview) он запущен 8 сентября 2025 года. Реестр развивает рабочая группа Registry Working Group проекта MCP.\u003C/p>\n\u003Cp>По состоянию на ноябрь 2026 года документация всё ещё помечает реестр как предварительную версию: до общей доступности возможны несовместимые изменения и сброс данных. Версия API \u003Ccode>v0.1\u003C/code> заморожена с 24 октября 2025 года, текущая опубликованная версия схемы \u003Ccode>server.json\u003C/code> - \u003Cstrong>2025-12-11\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>Официальный каталог метаданных о публичных MCP-серверах с REST API\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Адрес\u003C/td>\n\u003Ctd>\u003Ccode>https://registry.modelcontextprotocol.io\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Статус\u003C/td>\n\u003Ctd>Предварительная версия с 8 сентября 2025 года\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>API\u003C/td>\n\u003Ctd>\u003Ccode>v0.1\u003C/code>, заморожен с 24 октября 2025 года; чтение без аутентификации\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Формат записи\u003C/td>\n\u003Ctd>\u003Ccode>server.json\u003C/code>, версия схемы 2025-12-11\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Имена серверов\u003C/td>\n\u003Ctd>Пространство имён в обратной DNS-нотации и имя сервера, например \u003Ccode>io.github.user/weather\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Типы пакетов\u003C/td>\n\u003Ctd>npm, PyPI, NuGet, Cargo, образы Docker/OCI, MCPB\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Инструмент публикации\u003C/td>\n\u003Ctd>CLI \u003Ccode>mcp-publisher\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Кто развивает\u003C/td>\n\u003Ctd>Registry Working Group проекта MCP\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>MCP-сервер распространяется через реестр пакетов или работает по удалённому адресу. Чтобы его найти, пользователю или приложению нужен каталог. Чтобы установить, каталогу нужны точное имя пакета, транспорт и настройки.\u003C/p>\n\u003Cp>Анонс реестра описывает его цель как стандартизацию того, как серверы распространяются и находятся. Реестр задуман как первичный источник истины: единое место, где авторы сервера публикуют сведения о нём от своего имени. Другие каталоги, субреестры (subregistries), берут данные оттуда и добавляют свои: отбор, оценки, проверки безопасности.\u003C/p>\n\u003Cp>Кроме того, реестр привязывает каждое имя к подтверждённой учётной записи GitHub или домену, поэтому сервер нельзя опубликовать под чужим именем. Пакет, на который указывает запись, должен сам называть этот сервер, поэтому метаданные не могут присвоить чужой пакет.\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>В таблице - запуск реестра и основные изменения его API и схемы \u003Ccode>server.json\u003C/code>.\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>Февраль 2025\u003C/td>\n\u003Ctd>Начало реестра как проекта сообщества\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>9 июля 2025\u003C/td>\n\u003Ctd>Первая версия схемы \u003Ccode>server.json\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>8 сентября 2025\u003C/td>\n\u003Ctd>Запуск официального MCP Registry в режиме предварительной версии\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>16 сентября 2025\u003C/td>\n\u003Ctd>Схема 2025-09-16: имена полей переходят со snake_case на camelCase (\u003Ccode>registryType\u003C/code>, \u003Ccode>environmentVariables\u003C/code>)\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>29 сентября 2025\u003C/td>\n\u003Ctd>Схема 2025-09-29: статус и метаданные реестра уходят из \u003Ccode>server.json\u003C/code>, ими управляет реестр\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>11 октября 2025\u003C/td>\n\u003Ctd>Схема 2025-10-11: формат пакета зависит от его типа; \u003Ccode>version\u003C/code> необязателен для OCI и MCPB\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>24 октября 2025\u003C/td>\n\u003Ctd>Заморозка API на версии \u003Ccode>v0.1\u003C/code>: без несовместимых изменений, пока интеграторы внедряют поддержку\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>11 декабря 2025\u003C/td>\n\u003Ctd>Схема 2025-12-11: переменные в шаблонах URL удалённых серверов\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\u003Cdiv class=\"wiki-code wiki-code--plain\">\u003Cpre>\u003Ccode>Package registries (npm, PyPI, NuGet, crates.io, Docker Hub, GitHub Releases)\n |  code and binaries\n v\nMCP Registry (registry.modelcontextprotocol.io)\n |  server.json metadata, REST API v0.1\n v\nSubregistries and marketplaces (public or private)\n |  curation, ratings, security scans, same API\n v\nHost applications (AI applications that install and connect servers)\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>По документации, реестр рассчитан прежде всего на агрегаторы. Он намеренно нейтрален: не оценивает серверы и не сканирует их код. Проверку безопасности он оставляет реестрам пакетов и агрегаторам.\u003C/p>\n\u003Cp>Реестр принимает серверы с открытым и закрытым кодом, если пакет лежит в публичном реестре или удалённый сервер публично доступен. Закрытые серверы, доступные только во внутренней сети или в закрытом реестре пакетов, не принимаются. Для них документация советует собственный закрытый реестр.\u003C/p>\n\u003Ch2 id=\"формат-serverjson\" class=\"wiki-heading\">Формат server.json\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"формат-serverjson\" 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\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>server.json\u003C/code> - JSON-документ, который описывает JSON Schema. Адрес схемы содержит её версию, а документ ссылается на неё в поле \u003Ccode>$schema\u003C/code>. Основные поля:\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>$schema\u003C/code>\u003C/td>\n\u003Ctd>нет\u003C/td>\n\u003Ctd>URL схемы, например версии 2025-12-11\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>name\u003C/code>\u003C/td>\n\u003Ctd>да\u003C/td>\n\u003Ctd>Уникальное имя в обратной DNS-нотации, от 3 до 200 символов, ровно один \u003Ccode>/\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>description\u003C/code>\u003C/td>\n\u003Ctd>да\u003C/td>\n\u003Ctd>Что делает сервер, от 1 до 100 символов\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>version\u003C/code>\u003C/td>\n\u003Ctd>да\u003C/td>\n\u003Ctd>Версия этой публикации, до 255 символов; диапазоны недопустимы\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>title\u003C/code>\u003C/td>\n\u003Ctd>нет\u003C/td>\n\u003Ctd>Отображаемое название, до 100 символов\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>repository\u003C/code>\u003C/td>\n\u003Ctd>нет\u003C/td>\n\u003Ctd>Исходный код: \u003Ccode>url\u003C/code>, \u003Ccode>source\u003C/code> (например, \u003Ccode>github\u003C/code>), необязательный \u003Ccode>subfolder\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>websiteUrl\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>packages\u003C/code>\u003C/td>\n\u003Ctd>нет\u003C/td>\n\u003Ctd>Пакеты: \u003Ccode>registryType\u003C/code>, \u003Ccode>identifier\u003C/code>, \u003Ccode>version\u003C/code>, \u003Ccode>transport\u003C/code> и настройки\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>remotes\u003C/code>\u003C/td>\n\u003Ctd>нет\u003C/td>\n\u003Ctd>Удалённые адреса: \u003Ccode>type\u003C/code> и \u003Ccode>url\u003C/code>, необязательные \u003Ccode>headers\u003C/code> и \u003Ccode>variables\u003C/code>\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>registryType\u003C/code>, \u003Ccode>identifier\u003C/code> и \u003Ccode>transport\u003C/code>. Тип транспорта пакета - \u003Ccode>stdio\u003C/code>, \u003Ccode>streamable-http\u003C/code> или \u003Ccode>sse\u003C/code>. Пакет может также описывать, как его запускать: \u003Ccode>runtimeHint\u003C/code>, \u003Ccode>runtimeArguments\u003C/code>, \u003Ccode>packageArguments\u003C/code> и \u003Ccode>environmentVariables\u003C/code>, где у каждой переменной есть \u003Ccode>name\u003C/code>, \u003Ccode>description\u003C/code>, \u003Ccode>isRequired\u003C/code> и \u003Ccode>isSecret\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>Пример описывает сервер, который распространяется npm-пакетом и одновременно доступен как удалённый сервер:\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;$schema&quot;: &quot;https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json&quot;,\n  &quot;name&quot;: &quot;io.github.example-user/weather&quot;,\n  &quot;title&quot;: &quot;Weather&quot;,\n  &quot;description&quot;: &quot;Current weather and forecasts for any city.&quot;,\n  &quot;version&quot;: &quot;1.2.0&quot;,\n  &quot;repository&quot;: {\n    &quot;url&quot;: &quot;https://github.com/example-user/mcp-weather-server&quot;,\n    &quot;source&quot;: &quot;github&quot;\n  },\n  &quot;packages&quot;: [\n    {\n      &quot;registryType&quot;: &quot;npm&quot;,\n      &quot;identifier&quot;: &quot;@example-user/mcp-weather-server&quot;,\n      &quot;version&quot;: &quot;1.2.0&quot;,\n      &quot;transport&quot;: {\n        &quot;type&quot;: &quot;stdio&quot;\n      },\n      &quot;environmentVariables&quot;: [\n        {\n          &quot;name&quot;: &quot;WEATHER_API_KEY&quot;,\n          &quot;description&quot;: &quot;API key of the weather data provider&quot;,\n          &quot;isRequired&quot;: true,\n          &quot;isSecret&quot;: true\n        }\n      ]\n    }\n  ],\n  &quot;remotes&quot;: [\n    {\n      &quot;type&quot;: &quot;streamable-http&quot;,\n      &quot;url&quot;: &quot;https://weather.example.com/mcp&quot;\n    }\n  ]\n}\u003C/code>\u003C/pre>\u003C/div>\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>_meta\u003C/code> использует ключи в обратной DNS-нотации. Официальный реестр сохраняет только данные под ключом \u003Ccode>io.modelcontextprotocol.registry/publisher-provided\u003C/code>, а остальные ключи молча отбрасывает. Объём этих данных ограничен 4096 байтами JSON; при большем объёме публикация не проходит.\u003C/p>\n\u003Cp>Свои метаданные реестр добавляет в ответах API, вне \u003Ccode>server.json\u003C/code>, под ключом \u003Ccode>io.modelcontextprotocol.registry/official\u003C/code>: статус, даты публикации и обновления, флаг \u003Ccode>isLatest\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>/\u003C/code>. Пространство имён записывается в обратной DNS-нотации: части домена в обратном порядке. Способ аутентификации определяет, какие пространства имён доступны публикующему.\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>GitHub (OAuth или OIDC)\u003C/td>\n\u003Ctd>\u003Ccode>io.github.&lt;username&gt;/*\u003C/code> или \u003Ccode>io.github.&lt;orgname&gt;/*\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>io.github.alice/weather-server\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>DNS\u003C/td>\n\u003Ctd>\u003Ccode>com.example/*\u003C/code> и пространства поддоменов, \u003Ccode>com.example.*/*\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>com.example.api/analytics\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>HTTP\u003C/td>\n\u003Ctd>только \u003Ccode>com.example/*\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>com.example/analytics\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Аутентификация через GitHub всегда даёт личное пространство имён. Для пространства организации нужна роль Owner в этой организации; обычного членства недостаточно. По состоянию на ноябрь 2026 года документация отмечает, что вход через \u003Ccode>mcp-publisher login github\u003C/code> не позволяет публиковать в пространство организации, а вход через OIDC или с персональным токеном доступа позволяет.\u003C/p>\n\u003Cp>Пространство имён домена подтверждается через DNS или HTTP. В коде реестра проверка через DNS даёт права на домен и все его поддомены, а проверка через HTTP - только на сам домен. Домен \u003Ccode>github.io\u003C/code> и его поддомены нельзя использовать с проверкой через DNS или HTTP: пространства \u003Ccode>io.github.*\u003C/code> доступны только через аутентификацию GitHub.\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>mcp-publisher login\u003C/code> и получает токен реестра. Способ входа подтверждает право на пространство имён.\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>GitHub OAuth.\u003C/strong> \u003Ccode>mcp-publisher login github\u003C/code> запускает вход с кодом устройства (device flow): пользователь открывает \u003Ccode>https://github.com/login/device\u003C/code> и вводит код, который напечатан в терминале. С параметром \u003Ccode>--token\u003C/code> вместо этого используется персональный токен доступа.\u003C/li>\n\u003Cli>\u003Cstrong>GitHub OIDC.\u003C/strong> \u003Ccode>mcp-publisher login github-oidc\u003C/code> используется в GitHub Actions. Рабочему процессу нужно право \u003Ccode>id-token: write\u003C/code>, отдельный секрет не нужен.\u003C/li>\n\u003Cli>\u003Cstrong>DNS.\u003C/strong> Публикующий создаёт пару ключей (Ed25519 или ECDSA P-384) и публикует открытый ключ в TXT-записи на вершине домена (apex), а не под селектором вроде \u003Ccode>_mcp-auth\u003C/code>. Команда входа подписывает метку времени закрытым ключом.\u003C/li>\n\u003Cli>\u003Cstrong>HTTP.\u003C/strong> Та же запись, \u003Ccode>v=MCPv1; k=ed25519; p=&lt;public key&gt;\u003C/code>, отдаётся файлом по адресу \u003Ccode>https://&lt;domain&gt;/.well-known/mcp-registry-auth\u003C/code>. Реестр забирает его со своей инфраструктуры, не следует перенаправлениям и ждёт статус 200 не дольше 10 секунд.\u003C/li>\n\u003C/ul>\n\u003Cp>Проверка через DNS с ключом Ed25519 по документации реестра:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"bash\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">Bash\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>MY_DOMAIN=&quot;example.com&quot;\n\n# Generate an Ed25519 key pair\nopenssl genpkey -algorithm Ed25519 -out key.pem\n\n# Print the TXT record to add at the apex of the domain\nPUBLIC_KEY=&quot;$(openssl pkey -in key.pem -pubout -outform DER | tail -c 32 | base64)&quot;\necho &quot;${MY_DOMAIN}. IN TXT \\&quot;v=MCPv1; k=ed25519; p=${PUBLIC_KEY}\\&quot;&quot;\n\n# After the record has propagated, log in with the private key\nPRIVATE_KEY=&quot;$(openssl pkey -in key.pem -noout -text | grep -A3 &quot;priv:&quot; | tail -n +2 | tr -d ' :\\n')&quot;\nmcp-publisher login dns --domain &quot;${MY_DOMAIN}&quot; --private-key &quot;${PRIVATE_KEY}&quot;\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Закрытый ключ может храниться и в Google Cloud KMS или Azure Key Vault; для обоих у \u003Ccode>mcp-publisher\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>server.json\u003C/code>, принадлежит владельцу имени. У каждого типа пакета свой маркер, который должен в точности содержать имя сервера:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003Ccode>registryType\u003C/code>\u003C/th>\n\u003Cth>Поддерживаемый реестр\u003C/th>\n\u003Cth>Маркер владения\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>npm\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>registry.npmjs.org\u003C/code>\u003C/td>\n\u003Ctd>Поле \u003Ccode>mcpName\u003C/code> в \u003Ccode>package.json\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>pypi\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>pypi.org\u003C/code>\u003C/td>\n\u003Ctd>Строка \u003Ccode>mcp-name: &lt;server name&gt;\u003C/code> в README, можно в HTML-комментарии\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>nuget\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>api.nuget.org\u003C/code>\u003C/td>\n\u003Ctd>Строка \u003Ccode>mcp-name: &lt;server name&gt;\u003C/code> в README, можно в HTML-комментарии\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>cargo\u003C/code>\u003C/td>\n\u003Ctd>\u003Ccode>crates.io\u003C/code>\u003C/td>\n\u003Ctd>Строка \u003Ccode>mcp-name: &lt;server name&gt;\u003C/code> видимым текстом в README; crates.io удаляет HTML-комментарии\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>oci\u003C/code>\u003C/td>\n\u003Ctd>Docker Hub, GHCR, Quay.io, Google Artifact Registry, Azure Container Registry, Microsoft Container Registry\u003C/td>\n\u003Ctd>Аннотация образа \u003Ccode>io.modelcontextprotocol.server.name\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mcpb\u003C/code>\u003C/td>\n\u003Ctd>Релизы GitHub и GitLab\u003C/td>\n\u003Ctd>URL содержит «mcp»; обязателен \u003Ccode>fileSha256\u003C/code> с SHA-256 файла\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Для npm-пакета маркер выглядит так:\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;name&quot;: &quot;@example-user/mcp-weather-server&quot;,\n  &quot;version&quot;: &quot;1.2.0&quot;,\n  &quot;mcpName&quot;: &quot;io.github.example-user/weather&quot;\n}\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>Для образа OCI аннотация задаётся инструкцией \u003Ccode>LABEL\u003C/code> в Dockerfile, например \u003Ccode>LABEL io.modelcontextprotocol.server.name=&quot;io.github.example-user/weather&quot;\u003C/code>. Хеш файла MCPB реестр не проверяет; по документации, его проверяют \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"mcp-client\">MCP-клиенты\u003C/span> перед установкой.\u003C/p>\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>Удалённый сервер описывается в массиве \u003Ccode>remotes\u003C/code>. Такой записи не нужен \u003Ccode>packages\u003C/code>, и проверка пакетов к ней не применяется. URL должен быть публично доступен.\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Транспорт.\u003C/strong> \u003Ccode>type\u003C/code> - \u003Ccode>streamable-http\u003C/code> или \u003Ccode>sse\u003C/code>. Документация рекомендует \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"streamable-http\">Streamable HTTP\u003C/span>, а SSE называет устаревшим и советует публиковать только для существующих клиентов.\u003C/li>\n\u003Cli>\u003Cstrong>Переменные URL.\u003C/strong> URL может содержать переменные в фигурных скобках, например \u003Ccode>https://{tenant_id}.analytics.example.com/mcp\u003C/code>, с описанием, значением по умолчанию и списком вариантов в \u003Ccode>variables\u003C/code>. Значения пользователь задаёт при настройке сервера.\u003C/li>\n\u003Cli>\u003Cstrong>Заголовки.\u003C/strong> \u003Ccode>headers\u003C/code> перечисляет HTTP-заголовки, которые клиент должен отправлять, например ключ API, с флагами \u003Ccode>isRequired\u003C/code> и \u003Ccode>isSecret\u003C/code>.\u003C/li>\n\u003C/ul>\n\u003Cp>Реестр проверяет право на пространство имён, а не на URL. Каждый удалённый URL может принадлежать только одному имени сервера: публикация с URL, который уже использует другой сервер, не проходит. \u003Ccode>packages\u003C/code> и \u003Ccode>remotes\u003C/code> можно сочетать, и тогда способ установки выбирает хост-приложение.\u003C/p>\n\u003Ch2 id=\"публикация-через-mcp-publisher\" class=\"wiki-heading\">Публикация через mcp-publisher\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"публикация-через-mcp-publisher\" 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>mcp-publisher\u003C/code> устанавливается готовым бинарным файлом из релизов репозитория \u003Ccode>modelcontextprotocol/registry\u003C/code> или через Homebrew. Его команды:\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>mcp-publisher init\u003C/code>\u003C/td>\n\u003Ctd>Создаёт шаблон \u003Ccode>server.json\u003C/code> по файлам проекта\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mcp-publisher validate\u003C/code>\u003C/td>\n\u003Ctd>Проверяет \u003Ccode>server.json\u003C/code> по схеме и правилам реестра без публикации\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mcp-publisher login &lt;method&gt;\u003C/code>\u003C/td>\n\u003Ctd>Вход: \u003Ccode>github\u003C/code>, \u003Ccode>github-oidc\u003C/code>, \u003Ccode>dns\u003C/code>, \u003Ccode>http\u003C/code>; \u003Ccode>none\u003C/code> только для локального реестра\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mcp-publisher publish\u003C/code>\u003C/td>\n\u003Ctd>Отправляет \u003Ccode>server.json\u003C/code> в реестр\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mcp-publisher status\u003C/code>\u003C/td>\n\u003Ctd>Меняет статус версии или всех версий: \u003Ccode>active\u003C/code>, \u003Ccode>deprecated\u003C/code>, \u003Ccode>deleted\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mcp-publisher logout\u003C/code>\u003C/td>\n\u003Ctd>Удаляет сохранённый токен\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Обычная публикация сервера на основе npm-пакета состоит из публикации пакета, а затем его метаданных:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"bash\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">Bash\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># The package goes to npm first: the registry stores only metadata\nnpm publish --access public\n\n# Create and check server.json\nmcp-publisher init\nmcp-publisher validate\n\n# Log in with GitHub and publish\nmcp-publisher login github\nmcp-publisher publish\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>При публикации реестр проверяет документ, сверяет пространство имён с токеном и проверяет владение каждым пакетом.\u003C/p>\n\u003Cp>Публикацию можно автоматизировать в GitHub Actions. Документация рекомендует OIDC, фиксацию конкретного релиза \u003Ccode>mcp-publisher\u003C/code> и проверку его подписи Sigstore перед использованием. Запуск тестов в таких процессах описан в статье \u003Ca href=\"/ru/wiki/test-automation/automated-tests-in-ci\" class=\"wiki-link wiki-link--article\">Автотесты в CI\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>version\u003C/code>, уникальная для сервера. Опубликованную версию изменить нельзя: чтобы исправить метаданные, публикуется новая версия. Реестр рекомендует семантическое версионирование, но принимает любую строку, кроме похожих на диапазоны, например \u003Ccode>^1.2.3\u003C/code>, \u003Ccode>~1.2.3\u003C/code>, \u003Ccode>&gt;=1.2.3\u003C/code> или \u003Ccode>1.x\u003C/code>.\u003C/p>\n\u003Cp>Последней (\u003Ccode>isLatest\u003C/code>) реестр отмечает версию, сравнивая семантические версии. Версия, которую нельзя разобрать как семантическую, всегда отмечается последней. Чтобы изменить только метаданные без нового пакета, она советует предварительную версию вида \u003Ccode>1.2.3-1\u003C/code>; такая версия при сортировке стоит раньше \u003Ccode>1.2.3\u003C/code> и не становится последней, если опубликована после неё.\u003C/p>\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>active\u003C/code>\u003C/td>\n\u003Ctd>Сервер виден в списках по умолчанию\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>deprecated\u003C/code>\u003C/td>\n\u003Ctd>Сервер остаётся видимым, с сообщением вроде «Please upgrade to 2.0.0»\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>deleted\u003C/code>\u003C/td>\n\u003Ctd>Сервер скрыт из списков по умолчанию; метаданные доступны с \u003Ccode>include_deleted=true\u003C/code>\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Метаданные никогда не удаляются полностью. Сервер со статусом \u003Ccode>deleted\u003C/code> можно восстановить, вернув статус \u003Ccode>active\u003C/code>.\u003C/p>\n\u003Ch2 id=\"api-реестра\" class=\"wiki-heading\">API реестра\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"api-реестра\" 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\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>GET /v0.1/servers\u003C/code>\u003C/td>\n\u003Ctd>Список серверов, по записи на версию; параметры \u003Ccode>search\u003C/code>, \u003Ccode>version\u003C/code>, \u003Ccode>updated_since\u003C/code>, \u003Ccode>include_deleted\u003C/code>, \u003Ccode>limit\u003C/code>, \u003Ccode>cursor\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET /v0.1/servers/{serverName}/versions\u003C/code>\u003C/td>\n\u003Ctd>Все версии сервера\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>GET /v0.1/servers/{serverName}/versions/{version}\u003C/code>\u003C/td>\n\u003Ctd>Одна версия; \u003Ccode>latest\u003C/code> возвращает последнюю\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Имена серверов в пути кодируются для URL: \u003Ccode>io.github.example-user%2Fweather\u003C/code>. Список выдаётся постранично по курсору: ответ содержит \u003Ccode>metadata.nextCursor\u003C/code>, который передаётся как \u003Ccode>cursor\u003C/code> в следующем запросе. \u003Ccode>version=latest\u003C/code> возвращает только последнюю версию каждого сервера. \u003Ccode>updated_since\u003C/code> с меткой времени в формате RFC 3339 возвращает серверы, изменённые с этого момента, и служит для инкрементальной синхронизации.\u003C/p>\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>Реестр определяет спецификацию OpenAPI своего API. \u003Cstrong>Субреестр\u003C/strong> - агрегатор, который реализует эту спецификацию, поэтому хост-приложения читают его так же, как официальный реестр. Субреестр может добавлять свои метаданные, например оценки, число загрузок или результаты сканирования, под собственным ключом в \u003Ccode>_meta\u003C/code>, например \u003Ccode>com.example.subregistry/custom\u003C/code>.\u003C/p>\n\u003Cp>Закрытые реестры компаний реализуют ту же спецификацию для своих внутренних серверов. В спецификации эндпоинты публикации необязательны, и реестр может быть только для чтения. Реестр, которому нужна аутентификация, следует спецификации авторизации MCP и выступает сервером ресурсов OAuth 2.1; рекомендуемые права - \u003Ccode>mcp-registry:read\u003C/code> и \u003Ccode>mcp-registry:write\u003C/code>. Сам официальный реестр для публикации использует собственные токены на основе JWT.\u003C/p>\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\u003Cp>Реестр не удаляет низкокачественные серверы и серверы с ошибками, серверы с уязвимостями, дубли других серверов и серверы с контентом для взрослых. Политика указывает, что реестр не даёт гарантий модерации и полагается на реестры пакетов и субреестры для более глубоких проверок. Снятый с публикации сервер получает статус \u003Ccode>deleted\u003C/code>, а его метаданные остаются доступны через API; в исключительных случаях, например при незаконных метаданных, их могут перезаписать или стереть. О злоупотреблениях сообщают в реестр пакетов и в issue репозитория реестра с заголовком, который начинается с «Abuse report:».\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>Таблица сравнивает MCP Registry с двумя видами систем, с которыми он работает.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-4\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C/th>\n\u003Cth>Реестр пакетов\u003C/th>\n\u003Cth>MCP Registry\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\u003Ctd>Копию метаданных и собственные данные\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Кто публикует\u003C/td>\n\u003Ctd>Автор пакета\u003C/td>\n\u003Ctd>Публикующий сервер, с подтверждённым пространством имён и пакетом\u003C/td>\n\u003Ctd>Берёт данные из MCP Registry\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Отбор\u003C/td>\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\u003Ctd>Хост-приложения и пользователи\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Пример\u003C/td>\n\u003Ctd>npm, PyPI, Docker Hub\u003C/td>\n\u003Ctd>\u003Ccode>registry.modelcontextprotocol.io\u003C/code>\u003C/td>\n\u003Ctd>GitHub MCP Registry, закрытый реестр компании\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>MCP Registry не заменяет реестр пакетов. Пакет сначала публикуется в своём реестре, и MCP Registry на него ссылается. Маркеры владения связывают их: пакет называет сервер, а сервер называет пакет.\u003C/p>\n\u003Cp>Субреестр не заменяет и MCP Registry: он берёт оттуда данные и применяет свой отбор. Тестирование сервера перед публикацией описано в статье \u003Ca href=\"/ru/wiki/mcp/testing-mcp-servers\" class=\"wiki-link wiki-link--article\">Тестирование MCP-серверов\u003C/a>, а регрессионные проверки между версиями - в статье \u003Ca href=\"/ru/wiki/mcp/mcp-server-regression-testing\" 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>MCP Registry\u003C/td>\n\u003Ctd>Официальный каталог метаданных о публично доступных MCP-серверах по адресу \u003Ccode>registry.modelcontextprotocol.io\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>server.json\u003C/code>\u003C/td>\n\u003Ctd>JSON-документ с описанием MCP-сервера: имя, описание, версия, пакеты, удалённые адреса\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Пространство имён сервера\u003C/td>\n\u003Ctd>Часть имени сервера до \u003Ccode>/\u003C/code> в обратной DNS-нотации, привязанная к учётной записи GitHub или домену\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Маркер владения пакетом\u003C/td>\n\u003Ctd>Значение в пакете, например \u003Ccode>mcpName\u003C/code> или \u003Ccode>mcp-name:\u003C/code>, которое называет сервер и связывает с ним пакет\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mcp-publisher\u003C/code>\u003C/td>\n\u003Ctd>Официальная утилита командной строки для создания, проверки и публикации \u003Ccode>server.json\u003C/code>\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Запись удалённого сервера\u003C/td>\n\u003Ctd>Элемент \u003Ccode>remotes\u003C/code> с типом транспорта и публичным URL сервера\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Субреестр (subregistry)\u003C/td>\n\u003Ctd>Агрегатор, который копирует данные из MCP Registry, добавляет свои и реализует тот же API\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Закрытый реестр\u003C/td>\n\u003Ctd>Реестр организации, который реализует API реестра для внутренних серверов\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/registry/about\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">The MCP Registry, modelcontextprotocol.io\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/registry/quickstart\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Quickstart: Publish an MCP Server to the MCP Registry\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/registry/authentication\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">How to Authenticate When Publishing to the Official MCP Registry\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/registry/package-types\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">MCP Registry Supported Package Types\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/registry/remote-servers\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Publishing Remote Servers\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/registry/versioning\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Versioning Published MCP Servers\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/registry/github-actions\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">How to Automate Publishing with GitHub Actions\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/registry/registry-aggregators\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">MCP Registry Aggregators\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/registry/moderation-policy\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">The MCP Registry Moderation Policy\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/registry/faq\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Frequently Asked Questions, MCP Registry\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/registry\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Репозиторий MCP Registry, 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://github.com/modelcontextprotocol/registry/blob/main/docs/reference/server-json/CHANGELOG.md\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Server JSON Schema Changelog, 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://github.com/modelcontextprotocol/registry/blob/main/docs/reference/server-json/official-registry-requirements.md\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Official Registry server.json Requirements, 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://github.com/modelcontextprotocol/registry/blob/main/docs/reference/cli/commands.md\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Publisher CLI Commands Reference, 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://github.com/modelcontextprotocol/registry/blob/main/docs/reference/api/generic-registry-api.md\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Generic Registry API Specification, 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://github.com/modelcontextprotocol/registry/blob/main/docs/reference/api/registry-authorization.md\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Registry Authorization, 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://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Introducing the MCP Registry, блог MCP, 8 сентября 2025\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,30,33,36,39,42,45,48,51,54,57,60,63,66,69],{"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},"место-в-экосистеме","Место в экосистеме",{"id":24,"level":12,"text":25},"формат-serverjson","Формат server.json",{"id":27,"level":28,"text":29},"поля",3,"Поля",{"id":31,"level":28,"text":32},"пример","Пример",{"id":34,"level":28,"text":35},"метаданные-публикующего","Метаданные публикующего",{"id":37,"level":12,"text":38},"пространства-имён","Пространства имён",{"id":40,"level":12,"text":41},"подтверждение-владения","Подтверждение владения",{"id":43,"level":12,"text":44},"проверка-пакетов","Проверка пакетов",{"id":46,"level":12,"text":47},"удалённые-серверы","Удалённые серверы",{"id":49,"level":12,"text":50},"публикация-через-mcp-publisher","Публикация через mcp-publisher",{"id":52,"level":12,"text":53},"версии-и-статусы","Версии и статусы",{"id":55,"level":12,"text":56},"api-реестра","API реестра",{"id":58,"level":12,"text":59},"субреестры-и-закрытые-реестры","Субреестры и закрытые реестры",{"id":61,"level":12,"text":62},"модерация","Модерация",{"id":64,"level":12,"text":65},"реестр-реестры-пакетов-и-субреестры","Реестр, реестры пакетов и субреестры",{"id":67,"level":12,"text":68},"термины","Термины",{"id":70,"level":12,"text":71},"источники","Источники",2390,1793718890073]