Skip to content

Serli/devquest-mcp-app

Repository files navigation

DevQuest MCP

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).

Outils MCP exposés

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).

Pré-requis

  • Bun ≥ 1.1 (curl -fsSL https://bun.sh/install | bash)

Installation

bun install

Le postinstall lance automatiquement bun run build qui bundle les 3 widgets dans dist/client/.

Lancer en local

Serveur en production

bun run start

Le serveur écoute sur http://localhost:3000/mcp.

Mode dev (hot-reload du serveur ET des widgets)

bun run start:dev
  • bun --watch redémarre le serveur à chaque changement dans server/.
  • Vite rebuild les 3 widgets en watch.

Mode dev + Inspector (tout-en-un)

bun run dev

Lance start:dev puis ouvre le MCP Inspector. Dans l'inspector :

  1. Choisis le transport Streamable HTTP.
  2. URL : http://localhost:3000/mcp.
  3. Clique Connect.

Lancer seulement l'inspector (serveur déjà en route)

bun run inspect

Connecter un client MCP

ChatGPT (MCP App)

Dans les paramètres ChatGPT (section MCP / Apps), ajoute un serveur :

  • Nom : devquest
  • Transport : Streamable HTTP
  • URL : https://<ton-host-clever>/mcp (ou http://localhost:3000/mcp en local)

Claude Desktop / Codex CLI

Ajoute dans la conf MCP du client :

{
  "mcpServers": {
    "devquest": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

Configuration

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)

Données

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-data

Le script scripts/refresh-data.ts :

  1. Fetch /schedule/day-1 et /schedule/day-2 → parse la grille horaire (rooms, time slots, sessions, pauses).
  2. Fetch les ~41 fiches /sessions/<slug> en parallèle → abstract verbatim, format, tags, horaires authoritatives, liens speakers.
  3. Fetch /, /faq et /guilde → tagline, headline, venue, ticket includes, partenaires (groupés par tier), FAQ, équipe orga.
  4. Fetch les ~45 fiches /speaker/<id> en parallèle → nom, photo, bio (markdown), liens sociaux.
  5. Écrit data/program.json.

Dates de l'événement codées en dur en haut du script (DAYS). À éditer si elles changent.

Architecture

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é)

Déploiement Clever Cloud (Bun)

  1. Créer une app Bun (runtime).
  2. Variables : PORT (auto-injectée par Clever), TRUST_PROXY=1, NODE_ENV=production.
  3. Le postinstall se charge du build des widgets.
  4. La commande de lancement est bun run start (auto-déduite depuis package.json).

Licence

Apache-2.0.

About

Serveur MCP qui expose le programme du DevQuest 2026 (Niort, 11–12 juin) à un client MCP : ChatGPT, Claude Desktop, MCP Inspector, etc. Cherche une conf, sait quelle session est en cours, sort une fiche speaker — avec des widgets visuels.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors