Le site Lycée Professionnel Gourdou Leseurre propose un accès programmatique en lecture à ses pages et actualités : API REST, serveur MCP pour les assistants IA et outils WebMCP dans le navigateur. L'accès aux contenus publiés est libre, sans clé.
Gratuit, sans inscription ni clé API (free, no signup, no API key). L'API est en lecture seule : vous pouvez l'appeler directement, sans bac à sable. Vue machine de l'accueil : /?mode=agent · Markdown : /index.md (ajoutez .md à toute page) · Agent A2A : agent-card.json · Skills : agent-skills/index.json
| Ressource | URL |
|---|---|
| Spécification OpenAPI 3.1 | https://www.lyceegourdouleseurre94.fr/openapi.json |
| Catalogue d'API (RFC 9727) | /.well-known/api-catalog |
| API REST (WordPress) | https://www.lyceegourdouleseurre94.fr/wp-json/ |
| Serveur MCP (Streamable HTTP) | https://www.lyceegourdouleseurre94.fr/mcp |
| Carte du serveur MCP | /.well-known/mcp.json |
| Métadonnées OAuth | /.well-known/oauth-authorization-server |
| Résumé pour LLM | /llms.txt |
Base : https://www.lyceegourdouleseurre94.fr/wp-json. Réponses JSON, pagination via page et per_page (100 maximum), totaux dans les en-têtes X-WP-Total et X-WP-TotalPages. Le paramètre _fields réduit la réponse.
| Requête | Description |
|---|---|
GET /wp/v2/posts | Actualités (filtres search, categories) |
GET /wp/v2/posts/{id} | Une actualité |
GET /wp/v2/pages | Pages (filtre slug) |
GET /wp/v2/pages/{id} | Une page |
GET /wp/v2/categories | Catégories d'actualités |
GET /wp/v2/search?search=… | Recherche dans tout le site |
curl "https://www.lyceegourdouleseurre94.fr/wp-json/wp/v2/posts?per_page=5&_fields=id,date,title,link"
curl "https://www.lyceegourdouleseurre94.fr/wp-json/wp/v2/search?search=portes%20ouvertes"
Endpoint https://www.lyceegourdouleseurre94.fr/mcp, protocole Model Context Protocol, transport Streamable HTTP (POST JSON-RPC, réponses JSON). Dans Claude : Paramètres → Connecteurs → Ajouter un connecteur personnalisé → coller l'URL.
Outils, tous en lecture seule :
search_content : Recherche plein texte dans les pages et actualités du lycée (filières, inscriptions, portes ouvertes, rentrée, fournitures, stages…). Renvoie titres, URL, dates et extraits.get_content : Renvoie le texte complet d’une page ou d’une actualité, à partir de son identifiant ou de son URL sur le site.list_recent_posts : Liste les dernières actualités du blog du lycée, éventuellement filtrées par catégorie, avec la liste des catégories disponibles.list_pages : Liste les pages publiées du site (titre, URL, page parente), éventuellement les seules sous-pages d’une page.get_site_info : Nom, coordonnées, page de contact, liens principaux du menu (Pronote, orientation, infos de rentrée…) et points d’accès machine.curl -X POST "https://www.lyceegourdouleseurre94.fr/mcp" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_content","arguments":{"query":"stage"}}}'
Aucune authentification n'est requise pour les contenus publiés. Les membres de l'équipe peuvent obtenir un jeton en lecture seule, valable pour le MCP et pour l'API REST (GET sur les routes ci-dessus).
https://www.lyceegourdouleseurre94.fr/oauth/authorize (code + PKCE S256 obligatoire, connexion WordPress)https://www.lyceegourdouleseurre94.fr/oauth/token (authorization_code, refresh_token) ; durée 1 h, rafraîchissement 30 jourshttps://www.lyceegourdouleseurre94.fr/oauth/register/.well-known/oauth-protected-resourceScopes :
content:read : Lire les pages et actualités publiées (accordé par défaut, sans jeton).content:read_private : Lire en plus les contenus privés et brouillons (comptes équipe uniquement, lecture seule).Authorization: Bearer <access_token>
Toutes les erreurs sont renvoyées en JSON, jamais en page HTML :
{"code":"rest_post_invalid_id","message":"…","data":{"status":404}}/api, /docs, /oauth, /.well-known et requêtes Accept: application/json : {"error":{"status":404,"code":"not_found","message":"…","hint":"…","documentation":"…"}}{"error":"invalid_grant","error_description":"…"}-32601 méthode inconnue, -32602 outil inconnu, -32700 JSON invalide) ; erreur d'outil dans result.isError.Idempotency-Key : les requêtes POST /mcp et POST /oauth/register acceptent l'en-tête Idempotency-Key (UUID v4 conseillé). Si la même clé est renvoyée avec le même corps dans les 24 h, la réponse enregistrée est rejouée (en-tête Idempotent-Replayed: true) sans refaire l'opération. Avec un corps différent, la réponse est 422 idempotency_key_reused.
curl -X POST "https://www.lyceegourdouleseurre94.fr/oauth/register" -H "Content-Type: application/json" \
-H "Idempotency-Key: 4f1c2b9e-8d0a-4c6e-9f3b-2a7d5e1c0b84" \
-d '{"client_name":"Mon agent","redirect_uris":["http://localhost:8765/callback"]}'
POST https://www.lyceegourdouleseurre94.fr/api/batch avec {"requests":[{"method":"GET","path":"/wp/v2/pages?slug=contact"}]}, jusqu'à 25 requêtes GET par appel.RateLimit, RateLimit-Policy et X-RateLimit-* sur chaque réponse ; au-delà, 429 avec Retry-After.POST https://www.lyceegourdouleseurre94.fr/agent/identity), voir auth.md.https://www.lyceegourdouleseurre94.fr/mcp/docs (outils search_docs, get_doc) · version Markdown : docs.mdLes pages du site enregistrent les mêmes outils pour les agents intégrés au navigateur via document.modelContext.registerTool(), ainsi qu'un outil open_page pour naviguer. Les formulaires de recherche et de contact portent les attributs toolname et tooldescription.
Questions ou problèmes : formulaire de contact.