ocireg
официальныйMCP-сервер на основе SSE, который позволяет приложениям на базе LLM взаимодействовать с реестрами OCI. Он предоставляет инструменты для получения информации о контейнерных образах, просмотра тегов и других операций.
Что можно делать с Ocireg MCP?
- Получить детали образа — Запросить digest, размер, архитектуру, ОС, дату создания и количество слоев любого публичного образа с помощью
get_image_info. - Список тегов репозитория — Получить все доступные теги для указанного репозитория с помощью
list_tags. - Получить сырой манифест образа — Загрузить полный манифест ссылки на образ через
get_image_manifest. - Получить конфигурацию образа — Получить конфигурацию образа (например, точку входа, окружение, открытые порты) с помощью
get_image_config.
Документация
Сервер MCP для реестра OCI
Сервер 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 (в порядке приоритета):
-
Заголовок HTTP Authorization (наивысший приоритет): Включите токен-носитель в заголовок
AuthorizationHTTP-запроса:Authorization: Bearer <your-token>- Этот метод имеет приоритет над всеми остальными методами аутентификации
- Если он присутствует, переменные окружения и конфигурация Docker игнорируются
-
Переменная окружения с токеном-носителем: Установите следующую переменную окружения:
OCI_TOKEN: Токен-носитель для аутентификации в реестре
-
Имя пользователя и пароль: Установите следующие переменные окружения:
OCI_USERNAME: Имя пользователя для аутентификации в реестреOCI_PASSWORD: Пароль для аутентификации в реестре
-
Конфигурация 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
Настройка порта
Сервер можно настроить на прослушивание определённого порта, используя:
-
Переменную окружения:
MCP_PORT: Номер порта для прослушивания (должен быть от 0 до 65535)- Если не задан или некорректен, по умолчанию используется порт 8080
-
Флаг командной строки:
-port: Переопределяет настройку переменной окружения (должен быть от 0 до 65535)- Если указан некорректный порт, по умолчанию используется порт 8080
- Пример:
./ocireg-mcp -port 9090
Тестирование
go test ./...
Линтинг
golangci-lint run
Участие в проекте
Мы приветствуем вклад в этот сервер MCP! Если вы хотите внести свой вклад, пожалуйста, ознакомьтесь с руководством CONTRIBUTING для получения подробной информации о том, как начать.
Если вы столкнулись с ошибкой или у вас есть предложение по новой функции, пожалуйста,
создайте issue в
репозитории или присоединяйтесь к нам в канале #mcp-servers на нашем
сервере сообщества Discord.
Лицензия
Этот проект лицензирован под лицензией Apache v2 — см. файл LICENSE для подробностей.