Aller au contenu principal
Documentation

Plugin Moodle

Ce que fait le plugin

local_mcpconnector est la partie Moodle de MoodleMCP. Elle relie votre site au panneau via une API signée, crée des services web limités par rôle et transforme les jetons Moodle en clés MCP révocables pour les utilisateurs de votre choix.

Le plugin communique avec le panneau et avec aucun autre tiers. Il nécessite un compte MoodleMCP : seul, il ne fait rien.

Installation

  1. Installez le plugin depuis Administration du site → Plugins → Installer des plugins (envoyez le zip, ou copiez le répertoire dans racinemoodle/local/mcpconnector) et terminez la mise à jour.
  2. Ouvrez Administration du site → Plugins → Plugins locaux → MCP Connector → Licence.
  3. Collez l'URL du panneau, la clé de licence, le secret du panneau et l'URL du point de terminaison MCP obtenus lors de la connexion de votre site.
  4. Cliquez sur Valider la licence. Une confirmation verte signifie que la signature et l'URL du site sont correctes.

Ce qui est ajouté à Moodle

SectionUtilité
LicenceURL du panneau, clé de licence, secret de signature et point de terminaison MCP.
ServicesLes définitions de services web par rôle et leurs fonctions autorisées.
UtilisateursAffecter ou retirer un utilisateur d'un service, ce qui émet ou révoque sa clé.
ClésCycle de vie par utilisateur : suspendre, activer, révoquer, régénérer et envoyer par courriel, et réconcilier l'état avec le panneau.
RéglagesSynchronisation automatique par rôle et modèle du courriel de remise des clés.

Provisionner des utilisateurs

Dans Utilisateurs, affectez un utilisateur au service correspondant à son rôle. Le plugin génère un jeton de service web pour cette personne, l'envoie au panneau, et le panneau renvoie une clé MCP. La valeur est envoyée par courriel à l'utilisateur et affichée une seule fois : Moodle ne conserve que ses quatre derniers caractères et son état.

Activez la synchronisation automatique d'un rôle si vous souhaitez que tout utilisateur portant ce rôle soit provisionné automatiquement.

Révoquer l'accès

Suspendre ou révoquer une clé depuis le plugin se propage au panneau, et la clé cesse de fonctionner dès l'appel suivant. Supprimer l'utilisateur Moodle la révoque également. Vous pouvez faire de même côté panneau, dans Organisation → Moodle → Clés MCP : les deux vues se réconcilient.

Ce qui est envoyé au panneau

Lors du provisionnement, le plugin envoie le nom complet de l'utilisateur, ses rôles effectifs dans Moodle et le jeton de service web généré pour lui ; la clé est envoyée à son adresse de courriel. Le panneau conserve le jeton chiffré et la clé hachée. Les réglages de confidentialité du plugin contiennent la déclaration lisible par machine.

Les jetons de service web et les valeurs des clés MCP ne sont jamais écrits dans les journaux de Moodle. Les clés étant remises par courriel, traitez ces boîtes en conséquence.

Pour les développeurs du plugin

Tous les points de terminaison entre le plugin et le panneau sont signés et limités en débit par licence :

Point de terminaisonObjet
POST /api/moodle/verifyVérification de la licence et de l'URL depuis les réglages du plugin
POST /api/moodle/keysEnregistrer un jeton → clé MCP (valeur renvoyée une fois)
POST /api/moodle/keys/listListe de métadonnées uniquement (ids, 4 derniers, état ; jamais de secrets)
POST /api/moodle/keys/revokeRévoquer par id de clé (idempotent et définitif)
POST /api/moodle/keys/suspendSuspendre ou réactiver par id de clé

La signature voyage dans un en-tête :

x-panel-signature: t=<secondes-unix>,v1=<hex hmac_sha256(secretPanneau, `${t}.${corpsBrut}`)>
  • Ce qui est signé est le corps brut de la requête, joint par un point après l'horodatage : toute modification du corps invalide la signature.
  • Les requêtes datant de plus de 300 secondes (ou en avance) sont rejetées, ce qui ferme la fenêtre de rejeu.
  • Une licence inconnue et une signature invalide renvoient toutes deux 403 invalid_credentials : l'API ne peut donc pas servir à énumérer les installations.
  • Le plugin envoie x-panel-version: 2 à chaque requête, ce qui permet au protocole d'évoluer sans casser les installations plus anciennes.

Le plugin est distribué sous GPL v3 ou ultérieure ; le code et les tickets sont sur github.com/studiolxd/moodle-local_mcpconnector.