ocireg

oficial

Un servidor MCP basado en SSE que permite a aplicaciones impulsadas por LLM interactuar con registros OCI. Proporciona herramientas para recuperar información sobre imágenes de contenedores, listar etiquetas y más.

¿Qué puedes hacer con Ocireg MCP?

  • Obtener detalles de la imagen — Solicita el digest, tamaño, arquitectura, sistema operativo, fecha de creación y cantidad de capas de cualquier imagen pública usando get_image_info.
  • Listar etiquetas del repositorio — Recupera todas las etiquetas disponibles para un repositorio determinado con list_tags.
  • Obtener el manifiesto de imagen sin procesar — Obtén el manifiesto completo de una referencia de imagen mediante get_image_manifest.
  • Obtener la configuración de la imagen — Consigue la configuración de la imagen (por ejemplo, punto de entrada, entorno, puertos expuestos) con get_image_config.

Documentación

Servidor MCP de Registro OCI

Trust Score Un servidor MCP (Protocolo de Contexto de Modelo) que proporciona herramientas para consultar registros OCI y referencias de imágenes.

Descripción General

Este proyecto implementa un servidor MCP basado en SSE que permite a las aplicaciones potenciadas por LLM interactuar con registros OCI. Proporciona herramientas para recuperar información sobre imágenes de contenedores, listar etiquetas y más.

Características

  • Obtener información sobre imágenes OCI
  • Listar etiquetas para repositorios
  • Obtener manifiestos de imágenes
  • Obtener configuraciones de imágenes

Herramientas MCP

El servidor proporciona las siguientes herramientas MCP:

get_image_info

Obtiene información sobre una imagen OCI.

Entrada:

  • image_ref: La referencia de la imagen (ej., docker.io/library/alpine:latest)

Salida:

  • Información de la imagen incluyendo digest, tamaño, arquitectura, SO, fecha de creación y número de capas

list_tags

Lista las etiquetas de un repositorio.

Entrada:

  • repository: El nombre del repositorio (ej., docker.io/library/alpine)

Salida:

  • Lista de etiquetas para el repositorio

get_image_manifest

Obtiene el manifiesto de una imagen OCI.

Entrada:

  • image_ref: La referencia de la imagen (ej., docker.io/library/alpine:latest)

Salida:

  • El manifiesto de la imagen

get_image_config

Obtiene la configuración de una imagen OCI.

Entrada:

  • image_ref: La referencia de la imagen (ej., docker.io/library/alpine:latest)

Salida:

  • La configuración de la imagen

Uso

Ejecución con ToolHive (Recomendado)

La forma más sencilla de ejecutar el servidor MCP de Registro OCI es usando ToolHive, que proporciona despliegue seguro y contenerizado de servidores 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

El servidor estará disponible para tus clientes compatibles con MCP y podrá consultar registros OCI para obtener información de imágenes.

Autenticación con ToolHive

Si necesitas acceder a registros privados, puedes proporcionar credenciales de autenticación usando la gestión de secretos de 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

Desarrollo

Prerrequisitos

  • Go 1.21 o posterior
  • Acceso a registros OCI

Autenticación

El servidor soporta los siguientes métodos de autenticación para acceder a registros OCI privados (en orden de prioridad):

  1. Cabecera HTTP de Autorización (Prioridad Máxima): Incluye un token de portador en la cabecera Authorization de la solicitud HTTP:

    • Authorization: Bearer <your-token>
    • Este método tiene prioridad sobre todos los demás métodos de autenticación
    • Cuando está presente, las variables de entorno y la configuración de Docker se ignoran
  2. Variable de Entorno de Token de Portador: Establece la siguiente variable de entorno:

    • OCI_TOKEN: Token de portador para autenticación en el registro
  3. Usuario y Contraseña: Establece las siguientes variables de entorno:

    • OCI_USERNAME: Nombre de usuario para autenticación en el registro
    • OCI_PASSWORD: Contraseña para autenticación en el registro
  4. Configuración de Docker (Prioridad Más Baja): Si no se proporciona otra autenticación, el servidor usará el llavero de Docker por defecto, que lee las credenciales de ~/.docker/config.json.

Ejemplos:

# 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

Configuración de Puerto

El servidor puede configurarse para escuchar en un puerto específico usando:

  1. Variable de Entorno:

    • MCP_PORT: El número de puerto en el que escuchar (debe estar entre 0 y 65535)
    • Si no se establece o es inválido, por defecto es el puerto 8080
  2. Bandera de Línea de Comandos:

    • -port: Sobrescribe la configuración de la variable de entorno (debe estar entre 0 y 65535)
    • Si se proporciona un puerto inválido, por defecto es el puerto 8080
    • Ejemplo: ./ocireg-mcp -port 9090

Pruebas

go test ./...

Linting

golangci-lint run

Contribuciones

¡Agradecemos las contribuciones a este servidor MCP! Si deseas contribuir, por favor revisa la guía de CONTRIBUCIÓN para obtener detalles sobre cómo empezar.

Si encuentras un error o tienes una solicitud de funcionalidad, por favor abre un issue en el repositorio o únete a nosotros en el canal #mcp-servers de nuestro servidor de Discord comunitario.

Licencia

Este proyecto está licenciado bajo la Licencia Apache v2 - consulta el archivo LICENSE para más detalles.