Aller au contenu

Recipes

Recipes (apps/recipes/) est un explorateur interactif pour les recettes WebMCP (UI) et MCP (serveur). Les recettes sont des templates qui guident l’agent IA pour generer le bon ensemble de widgets selon le contexte (donnees meteo = graphiques + KPI, donnees parlementaires = fiche depute + hemicycle, etc.). L’app permet de parcourir, inspecter et tester chaque recette avec des donnees reelles.

Quand vous ouvrez Recipes, vous decouvrez une interface professionnelle en 3 colonnes sur desktop, avec un layout adaptatif tablette/mobile.

Barre d’outils (haut) : titre “Auto-UI recipes” a gauche. A droite : un bouton “MCP” pour ouvrir le panneau de connexion aux serveurs, une checkbox Nano-RAG, un selecteur LLM, un indicateur MCP, le compteur de recettes (“X local + Y mcp”), un lien GitHub, et un toggle de theme.

Colonne gauche (redimensionnable, ~220px par defaut) : le composant RecipeList affiche le catalogue des recettes. En haut, les recettes WebMCP locales (built-in). En bas, les recettes MCP chargees depuis les serveurs connectes. Chaque recette est un item cliquable avec son nom.

Colonne centrale (redimensionnable, ~350px) : le composant RecipeDetail affiche le detail de la recette selectionnee — nom, description, composants attendus, conditions d’activation (“when”), corps markdown, et un bouton “Tester” pour lancer l’agent.

Colonne droite (extensible) : le composant RecipePreview combine un chat input en bas et une zone de preview en haut. Les widgets generes par l’agent s’affichent ici, avec le texte de sortie et les erreurs eventuelles. Le chat permet de poser des questions libres (avec un placeholder contextuel qui change selon la recette selectionnee) ou de tester la recette selectionnee.

Barre de resize : entre chaque colonne, une barre verticale draggable permet de redimensionner les colonnes.

Console agent (bas) : un tiroir redimensionnable (drag vertical) affiche les logs structures de l’agent via AgentConsole : iterations, requetes LLM, reponses (tokens + latence), appels d’outils avec arguments et resultats, metriques finales.

Panneau MCP (pliable) : quand le bouton “MCP” est active, un panneau horizontal s’affiche sous la barre d’outils avec RemoteMCPserversDemo pour connecter/deconnecter les serveurs de demo.

Mobile : sur ecran < 768px, les 3 colonnes sont remplacees par des onglets (Recettes, Detail, Preview). La console est reduite a 120px.

graph TD
subgraph Frontend
Page["+page.svelte<br/>3 colonnes + console"]
RecipeList["RecipeList.svelte<br/>Catalogue filtrable"]
RecipeDetail["RecipeDetail.svelte<br/>Inspection recette"]
RecipePreview["RecipePreview.svelte<br/>Preview + chat"]
end
subgraph Packages
Agent["@webmcp-auto-ui/agent<br/>WEBMCP_RECIPES,<br/>recipeRegistry,<br/>runAgentLoop, providers,<br/>TokenTracker, ContextRAG"]
Core["@webmcp-auto-ui/core<br/>McpMultiClient"]
SDK["@webmcp-auto-ui/sdk<br/>MCP_DEMO_SERVERS,<br/>canvas store"]
UI["@webmcp-auto-ui/ui<br/>McpStatus, LLMSelector,<br/>ModelLoader,<br/>RemoteMCPserversDemo,<br/>AgentConsole, THEME_MAP"]
end
subgraph Backend
Proxy["api/chat/+server.ts<br/>LLM Proxy"]
end
Page --> RecipeList & RecipeDetail & RecipePreview
Page --> Agent & Core & SDK & UI
Agent --> Proxy
ComposantDetail
FrameworkSvelteKit + Svelte 5
StylesTailwindCSS 3.4 + CSS custom (3-column layout)
Iconeslucide-svelte
LLM providersRemoteLLMProvider, WasmProvider
MCPMcpMultiClient
RecettesWEBMCP_RECIPES, recipeRegistry
RAGContextRAG (experimental)
Adapter@sveltejs/adapter-node

Packages utilises :

  • @webmcp-auto-ui/agent : WEBMCP_RECIPES, recipeRegistry, runAgentLoop, RemoteLLMProvider, WasmProvider, buildSystemPrompt, fromMcpTools, trimConversationHistory, TokenTracker, autoui, buildDiscoveryCache, ContextRAG
  • @webmcp-auto-ui/core : McpMultiClient
  • @webmcp-auto-ui/sdk : MCP_DEMO_SERVERS, canvas
  • @webmcp-auto-ui/ui : McpStatus, LLMSelector, ModelLoader, RemoteMCPserversDemo, AgentConsole, THEME_MAP
EnvironnementPortCommande
Dev3009npm -w apps/recipes run dev
Production3009node index.js (via systemd)
Fenêtre de terminal
npm -w apps/recipes run dev
# Accessible sur http://localhost:3009

Les recettes sont chargees depuis deux sources :

  • Locales : WEBMCP_RECIPES du package agent (built-in, toujours disponibles)
  • MCP : chargees dynamiquement depuis les serveurs connectes qui exposent un outil list_recipes

Le composant RecipeList affiche les deux listes separees avec selection par clic.

Le composant RecipeDetail affiche pour chaque recette :

  • Nom et description
  • Composants attendus (types de widgets)
  • Conditions d’activation (“when” — quand l’agent doit utiliser cette recette)
  • Corps markdown (instructions detaillees)
  • Bouton “Tester” pour lancer l’agent

Le chat input adapte son placeholder en fonction de la recette selectionnee. Par exemple :

  • Recette “biodiversite” : “Quels oiseaux observe-t-on a Paris ?”
  • Recette “profil parlementaire” : “Montre-moi les derniers scrutins publics”
  • Recette “meteo” : “Quel temps fait-il a Lyon demain ?”

Le prefill est derive reactivement via PLACEHOLDER_ID_MAP et PLACEHOLDER_MAP.

Les barres de resize entre les colonnes utilisent l’API PointerEvent (capture + move + up). Les largeurs minimales sont protegees (150px min).

Le tiroir de console en bas utilise le meme pattern de resize vertical. Hauteur min 80px, max 50% de la fenetre.

RecetteComposantsQuand
Tableau de bord KPIstat-card, chart, table, kvMetriques numeriques
Oeuvres d’artgallery, cards, carouselCollection d’images
Actualitescards, table, stat-cardArticles
Biodiversitemap, stat-card, tableDonnees geographiques
Dossiers legislatifstimeline, kv, tableParcours legislatif
Profil parlementaireprofile, hemicycle, timelineFiche depute
Textes juridiqueslist, kv, codeTextes de loi

Meme support que Flex et Multi-Svelte : chargement in-browser avec progression.

Le chat supporte la conversation continue. Les messages precedents sont conserves dans conversationHistory et tronques si necessaire via trimConversationHistory. Un bouton “Clear” reinitialise la conversation et les previews.

VariableDescriptionDefaut
LLM_API_KEYCle API du provider LLM distant (.env)requis

Fichier principal (~850 lignes). Gere :

  • L’etat de selection des recettes (locale vs MCP)
  • La connexion multi-MCP avec chargement automatique des recettes
  • Les providers LLM (distant + Gemma) avec smart defaults
  • Les layers (MCP + autoui) et le prompt systeme
  • La boucle agent avec callbacks detailles (logs, widgets, texte, outils)
  • Le layout 3 colonnes avec resize
  • La console agent redimensionnable
  • Le theme via THEME_MAP

Composant de liste avec deux sections (local + MCP). Gere la selection et le callback onselect(id, source).

Composant de detail avec affichage du frontmatter, du corps markdown, et du bouton “Tester”.

Composant de preview avec chat input en bas, widgets rendus via WidgetRenderer en haut, et indicateur AgentProgress.

Les recettes sont definies dans le package agent. Pour en ajouter, modifier le fichier de recettes dans packages/agent/src/recipes/.

Le layout 3 colonnes est defini en CSS dans <style> du +page.svelte. Les breakpoints sont :

  • Desktop (> 1024px) : 3 colonnes
  • Tablette (768-1024px) : 2 colonnes (liste + detail)
  • Mobile (< 768px) : onglets
Chemin sur le serveur/opt/webmcp-demos/recipes/ (racine)
Service systemdwebmcp-recipes
ExecStartnode index.js
Fenêtre de terminal
./scripts/deploy.sh recipes