Serveur MCP (Model Context Protocol) qui expose le programme d'IA-NA 2026 — la 3ème édition de la conférence IA en Nouvelle-Aquitaine (La Rochelle, 3 juin 2026, Centre de Congrès Georges Pernoud) — à un client MCP (ChatGPT, Claude Desktop, etc.). Il fournit des outils pour explorer le programme, savoir quelle session est en cours, consulter les fiches sessions et intervenants, lister les sponsors et partenaires, le tout avec un jeu de widgets visuels (MCP App).
Runtime : Bun (cible Clever Cloud).
| Outil | Description | Widget |
|---|---|---|
infos_iana |
Vue d'ensemble : date, lieu, thématique « ADOPTE TON IA », tagline, objectifs, billetterie, organisateurs, compteurs | — |
programme |
Programme complet du 3 juin 2026 (sessions, pauses, ouvertures), par salle | — |
conf_en_cours |
Sessions en cours + prochaines, par salle | ✅ now-next |
conf_a_telle_heure |
Sessions à une heure donnée | — |
detail_conference |
Détail d'une session (format, salle, partenaire, intervenants) | ✅ conf-card |
fiche_speaker |
Fiche d'un intervenant et ses sessions | ✅ speaker-card |
recherche_conference |
Recherche libre (titres, format, salle, partenaire, intervenants) | — |
liste_speakers |
Liste de tous les intervenants | — |
liste_sponsors |
Sponsors groupés par tier (Platine, Or, Argent, Bronze) | — |
liste_partenaires |
Organisateurs + partenaires institutionnels / écosystème | — |
Les outils marqués widget renvoient un structuredContent accompagné 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 start # serveur prod sur http://localhost:3000/mcp
bun run start:dev # hot-reload serveur + widgets
bun run dev # start:dev + MCP Inspector
bun run inspect # Inspector seul (serveur déjà lancé)Dans l'Inspector : transport Streamable HTTP, URL http://localhost:3000/mcp, Connect.
Paramètres → MCP / Apps → Ajouter un serveur. Transport Streamable HTTP, URL https://<host>/mcp (ou http://localhost:3000/mcp en local).
{
"mcpServers": {
"iana": {
"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 sont figées dans data/program.json (snapshot du site officiel scrapé une fois). Pour le rebuild entièrement depuis le site :
bun run refresh-dataLe script scripts/refresh-data.ts :
- Fetch
https://ia-na.fr/(page statique unique). - Parse le tableau du programme : créneaux horaires, badges → types (Ouverture, Plénière/keynote, Table ronde, Atelier, Conférence, Flash, Session spéciale, Pause), salles (« Session 1 » à « Session 7 »), titres, partenaire associé, et intervenants en texte libre (heuristique tolérante, voir
parseSpeakerText). - Parse la section « Organisé par / Nos sponsors / Nos partenaires », les objectifs, la thématique, les infos pratiques (lieu, billetterie, contact, carte) et l'édition précédente (2025).
- Écrit
data/program.json.
Date de l'événement codée en dur en haut du script (DAY). À éditer si elle change.
server/
index.ts # Express + Streamable HTTP transport + landing page
server.ts # Déclaration du serveur MCP + outils + widgets
program.ts # Types + logique métier (chargement, recherche, sessions en cours)
client/
shared.ts # Types + helpers DOM communs
shared.css # Design system (thème bleu/magenta IA-NA)
conf-card.{html,ts} # Widget « fiche session »
now-next.{html,ts} # Widget « sessions en cours / à suivre »
speaker-card.{html,ts} # Widget « fiche intervenant »
data/
program.json # Snapshot complet (1 journée, 22 sessions, 25 intervenants)
scripts/
refresh-data.ts # Rebuild complet de data/program.json depuis ia-na.fr
dist/ # Sortie de build (généré)
- Créer une app Bun.
- Variables :
PORT(auto-injectée),TRUST_PROXY=1,NODE_ENV=production. - Le
postinstallbuild les widgets ; la commande de lancement (bun run start) est auto-déduite.