ecole-directe-mcp
Click on "Install 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., "@ecole-directe-mcpQuels sont mes devoirs pour demain ?"
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 personnel pour École Directe : notes, devoirs, emploi du temps, vie scolaire, vie de classe, fil d'actualité, téléchargement de documents.
Installation locale (V1 — stdio uniquement)
npm install
npm run build
node dist/cli/index.js loginlogin demande l'identifiant et le mot de passe École Directe, puis, à la
première connexion depuis cette machine, une question de sécurité (QCM) —
c'est obligatoire côté École Directe, il n'y a pas de contournement.
La session est enregistrée dans ~/.config/ecoledirecte-mcp/session.json
(permissions 600) et rafraîchie automatiquement ensuite.
Related MCP server: FAST-NUCES Flex Student Portal MCP Server
Utilisation avec Claude Code
claude mcp add ecoledirecte -- node /chemin/absolu/vers/dist/cli/index.js serveLe serveur démarre même sans session valide : get_auth_status sert
justement à diagnostiquer ce cas, et les autres outils renvoient une erreur
explicite au lieu de faire tomber le serveur.
Outils exposés
Outil | Rôle |
| État de la session (présence, date du dernier rafraîchissement) |
| Notes de l'année scolaire |
| Devoirs entre deux dates |
| Marquer un devoir fait / non fait (écriture) |
| Emploi du temps entre deux dates |
| Vie scolaire (absences, retards, sanctions) |
| Vie de la classe et commentaires |
| Fil d'actualité personnel |
| Liste les messages d'un dossier (en-têtes seulement) |
| Contenu d'un message, HTML retiré, avec ses pièces jointes |
| Télécharge un document dans |
La messagerie est en deux outils parce que l'API l'impose : la liste
renvoie content: "" pour chaque message, les corps n'existent que sur
l'endpoint par message. Les pièces jointes se récupèrent avec
download_document en passant fileType = PIECE_JOINTE.
Variables d'environnement
SESSION_PATH— chemin du fichier de session (défaut~/.config/ecoledirecte-mcp/session.json)DOWNLOAD_DIR— dossier de téléchargement (défaut~/.local/share/ecoledirecte-mcp/downloads)READ_ONLY—truepour désactivermark_homework_done(défautfalseen local)SESSION_MAX_AGE_MS— âge au-delà duquel la session est rafraîchie préventivement (défaut 15 min)
Le deviceUUID généré au premier login est stocké séparément dans
~/.config/ecoledirecte-mcp/device-id. Ne pas le supprimer entre deux
logins, sous peine de redéclencher le QCM à chaque fois.
Authentification : ce qu'il faut savoir
École Directe délivre deux secrets distincts, tous deux dans
session.json :
token— jeton de session court, envoyé en headerX-Tokenà chaque appel de données ; il tourne à chaque login ou re-login ;accessToken— credential long, lié à l'appareil, seule chose capable de régénérer untokensans le mot de passe.
Les confondre fait échouer tous les appels avec 520 "Token invalide !".
C'est pour cette raison que l'authentification (login, QCM, re-login) est
implémentée directement dans src/client/edAuth.ts plutôt que déléguée à
@blockshub/blocksdirecte, dont le module d'auth :
ne lit le jeton que dans le corps de la réponse, alors qu'École Directe le renvoie aussi (parfois uniquement) dans le header
X-Token;ne reconnaît que les codes 250 et 505 au re-login — le
526« Votre session est invalide ou expirée » tombe dans son chemin de succès et produit une session vide qui ressemble à une réussite ;écrit sur stdout, ce qui corrompt le flux JSON-RPC du transport stdio.
Les modules de données de la librairie restent utilisés, avec un correctif
pour une récursion infinie dans leur vérification de module disponible
(patchBrokenModuleAvailabilityCheck). La messagerie, absente de la
librairie, est également en HTTP direct (src/client/messaging.ts).
Limitations connues (V1)
Expiration de session en cours d'utilisation. La session est rafraîchie
préventivement au-delà de SESSION_MAX_AGE_MS, et un appel de données qui
échoue de façon récupérable déclenche un rafraîchissement puis une seule
nouvelle tentative — jamais de boucle. Mais @blockshub/blocksdirecte ne
remonte pas le code d'erreur d'École Directe sur les appels de données :
seule une réponse vide là où la librairie garantit un objet permet de
déduire l'expiration (assertPresent). Pour une écriture comme
mark_homework_done, dont la réponse ne contient rien à inspecter, un outil
peut donc renvoyer une erreur d'authentification au lieu de se rattraper
tout seul — relancer login dans ce cas.
Durée de vie réelle du jeton inconnue. Les 15 minutes par défaut de
SESSION_MAX_AGE_MS sont une valeur prudente, pas une valeur observée. À
calibrer à l'usage (voir « Développement » ci-dessous).
@blockshub/blocksdirecte est épinglé à la version exacte 0.0.9-alpha
(pas de ^) : c'est une version alpha dont on corrige des bugs par
monkey-patch, une montée de version silencieuse casserait ces correctifs.
Statut
V1 : usage local uniquement, transport stdio. Le transport HTTP (hébergement Docker sur le VPS, accessible via Tailscale) est prévu pour une V2 séparée.
La messagerie est en lecture seule : lister et lire. Envoyer, répondre et transférer ne sont pas implémentés — ce sont des écritures visibles par des tiers (professeurs, administration), à n'ajouter que délibérément.
Développement
npm test # tests unitaires — aucun appel réseau réel
npm run typecheck # vérifie aussi test/ et scripts/
npm run build
npm run smoke-test # vérification manuelle contre le vrai comptesmoke-test utilise la session déjà enregistrée par login, n'a besoin
d'aucun identifiant, et n'est jamais lancé en CI. Il appelle chaque outil de
lecture à la suite et continue même si l'un échoue, pour montrer d'un coup
l'état réel de tous les endpoints.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect AI agents to 1000+ apps with managed authentication and tool-calling.
Connect your Moodle to AI assistants: courses, content, grading and reports from the chat.
Verified, pay-per-use API tools for AI agents through one authenticated connection.
- BankSyncOAuthio.banksync
Connect AI agents to bank accounts, transactions, balances, and investments.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Canvas LMS and Gradescope, allowing users to query courses, assignments, modules, calendar events, and find relevant resources using natural language.15ISC
- FlicenseNot gradedqualityDmaintenanceConnects AI assistants to the FAST-NUCES Flex Student Portal, enabling students to query their academic data including attendance, marks, transcript, and fee reports through natural language conversations.5-
- AlicenseAqualityAmaintenanceConnect Claude and other MCP clients to your Smartschool account to ask about grades, assignments, messages, and your schedule in plain language.113MIT
- AlicenseNot gradedqualityAmaintenanceEnables accessing IServ school platform features such as timetable, exercises, messenger, and more via natural language, without exposing credentials to agents.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mathr81/ecole-directe-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server