ecoledirecte-mcp
Summary: This server gives Claude read-only access to a family's EcoleDirecte account so it can answer questions about students, grades, homework, absences, and messages directly in conversation.
lister_eleves— Lists the students attached to the connected EcoleDirecte account (no parameters); serves as the entry point for discovering thestudentIdvalues needed by other tools.consulter_notes— Retrieves a student's grades (requiresstudentId).consulter_devoirs— Retrieves a student's homework / cahier de texte (requiresstudentId).consulter_absences— Retrieves a student's absences, lateness, and sanctions (requiresstudentId).consulter_messages— Retrieves messages received in the account's mailbox (no parameters).
Notes on scope: all tools are read-only (no writing, sending, or modification); they run locally over stdio with credentials from ~/.ecoledirecte-mcp/.env; and on live-API failure each tool falls back to the last cached result, flagging it as potentially stale.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ecoledirecte-mcp What's my child's homework due this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
EcoleDirecte MCP
Serveur MCP qui permet à Claude de lire les données d'un compte EcoleDirecte (notes, devoirs, absences, messages) directement en conversation, sans passer par le site.
Un modèle à copier, pas un service
Ce projet n'est pas un service auquel tu te connectes : c'est un programme que chaque famille installe et fait tourner chez elle, avec ses propres identifiants EcoleDirecte. Aucun serveur central, aucune base de données, personne d'autre que toi ne voit jamais ton identifiant ou ton mot de passe : ils restent dans un fichier .env sur ta machine.
Concrètement, ça veut dire :
Pas de compte à créer, pas d'inscription
Pas de responsabilité de stockage de données d'autrui, de RGPD ou de sécurité côté "fournisseur" : il n'y a pas de fournisseur, juste un outil que tu copies
Si tu veux l'adapter, l'améliorer ou le comprendre, le code est fait pour ça (voir "Architecture" plus bas)
C'est un point de départ technique à réutiliser pour ta propre famille, pas un produit à laquelle t'abonner.
Related MCP server: unofficial-magister-mcp
Important : API non officielle
EcoleDirecte n'expose aucune API publique documentée. Ce serveur s'appuie sur l'API interne du site (api.ecoledirecte.com). Conséquences concrètes :
Le format des réponses peut changer sans préavis. Chaque endpoint est validé par un schéma (
zod) : en cas de changement, l'outil renvoie une erreur explicite plutôt que des données silencieusement fausses.En cas d'échec du live, chaque outil retombe automatiquement sur le dernier résultat mis en cache (dossier
.cache/, jamais commité) en signalant qu'il s'agit de données potentiellement périmées.Ce serveur est une couche de confort, pas le seul accès aux données : en cas de panne, se reconnecter manuellement sur ecoledirecte.com reste toujours possible.
Ce qui a été vérifié par capture réseau réelle (2026-09-10)
login.awp: structure des comptes/élèves (data.accounts[].profile.eleves[])notes.awp: moyennes par matière et par période (data.periodes[].ensembleMatieres.disciplines[]), sans note individuelle par évaluation observée cette année (aucune note encore saisie au moment du test)cahierdetexte.awp(liste) +cahierdetexte/{date}.awp(détail, contenu encodé en base64/HTML) pour les devoirsURL et paramètres de
viescolaire.awp(absences/retards) etfamilles/{id}/messages.awp(messages)Version d'API réelle :
4.101.4
Le login exige une poignée de main GTK
login.awp refuse silencieusement des identifiants pourtant valides (Identifiant et/ou mot de passe invalide !) si l'appel ne reproduit pas exactement le protocole attendu :
GET /v3/login.awp?gtk=1&v=<version>renvoie deuxSet-Cookie, dont un nomméGTK=....Le
POSTde login doit inclure le headerX-Gtkavec cette valeur et renvoyer les cookies reçus à l'étape 1 dans un headerCookieclassique — sans ce headerCookie, l'API répondcode: 200côté navigateur mais rejette l'appel côté serveur pour la même requête, avec le même message trompeur qu'un mauvais mot de passe.
ensureLoggedIn() dans src/infrastructure/ecoledirecte-client.ts fait les deux. Si ce comportement disparaît après une évolution de l'API, revérifier ce flow avant de soupçonner les identifiants.
Ce qui reste à vérifier
La forme exacte du corps de réponse de
viescolaire.awpet demessages.awp(URLs confirmées, schémas encore best-effort) : ces deux outils peuvent échouer au premier usage réel, il faudra alors ajustersrc/infrastructure/ecoledirecte-client.ts.La forme des notes individuelles (par évaluation) une fois que des notes seront saisies dans le trimestre en cours.
Stack
Node.js + TypeScript, exécuté en local uniquement (pas de serveur HTTP, pas de déploiement)
@modelcontextprotocol/sdk, transport stdiozodpour la validation des réponses APIvitestpour les tests
Installation rapide
npx ecoledirecte-mcp-initUn assistant en ligne de commande demande l'identifiant et le mot de passe EcoleDirecte et écrit ~/.ecoledirecte-mcp/.env (en dehors du dossier du projet, pour que ça reste stable même installé via npx).
Installation manuelle (développement)
npm install
npm run build
node dist/cli/init.js.env.example documente les deux variables attendues (ECOLEDIRECTE_USERNAME, ECOLEDIRECTE_PASSWORD) si tu préfères écrire ~/.ecoledirecte-mcp/.env à la main. Ce fichier ne doit jamais être commité dans le projet lui-même.
Premier login et double authentification
Au premier login depuis un appareil non reconnu, EcoleDirecte peut demander une question de sécurité. Ce cas est détecté (SecurityChallengeError) et remonté clairement par les outils : dans ce cas, se connecter une fois manuellement sur le site depuis cette machine pour lever le blocage, puis relancer.
Développement
npm run dev # lance le serveur MCP en stdio (tsx)
npm test # tests vitest
npm run build # compilation TypeScript vers dist/Aucun port réseau : ce n'est pas une application web, le serveur communique uniquement via stdin/stdout.
Connexion à Claude Code
claude mcp add ecoledirecte -- npx -y ecoledirecte-mcp(en développement local, avant publication npm : claude mcp add ecoledirecte -- node /chemin/vers/ecoledirecte-mcp/dist/index.js)
Connexion à Claude Desktop
Dans la config Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json) :
{
"mcpServers": {
"ecoledirecte": {
"command": "npx",
"args": ["-y", "ecoledirecte-mcp"]
}
}
}Dans les deux cas, les identifiants sont lus depuis ~/.ecoledirecte-mcp/.env (voir "Installation rapide"), pas besoin de les répéter dans la config.
Outils MCP exposés
Outil | Description |
| Liste les élèves rattachés au compte |
| Notes d'un élève ( |
| Cahier de texte d'un élève ( |
| Absences, retards, sanctions d'un élève ( |
| Messages reçus dans la messagerie du compte |
Architecture
src/domain/: types métier et ports (interfaces), aucune dépendance à l'API EcoleDirectesrc/infrastructure/: adapter HTTP EcoleDirecte + cache fichier, seul endroit qui parle le format brut de l'APIsrc/mcp/: exposition des outils MCP, orchestre fetch live + fallback cache
Cette isolation permet de ne corriger que l'adapter le jour où EcoleDirecte change son API, sans toucher aux outils exposés à Claude.
Licence
MIT, voir LICENSE. Copie, adapte, réutilise pour ta propre famille.
© 2026 Riadh MNASRI
Available Tools
5 toolsconsulter_absencesA
Récupère les absences, retards et sanctions d'un élève.
Inputs: studentId (required).
consulter_devoirsA
Récupère le cahier de texte (devoirs à faire) d'un élève.
Inputs: studentId (required).
consulter_messagesA
Récupère les messages reçus dans la messagerie EcoleDirecte du compte.
Inputs: no named parameters.
consulter_notesB
Récupère les notes d'un élève.
Inputs: studentId (required).
lister_elevesA
Liste les élèves rattachés au compte EcoleDirecte connecté.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool targets a clearly distinct resource: students, grades, homework, absences, and messages. No two tools could plausibly be confused for one another.
All names follow a verb_noun pattern in snake_case, but one tool uses 'lister' while the rest use 'consulter', even though they all perform retrieval. This is a minor inconsistency that does not seriously impair use.
Five tools is well-scoped for a small school-data access server. Each tool covers a meaningful and distinct resource without unnecessary bloat.
The core read-only domain is well covered: students, grades, homework, absences/sanctions, and messages. Missing operations like timetable retrieval or sending messages are likely outside the server's stated read-only scope, so they are minor gaps at most.
Maintenance
Related MCP Connectors
Connect ChatGPT and Claude to your Mac, Windows or Linux with secure MCP remote access.
Your Telegram, WhatsApp, Instagram, mail and calendar in Claude or ChatGPT. Never sends messages.
Free WhatsApp MCP server for ChatGPT and Claude: read and search chats, every send you approve.
Let Claude or ChatGPT search, read and send your WhatsApp messages over MCP. OAuth sign-in.
Related MCP Servers
- AlicenseAqualityBmaintenanceConnect Claude and other MCP clients to your Smartschool account to ask about grades, assignments, messages, and your schedule in plain language.1344 PyPI6MIT
- AlicenseAqualityDmaintenanceAn MCP server for accessing Dutch school schedules from Magister. Enables Claude and other MCP-compatible AI assistants to query school schedules, drop-off times, and pick-up times.412 npm6MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that gives Claude Desktop access to school data from Studie+ (Danish school platform), enabling queries about schedules, homework, assignments, and files directly in chat.MIT
- AlicenseBqualityBmaintenanceEnables Claude to query your KRÉTA student data locally and read-only, including timetables, homework, grades, tests, and absences, using your own credentials via OAuth/PKCE.203Apache 2.0