Serveur MCP (Model Context Protocol) qui expose le programme du DevQuest (Niort) à un client MCP (ChatGPT, Claude Desktop, etc.). Il fournit des outils pour explorer le programme, savoir quelle conf est en cours, consulter les fiches sessions et speakers, et un jeu de widgets visuels (MCP App) pour les réponses.
Runtime : Bun (cible Clever Cloud).
| Outil | Description | Widget |
|---|---|---|
infos_devquest |
Vue d'ensemble : dates, lieu, tagline, ce qui est inclus, tracks, partenaires, FAQ | — |
liste_partenaires |
Liste des sponsors groupée par tier (Légendaire, Épiques, Rares, Communs), filtre optionnel | — |
liste_orga |
Équipe organisatrice (« La Guilde ») : missions, rôles, membres avec liens | — |
fiche_orga |
Fiche d'un membre de l'équipe orga (recherche par id ou nom) | ✅ orga-card |
liste_jours |
Liste les jours de l'événement (numéro, date, nombre de sessions) | — |
programme_du_jour |
Programme complet d'un jour (sessions, pauses, openings) | — |
conf_en_cours |
Sessions en cours + prochaines, par salle | ✅ now-next |
conf_a_telle_heure |
Sessions à une heure donnée d'un jour donné | — |
detail_conference |
Détail d'une session (abstract, tags, salle, speakers) | ✅ conf-card |
fiche_speaker |
Fiche complète d'un speaker (bio, liens, talks) | ✅ speaker-card |
recherche_conference |
Recherche libre dans le programme (titres, abstracts, tags, speakers) | — |
liste_speakers |
Liste de tous les speakers | — |
Les outils marqués widget renvoient une structuredContent accompagnée d'un resourceUri pointant vers une mini-app HTML embarquée (bundle vite single-file).
- Bun ≥ 1.1 (
curl -fsSL https://bun.sh/install | bash)
bun installLe postinstall lance automatiquement bun run build qui bundle les 3 widgets dans dist/client/.
bun run startLe serveur écoute sur http://localhost:3000/mcp.
bun run start:devbun --watchredémarre le serveur à chaque changement dansserver/.- Vite rebuild les 3 widgets en watch.
bun run devLance start:dev puis ouvre le MCP Inspector. Dans l'inspector :
- Choisis le transport Streamable HTTP.
- URL :
http://localhost:3000/mcp. - Clique Connect.
bun run inspectDans les paramètres ChatGPT (section MCP / Apps), ajoute un serveur :
- Nom :
devquest - Transport : Streamable HTTP
- URL :
https://<ton-host-clever>/mcp(ouhttp://localhost:3000/mcpen local)
Ajoute dans la conf MCP du client :
{
"mcpServers": {
"devquest": {
"url": "http://localhost:3000/mcp"
}
}
}| Variable | Défaut | Description |
|---|---|---|
PORT |
3000 |
Port d'écoute |
NODE_ENV |
— | development ⇒ écoute sur 127.0.0.1, sinon 0.0.0.0 |
CORS_ORIGIN |
* |
Origine autorisée |
RATE_LIMIT_WINDOW_MS |
60000 |
Fenêtre du rate limiting |
RATE_LIMIT_MAX |
100 |
Max requêtes/IP par fenêtre |
TRUST_PROXY |
— | Express trust proxy (requis derrière un reverse-proxy, ex. Clever) |
Toutes les données du programme sont figées dans data/program.json (snapshot du site officiel scrapé une fois). Pour rebuild entièrement ce fichier (planning, sessions, abstracts, speakers, bios, liens) à partir du site :
bun run refresh-dataLe script scripts/refresh-data.ts :
- Fetch
/schedule/day-1et/schedule/day-2→ parse la grille horaire (rooms, time slots, sessions, pauses). - Fetch les ~41 fiches
/sessions/<slug>en parallèle → abstract verbatim, format, tags, horaires authoritatives, liens speakers. - Fetch
/,/faqet/guilde→ tagline, headline, venue, ticket includes, partenaires (groupés par tier), FAQ, équipe orga. - Fetch les ~45 fiches
/speaker/<id>en parallèle → nom, photo, bio (markdown), liens sociaux. - Écrit
data/program.json.
Dates de l'événement codées en dur en haut du script (DAYS). À éditer si elles changent.
server/
index.ts # Express + Streamable HTTP transport
server.ts # Déclaration du serveur MCP + outils + widgets
program.ts # Logique métier : chargement, recherche, sessions en cours
client/
shared.ts # Types + helpers DOM communs
shared.css # Style commun
conf-card.{html,ts} # Widget « fiche conférence »
now-next.{html,ts} # Widget « conf en cours / prochaine »
speaker-card.{html,ts} # Widget « fiche speaker »
orga-card.{html,ts} # Widget « fiche membre de l'orga »
data/
program.json # Snapshot complet (J1+J2 + 41 sessions + 45 speakers)
scripts/
refresh-data.ts # Rebuild complet de data/program.json depuis devquest.fr
dist/ # Sortie de build (généré)
- Créer une app Bun (runtime).
- Variables :
PORT(auto-injectée par Clever),TRUST_PROXY=1,NODE_ENV=production. - Le
postinstallse charge du build des widgets. - La commande de lancement est
bun run start(auto-déduite depuispackage.json).
Apache-2.0.