ocireg

официальный

MCP-сервер на основе SSE, который позволяет приложениям на базе LLM взаимодействовать с реестрами OCI. Он предоставляет инструменты для получения информации о контейнерных образах, просмотра тегов и других операций.

Что можно делать с Ocireg MCP?

  • Получить детали образа — Запросить digest, размер, архитектуру, ОС, дату создания и количество слоев любого публичного образа с помощью get_image_info.
  • Список тегов репозитория — Получить все доступные теги для указанного репозитория с помощью list_tags.
  • Получить сырой манифест образа — Загрузить полный манифест ссылки на образ через get_image_manifest.
  • Получить конфигурацию образа — Получить конфигурацию образа (например, точку входа, окружение, открытые порты) с помощью get_image_config.

Документация

Сервер MCP для реестра OCI

Trust Score Сервер MCP (Model Context Protocol), предоставляющий инструменты для запросов к реестрам OCI и ссылкам на образы.

Обзор

Этот проект реализует сервер MCP на основе SSE, который позволяет приложениям на базе LLM взаимодействовать с реестрами OCI. Он предоставляет инструменты для получения информации об образах контейнеров, списка тегов и многого другого.

Возможности

  • Получение информации об образах OCI
  • Вывод списка тегов для репозиториев
  • Получение манифестов образов
  • Получение конфигураций образов

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

Сервер предоставляет следующие инструменты MCP:

get_image_info

Получение информации об образе OCI.

Входные данные:

  • image_ref: Ссылка на образ (например, docker.io/library/alpine:latest)

Выходные данные:

  • Информация об образе, включая дайджест, размер, архитектуру, ОС, дату создания и количество слоёв

list_tags

Вывод списка тегов для репозитория.

Входные данные:

  • repository: Имя репозитория (например, docker.io/library/alpine)

Выходные данные:

  • Список тегов репозитория

get_image_manifest

Получение манифеста образа OCI.

Входные данные:

  • image_ref: Ссылка на образ (например, docker.io/library/alpine:latest)

Выходные данные:

  • Манифест образа

get_image_config

Получение конфигурации образа OCI.

Входные данные:

  • image_ref: Ссылка на образ (например, docker.io/library/alpine:latest)

Выходные данные:

  • Конфигурация образа

Использование

Запуск с ToolHive (рекомендуется)

Самый простой способ запустить сервер MCP для реестра OCI — использовать ToolHive, который обеспечивает безопасное, контейнеризированное развёртывание серверов MCP:

# Install ToolHive (if not already installed)
# See: https://docs.stacklok.com/toolhive/guides-cli/install

# Register a supported client so ToolHive can auto-configure your environment
thv client setup
# Run the OCI Registry MCP server (packaged as 'oci-registry' in ToolHive)
thv run oci-registry

# List running servers
thv list

# Get detailed information about the server
thv registry info oci-registry

Сервер будет доступен вашим клиентам, совместимым с MCP, и сможет запрашивать реестры OCI для получения информации об образах.

Аутентификация с ToolHive

Если вам нужен доступ к частным реестрам, вы можете предоставить учётные данные аутентификации, используя управление секретами ToolHive:

# For bearer token authentication
thv secret set oci-token
# Enter your bearer token when prompted

thv run --secret oci-token,target=OCI_TOKEN oci-registry

# For username/password authentication
thv secret set oci-username
thv secret set oci-password
# Enter your credentials when prompted

thv run --secret oci-username,target=OCI_USERNAME --secret oci-password,target=OCI_PASSWORD oci-registry

Разработка

Предварительные требования

  • Go 1.21 или новее
  • Доступ к реестрам OCI

Аутентификация

Сервер поддерживает следующие методы аутентификации для доступа к частным реестрам OCI (в порядке приоритета):

  1. Заголовок HTTP Authorization (наивысший приоритет): Включите токен-носитель в заголовок Authorization HTTP-запроса:

    • Authorization: Bearer <your-token>
    • Этот метод имеет приоритет над всеми остальными методами аутентификации
    • Если он присутствует, переменные окружения и конфигурация Docker игнорируются
  2. Переменная окружения с токеном-носителем: Установите следующую переменную окружения:

    • OCI_TOKEN: Токен-носитель для аутентификации в реестре
  3. Имя пользователя и пароль: Установите следующие переменные окружения:

    • OCI_USERNAME: Имя пользователя для аутентификации в реестре
    • OCI_PASSWORD: Пароль для аутентификации в реестре
  4. Конфигурация Docker (самый низкий приоритет): Если другие методы аутентификации не предоставлены, сервер будет использовать стандартную связку ключей Docker, которая считывает учётные данные из ~/.docker/config.json.

Примеры:

# HTTP Authorization header (for per-request authentication)
# This is handled automatically by the MCP client when making requests
# Example: curl -H "Authorization: Bearer mytoken" http://localhost:8080/...

# Bearer token authentication via environment variable
export OCI_TOKEN=mytoken

# Username/password authentication via environment variables
export OCI_USERNAME=myuser
export OCI_PASSWORD=mypassword

Настройка порта

Сервер можно настроить на прослушивание определённого порта, используя:

  1. Переменную окружения:

    • MCP_PORT: Номер порта для прослушивания (должен быть от 0 до 65535)
    • Если не задан или некорректен, по умолчанию используется порт 8080
  2. Флаг командной строки:

    • -port: Переопределяет настройку переменной окружения (должен быть от 0 до 65535)
    • Если указан некорректный порт, по умолчанию используется порт 8080
    • Пример: ./ocireg-mcp -port 9090

Тестирование

go test ./...

Линтинг

golangci-lint run

Участие в проекте

Мы приветствуем вклад в этот сервер MCP! Если вы хотите внести свой вклад, пожалуйста, ознакомьтесь с руководством CONTRIBUTING для получения подробной информации о том, как начать.

Если вы столкнулись с ошибкой или у вас есть предложение по новой функции, пожалуйста, создайте issue в репозитории или присоединяйтесь к нам в канале #mcp-servers на нашем сервере сообщества Discord.

Лицензия

Этот проект лицензирован под лицензией Apache v2 — см. файл LICENSE для подробностей.