ocireg MCP Server

officiel

Un serveur MCP basé sur SSE qui permet aux applications alimentées par LLM d'interagir avec les registres OCI. Il fournit des outils pour récupérer des informations sur les images conteneur, lister les tags, et plus encore.

Documentation

Serveur MCP de registre OCI

Trust Score Un serveur MCP (Model Context Protocol) qui fournit des outils pour interroger les registres OCI et les références d’images.

Aperçu

Ce projet implémente un serveur MCP basé sur SSE qui permet aux applications utilisant des LLM d’interagir avec les registres OCI. Il fournit des outils pour récupérer des informations sur les images de conteneurs, lister les étiquettes, et plus encore.

Fonctionnalités

  • Obtenir des informations sur les images OCI
  • Lister les étiquettes des dépôts
  • Obtenir les manifestes d’images
  • Obtenir les configurations d’images

Outils MCP

Le serveur fournit les outils MCP suivants :

get_image_info

Obtenir des informations sur une image OCI.

Entrée :

  • image_ref : La référence de l’image (ex. docker.io/library/alpine:latest)

Sortie :

  • Informations sur l’image incluant le condensé, la taille, l’architecture, le système d’exploitation, la date de création et le nombre de couches

list_tags

Lister les étiquettes d’un dépôt.

Entrée :

  • repository : Le nom du dépôt (ex. docker.io/library/alpine)

Sortie :

  • Liste des étiquettes du dépôt

get_image_manifest

Obtenir le manifeste d’une image OCI.

Entrée :

  • image_ref : La référence de l’image (ex. docker.io/library/alpine:latest)

Sortie :

  • Le manifeste de l’image

get_image_config

Obtenir la configuration d’une image OCI.

Entrée :

  • image_ref : La référence de l’image (ex. docker.io/library/alpine:latest)

Sortie :

  • La configuration de l’image

Utilisation

Exécution avec ToolHive (Recommandé)

La façon la plus simple d’exécuter le serveur MCP de registre OCI est d’utiliser ToolHive, qui fournit un déploiement conteneurisé et sécurisé des serveurs 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

Le serveur sera disponible pour vos clients compatibles MCP et pourra interroger les registres OCI pour obtenir des informations sur les images.

Authentification avec ToolHive

Si vous devez accéder à des registres privés, vous pouvez fournir des identifiants d’authentification en utilisant la gestion des secrets 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

Développement

Prérequis

  • Go 1.21 ou ultérieur
  • Accès aux registres OCI

Authentification

Le serveur prend en charge les méthodes d’authentification suivantes pour accéder aux registres OCI privés (par ordre de priorité) :

  1. En-tête HTTP d’autorisation (Priorité la plus élevée) : Inclure un jeton porteur dans l’en-tête Authorization de la requête HTTP :

    • Authorization: Bearer <your-token>
    • Cette méthode a priorité sur toutes les autres méthodes d’authentification
    • Lorsqu’il est présent, les variables d’environnement et la configuration Docker sont ignorées
  2. Variable d’environnement de jeton porteur : Définir la variable d’environnement suivante :

    • OCI_TOKEN : Jeton porteur pour l’authentification au registre
  3. Nom d’utilisateur et mot de passe : Définir les variables d’environnement suivantes :

    • OCI_USERNAME : Nom d’utilisateur pour l’authentification au registre
    • OCI_PASSWORD : Mot de passe pour l’authentification au registre
  4. Configuration Docker (Priorité la plus basse) : Si aucune autre authentification n’est fournie, le serveur utilisera le trousseau Docker par défaut, qui lit les identifiants depuis ~/.docker/config.json.

Exemples :

# 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

Configuration du port

Le serveur peut être configuré pour écouter sur un port spécifique en utilisant soit :

  1. Variable d’environnement :

    • MCP_PORT : Le numéro de port sur lequel écouter (doit être compris entre 0 et 65535)
    • Si non défini ou invalide, la valeur par défaut est le port 8080
  2. Option de ligne de commande :

    • -port : Remplace le paramètre de la variable d’environnement (doit être compris entre 0 et 65535)
    • Si un port invalide est fourni, la valeur par défaut est le port 8080
    • Exemple : ./ocireg-mcp -port 9090

Tests

go test ./...

Linting

golangci-lint run

Contribution

Nous accueillons favorablement les contributions à ce serveur MCP ! Si vous souhaitez contribuer, veuillez consulter le guide CONTRIBUTING pour plus de détails sur la façon de commencer.

Si vous rencontrez un bug ou avez une demande de fonctionnalité, veuillez ouvrir un ticket dans le dépôt ou nous rejoindre sur le canal #mcp-servers de notre serveur Discord communautaire.

Licence

Ce projet est sous licence Apache v2 - voir le fichier LICENSE pour plus de détails.