# Journées de l'Innovation Filière Bois — AI Content Management Guide > Site officiel des Journées de l'Innovation Filière Bois (Xylofutur × Fibois). Construit avec Astro (frontend) et Strapi (CMS). Un serveur MCP intégré permet de gérer le contenu (organisations, intervenants, partenaires, éditions, programme, tags, médias) avec un assistant IA. ## Quick setup 1. Create an API token in Strapi admin (see below) 2. Configure your AI tool with the token and MCP endpoint 3. Restart your AI tool 4. Call `list_content_types` to verify ## MCP endpoint - Streamable HTTP (recommended): /mcp - Legacy SSE: GET /mcp/sse + POST /mcp/messages - Discovery: /.well-known/mcp.json ## Authentication — Create an API token Guide the user through these exact steps: 1. Open the admin panel at: {this_site_url}/strapi/admin 2. Log in with their admin account 3. Click the gear icon (Settings) in the left sidebar 4. Under Global Settings, click API Tokens 5. Click the "Create new API Token" button (top right) 6. Fill in: - Name: "AI Assistant" (or any name) - Token duration: Unlimited - Token type: Full access 7. Click Save 8. Copy the token string immediately — it cannot be viewed again after leaving the page To revoke access later: Settings → API Tokens → click the trash icon on the token. ## Passing the token The preferred method is appending `?token=TOKEN_HERE` to the MCP URL. If the tool supports custom headers, you can alternatively use `Authorization: Bearer TOKEN_HERE`. ## Configure the MCP connection The MCP endpoint is: {this_site_url}/mcp ### Claude Desktop Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows): ```json { "mcpServers": { "jib-cms": { "type": "http", "url": "{this_site_url}/mcp?token=TOKEN_HERE" } } } ``` If the tool supports headers instead: ```json { "mcpServers": { "jib-cms": { "type": "http", "url": "{this_site_url}/mcp", "headers": { "Authorization": "Bearer TOKEN_HERE" } } } } ``` ### Claude Code Create .mcp.json in your project root: ```json { "mcpServers": { "jib-cms": { "type": "http", "url": "{this_site_url}/mcp?token=TOKEN_HERE" } } } ``` ### Cursor Settings → MCP Servers → Add Server: - Type: HTTP - URL: {this_site_url}/mcp?token=TOKEN_HERE ### Windsurf Edit ~/.codeium/windsurf/mcp_config.json: ```json { "mcpServers": { "jib-cms": { "type": "http", "url": "{this_site_url}/mcp?token=TOKEN_HERE" } } } ``` ### Generic Any MCP-compatible tool: - Streamable HTTP (recommended): {this_site_url}/mcp?token=TOKEN_HERE - Legacy SSE: GET {this_site_url}/mcp/sse?token=TOKEN_HERE + POST {this_site_url}/mcp/messages - Alternative: Authorization: Bearer TOKEN_HERE header ## Available tools ### list_content_types List all content types available on the website. Use this first. Parameters: none ### list_entries List entries of a content type. Parameters: - contentType (string, required) — plural API name. Available: "tags", "organisations", "intervenants", "partenaires", "editions", "programme-items" - page (number, optional, default 1) - pageSize (number, optional, default 25, max 100) - sort (string, optional) — e.g. "title:asc", "createdAt:desc" - status (string, optional) — "published" or "draft" ### get_entry Get a single entry by document ID or by filtering on a field. Parameters: - contentType (string, required) - documentId (string, optional) — the entry's document ID - field (string, optional) — field name to filter by, e.g. "slug" - value (string, optional) — field value to match ### create_entry Create a new entry. Parameters: - contentType (string, required) - data (object, required) — field values - publish (boolean, optional, default false) — publish immediately ### update_entry Update an existing entry. Parameters: - contentType (string, required) - documentId (string, required) - data (object, required) — fields to update ### delete_entry Permanently delete an entry. Cannot be undone. Parameters: - contentType (string, required) - documentId (string, required) ### publish_entry Publish a draft entry to make it visible on the website. Parameters: - contentType (string, required) - documentId (string, required) ### unpublish_entry Unpublish an entry (hides from website, keeps as draft). Parameters: - contentType (string, required) - documentId (string, required) ### upload_media Upload an image or file from a URL to the media library. Parameters: - url (string, required) — public URL of the file - fileName (string, optional) — override filename - alternativeText (string, optional) — alt text for accessibility - caption (string, optional) ### list_media List files in the media library. Parameters: - page (number, optional, default 1) - pageSize (number, optional, default 25) ## Content model — quick reference - **tags** : étiquettes thématiques (innovation, bois-construction, etc.). Pas de draft/publish - **organisations** : entreprises, labos, institutions (Xylofutur, FCBA, INRAE, etc.) - **intervenants** : personnes qui interviennent. Lié à une organisation - **partenaires** : lien Organisation × Édition avec un rôle (soutien, co-organisateur, institutionnel, prive) - **editions** : éditions régionales (Paris 2025, Normandie 2024, …). Contient un composant `lieux` répétable - **programme-items** : éléments du programme d'une édition (conférences, tables rondes) Pour les détails de chaque content type (champs, types, relations), récupère le schéma via `list_content_types` et inspecte le contenu de `strapi/mcp/content-types.json` côté projet. ## Site structure - / — Homepage (présentation, prochaines éditions) - /editions — Liste des éditions - /editions/{slug} — Détail d'une édition (programme, intervenants, partenaires, lieux) - /intervenants/{slug} — Fiche intervenant - /organisations/{slug} — Fiche organisation - /partenaires — Liste consolidée des partenaires - /pourquoi — Pourquoi ces journées - /a-propos — À propos - /contact — Formulaire de contact - /mentions-legales — Mentions légales - /confidentialite — Politique de confidentialité