ENT ONE school workspace for parents: teacher messaging, liaison book, homework, news.
Parlez à l'ENT de vos enfants depuis votre assistant IA.
ent1-mcp est un serveur MCP (Model Context Protocol) pour l'ENT ONE, l'espace numérique de travail des écoles construit sur la plateforme Edifice (ex-Open Digital Education). Il permet à Claude, ChatGPT ou tout autre assistant compatible MCP de lire et d'écrire dans l'ENT à votre place : messagerie avec les enseignants, carnet de liaison, cahier de texte, actualités de l'école, blogs de classe, calendrier, casier, documents, formulaires…
Écrit en Rust, sans dépendance à un navigateur, il se connecte avec vos identifiants habituels et ne stocke rien.
[!IMPORTANT] Projet communautaire non officiel. Il n'est ni développé, ni soutenu, ni validé par Edifice, par l'Éducation nationale ou par une académie. Il utilise l'API interne que l'application web de l'ENT appelle elle-même, qui peut changer sans préavis.
« Qu'est-ce qui s'est passé sur l'ENT cette semaine ? »
« Y a-t-il des mots du carnet de liaison que je n'ai pas encore signés ? Signe-les. »
« Quels sont les devoirs de Léa pour jeudi ? Coche ceux qu'elle a déjà faits. »
« Écris à la maîtresse de CM1 pour la prévenir que Léa sera absente vendredi matin (rendez-vous chez l'orthophoniste). Montre-moi le message avant de l'envoyer. »
« Résume-moi les trois dernières actualités de l'école et ajoute les dates importantes à ma liste. »
« Dépose l'attestation d'assurance dans le casier de l'enseignante. »
L'assistant enchaîne lui-même les outils : il cherche l'enseignante dans l'annuaire, rédige le message, vous le soumet, puis l'envoie.
48 outils, regroupés par application de l'ENT. Les outils de lecture sont annotés readOnlyHint, les suppressions destructiveHint : les clients MCP s'en servent pour demander (ou non) votre confirmation.
| Application | Outils | Lecture | Écriture |
|---|---|---|---|
| Compte | profil, deconnexion | ✅ | |
| Quoi de neuf ? | fil_nouveautes | ✅ | |
| Messagerie | messagerie_lister, messagerie_lire, messagerie_non_lus, messagerie_envoyer, messagerie_enregistrer_brouillon, messagerie_joindre_fichier, messagerie_telecharger_piece_jointe, messagerie_marquer, messagerie_deplacer, messagerie_supprimer, messagerie_restaurer, messagerie_rappeler, messagerie_dossiers, messagerie_creer_dossier | ✅ | ✅ |
| Annuaire | annuaire_rechercher, annuaire_fiche | ✅ | |
| Carnet de liaison | carnet_lister, carnet_signer, carnet_repondre | ✅ | ✅ |
| Cahier de texte | cahier_lister, cahier_lire, cahier_marquer (devoir fait / à faire) | ✅ | ✅ |
| Actualités | actualites_lister, actualites_fils, actualites_lire, actualites_commenter | ✅ | ✅ |
| Blog | blog_lister, blog_billets, blog_commentaires, blog_commenter, blog_supprimer_commentaire | ✅ | ✅ |
| Calendrier | calendrier_lister, calendrier_evenements | ✅ | |
| Espace documentaire | documents_lister, documents_telecharger, documents_deposer | ✅ | ✅ |
| Casier | casier_lister, casier_destinataires, casier_deposer, casier_telecharger, casier_supprimer | ✅ | ✅ |
| Formulaires | formulaires_lister, formulaires_lire | ✅ | lien |
| Wiki | wiki_lister, wiki_lire_page | ✅ |
Détails utiles :
structuredContent) avec son schéma de sortie, en plus du texte.Indian/Reunion par défaut).messagerie_rappeler), comme dans l'ENT.Il faut Rust 1.88 ou plus récent.
cargo install --git https://github.com/edouard-claude/ent1-mcp
Le binaire ent1-mcp est installé dans ~/.cargo/bin.
git clone https://github.com/edouard-claude/ent1-mcp
cd ent1-mcp
cargo build --release
# binaire : target/release/ent1-mcp
L'image est publiée sur GitHub Container Registry à chaque version. Par défaut elle parle en stdio, comme le binaire :
docker run --rm -i -e ENT1_IDENTIFIANT -e ENT1_MOT_DE_PASSE ghcr.io/edouard-claude/ent1-mcp
En mode HTTP :
docker run --rm -p 8080:8080 \
-e ENT1_TRANSPORT=http -e ENT1_ECOUTE=0.0.0.0:8080 \
-e ENT1_IDENTIFIANT -e ENT1_MOT_DE_PASSE -e ENT1_MCP_JETON \
ghcr.io/edouard-claude/ent1-mcp
Le serveur est référencé dans le registre MCP sous le nom io.github.edouard-claude/ent1-mcp : les clients qui s'appuient sur le registre le proposent directement, avec les variables à renseigner.
Tout se règle par variables d'environnement. Les secrets ne peuvent pas être passés en argument de ligne de commande : ils apparaîtraient dans la liste des processus.
| Variable | Obligatoire | Défaut | Rôle |
|---|---|---|---|
ENT1_IDENTIFIANT | ✅* | Identifiant de connexion à l'ENT (ex. prenom.nom) | |
ENT1_MOT_DE_PASSE | ✅* | Mot de passe de l'ENT | |
ENT1_URL | https://ent1d.ac-reunion.fr | Adresse de votre ENT | |
ENT1_FUSEAU | Indian/Reunion | Fuseau horaire des dates renvoyées | |
ENT1_TRANSPORT | stdio | stdio (client local) ou http (serveur distant) | |
ENT1_ECOUTE | 127.0.0.1:8080 | Adresse d'écoute en mode HTTP | |
ENT1_MCP_JETON | en HTTP | Jeton d'accès du mode HTTP, 32 caractères minimum | |
ENT1_HOTES | boucle locale | Noms d'hôte publics acceptés en HTTP, séparés par des virgules | |
RUST_LOG | ent1_mcp=info | Niveau des journaux (écrits sur la sortie d'erreur) |
Un modèle est fourni dans .env.exemple.
Au démarrage, le serveur ouvre une session sur l'ENT : des identifiants erronés sont signalés tout de suite, pas au premier appel d'outil.
* Sans aucun des deux, le serveur démarre quand même (utile pour l'inspecter ou le référencer) : il liste ses outils, et chacun répond qu'aucun compte n'est configuré.
Ouvrez Réglages → Développeur → Modifier la configuration et ajoutez :
{
"mcpServers": {
"ent": {
"command": "/Users/vous/.cargo/bin/ent1-mcp",
"env": {
"ENT1_IDENTIFIANT": "prenom.nom",
"ENT1_MOT_DE_PASSE": "votre-mot-de-passe"
}
}
}
}
Redémarrez Claude Desktop : les outils de l'ENT apparaissent dans le menu des connecteurs.
claude mcp add ent --env ENT1_IDENTIFIANT=prenom.nom --env ENT1_MOT_DE_PASSE=votre-mot-de-passe -- ent1-mcp
Pour un assistant qui ne tourne pas sur votre machine, lancez le serveur en Streamable HTTP derrière un reverse proxy HTTPS :
export ENT1_TRANSPORT=http
export ENT1_ECOUTE=0.0.0.0:8080
export ENT1_HOTES=ent-mcp.mondomaine.fr
export ENT1_MCP_JETON="$(openssl rand -hex 32)"
ent1-mcp
Le point d'accès est https://ent-mcp.mondomaine.fr/mcp, protégé par l'en-tête Authorization: Bearer <jeton>. Une sonde de santé répond sur /sante.
Exemple avec le connecteur MCP de l'API Claude :
"mcp_servers": [{
"type": "url",
"url": "https://ent-mcp.mondomaine.fr/mcp",
"name": "ent",
"authorization_token": "<jeton>"
}]
Les connecteurs personnalisés de claude.ai et de ChatGPT n'acceptent pas de jeton fixe : ils exigent OAuth 2.1. Le mode HTTP actuel ne suffit donc pas pour eux. C'est la prochaine étape du projet (voir la feuille de route) : une page de connexion où chaque parent saisit ses identifiants ENT, sans jamais les confier à l'assistant.
L'ENT contient des données d'enfants. Ce projet part de ce principe.
Ce que fait le serveur
secrecy : il n'apparaît ni dans les journaux, ni dans les messages d'erreur, ni dans Debug.X-XSRF-TOKEN), comme l'application web.unsafe interdit dans tout le code.Ce que vous devez savoir
Une faille ? Merci de la signaler en privé (voir SECURITY.md) plutôt que dans une issue publique.
L'ENT ONE est une déclinaison de la plateforme open source Edifice, également utilisée sous d'autres noms (NEO, ONE dans d'autres académies, ENT de collectivités…). Les routes utilisées étant celles du socle commun, ent1-mcp devrait fonctionner ailleurs en changeant ENT1_URL. Seule l'instance de La Réunion (ent1d.ac-reunion.fr) a été testée : vos retours sont bienvenus.
Les ENT qui imposent une connexion ÉduConnect ou une double authentification ne sont pas pris en charge pour l'instant (voir limites).
Assistant (Claude, ChatGPT…)
│ MCP : stdio ou Streamable HTTP (+ jeton)
▼
┌──────────────────────────────┐
│ ent1-mcp │
│ outils/ 48 outils MCP │ un module par application de l'ENT
│ texte.rs HTML ⇄ texte │
│ ent/ client HTTP │ session, reconnexion, XSRF, identifiants typés
└──────────────┬───────────────┘
│ HTTPS, cookie de session
▼
ENT ONE / Edifice
(/conversation, /schoolbook, /homeworks, /actualites, /blog, /rack…)
POST /auth/login, puis cookie de session. Une réponse 401 ou une redirection vers la page de connexion déclenche une reconnexion et un unique rejeu de la requête.rmcp (SDK MCP officiel), reqwest + rustls, axum, tokio, schemars, html2text, jiff.cargo build
cargo test
cargo clippy --all-targets -- -D warnings # lints pedantic activés dans Cargo.toml
cargo fmt --check
Le script scripts/verifier.py lance le serveur, appelle tous les outils de lecture et affiche un résumé (nombre d'éléments renvoyés, erreurs) sans afficher les contenus. Il n'écrit rien dans l'ENT.
cargo build --release
export ENT1_IDENTIFIANT=prenom.nom
read -rs ENT1_MOT_DE_PASSE && export ENT1_MOT_DE_PASSE
python3 scripts/verifier.py
npx @modelcontextprotocol/inspector target/release/ent1-mcp
src/outils/<application>.rs correspondant, avec #[tool(...)], une description en français claire pour l'assistant et les bonnes annotations (read_only_hint, destructive_hint…).ent::chemin(&[...]), qui refuse les identifiants dangereux.Serialize + JsonSchema en français.Les contributions sont bienvenues, en français : issues, retours d'autres académies, nouveaux outils, corrections de la documentation. Voir CONTRIBUTING.md.
Double licence, au choix : MIT ou Apache 2.0.
« ONE », « Edifice » et les noms d'académies appartiennent à leurs propriétaires respectifs. Ce projet n'y est pas affilié.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
docker run -i --rm ghcr.io/edouard-claude/ent1-mcp:0.1.1Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-edouard-claude-ent1-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/edouard-claude/ent1-mcp:0.1.1"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceghcr.io/edouard-claude/ent1-mcp:0.1.1dockerENT ONE (Edifice) works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.