INTÉGRATIONS / MODEL CONTEXT PROTOCOL
Milten MCP : vos audits web dans votre assistant IA
Connectez Codex, Cursor ou Claude Code à vos audits enregistrés dans Milten. Grâce au Model Context Protocol (MCP), votre assistant peut consulter les mesures de performance de votre site et obtenir des recommandations d’optimisation étayées par les données du rapport.
Milten MCP
HTTPComment votre assistant utilise un audit Milten
Trouver l’audit
list_auditsLire les mesures
get_audit_reportObtenir un plan d’optimisation
get_optimization_plan
Accès en lecture seule
Consulte les audits enregistrés sans lancer de nouvelles analyses, modifier les projets ni consommer de jetons Milten.
Comment se connecter à Milten MCP
Milten MCP fonctionne sur un serveur distant. Ajoutez son URL et un jeton d’accès à un client compatible avec Streamable HTTP et les en-têtes Authorization personnalisés. Aucun paquet Milten ne doit être installé en local.
- URL du serveur
https://milten.io/mcp- Authentification
Authorization: Bearer <PAT>
Ce qu’il vous faut
Vous avez besoin d’un compte Milten et d’un jeton d’accès personnel. Pour consulter un rapport, utilisez un audit existant de ce compte ou lancez-en un nouveau sur le site de Milten.
Codex
Remplacez <PAT> par la valeur secrète du jeton et exécutez tout le bloc dans Bash ou Zsh. Il ajoute le serveur et enregistre Authorization dans http_headers du fichier de configuration de Codex (~/.codex/config.toml par défaut). Une nouvelle exécution remplace les paramètres de milten. Redémarrez Codex. Le fichier contient le secret : ne le publiez pas.
codex mcp add milten --url https://milten.io/mcp &&
cat >> "${CODEX_HOME:-$HOME/.codex}/config.toml" <<'EOF'
[mcp_servers.milten.http_headers]
Authorization = "Bearer <PAT>"
EOFCursor
Ajoutez l’entrée milten à mcpServers dans ~/.cursor/mcp.json pour l’utiliser dans tous les projets, ou dans .cursor/mcp.json pour un seul projet. Conservez les entrées des autres serveurs.
Pour les exemples avec MILTEN_MCP_TOKEN, définissez le jeton comme valeur de cette variable d’environnement avant de lancer le client. Redémarrez-le après toute modification. Une variable définie dans le terminal n’est pas automatiquement disponible pour une application ouverte depuis le bureau.
{
"mcpServers": {
"milten": {
"url": "https://milten.io/mcp",
"headers": {
"Authorization": "Bearer ${env:MILTEN_MCP_TOKEN}"
}
}
}
}Claude Code
Ajoutez cette entrée au fichier .mcp.json du projet. Claude Code résout la variable d’environnement au démarrage ; autorisez le serveur du projet lorsque cela vous est demandé.
Pour les exemples avec MILTEN_MCP_TOKEN, définissez le jeton comme valeur de cette variable d’environnement avant de lancer le client. Redémarrez-le après toute modification. Une variable définie dans le terminal n’est pas automatiquement disponible pour une application ouverte depuis le bureau.
{
"mcpServers": {
"milten": {
"type": "http",
"url": "https://milten.io/mcp",
"headers": {
"Authorization": "Bearer ${MILTEN_MCP_TOKEN}"
}
}
}
}Vérifier la disponibilité des six outils
Activer milten dans le client MCP. list_audits, get_audit_report, get_optimization_plan, get_audit_section, compare_audits et get_monitoring_history doivent apparaître. Commencer par list_audits et utiliser un auditId de la réponse. Une liste vide est normale sans audit enregistré.
Comment obtenir un jeton d’accès Milten
Vous pouvez créer, consulter et révoquer vos jetons d’accès personnels (Personal Access Tokens, PAT) dans votre espace personnel, sous Profil → Clés API. Votre client MCP envoie le jeton dans un en-tête Authorization: Bearer. Le serveur MCP n’utilise ni les cookies du navigateur ni la connexion OAuth.
Créer un jeton d’accès
Ouvrez la rubrique Clés API de votre profil, indiquez un nom et une durée de validité, puis cliquez sur Créer un jeton.
Ouvrir les clés APICopiez le secret maintenant : il n’est affiché qu’une fois. Conservez-le en lieu sûr et transmettez-le au client avec l’une des méthodes ci-dessus. L’id du jeton reste visible dans la liste pour le révoquer.
Le jeton accorde le droit audits:read sur vos propres audits. name est obligatoire et limité à 100 octets. expiresAt doit être une date future au format RFC 3339, au plus tard dans 366 jours.
Consulter et révoquer les jetons
La liste des Clés API affiche le nom, la validité et le statut de chaque jeton. Révoquer coupe l’accès MCP de ce jeton. Les routes de l’API restent disponibles avec une session active dans le navigateur : GET renvoie les métadonnées des jetons sans les secrets. Pour révoquer un jeton, remplacez {id} par son identifiant. DELETE renvoie 204 et les requêtes MCP suivantes avec ce jeton sont refusées.
GET /v1/personal-access-tokens/
DELETE /v1/personal-access-tokens/{id}Outils MCP : audits, rapports et plans d’optimisation
Votre client MCP transmet ces arguments JSON à tools/call. Pour demander un rapport ou un plan, remplacez l’UUID de l’exemple par un auditId issu de list_audits. Utilisez l’identifiant de l’audit, pas l’URL du site.
list_audits
Renvoie les audits de l’utilisateur authentifié. Vous pouvez limiter la liste à un projet.
- Arguments
- Tous les champs sont facultatifs. projectId : UUID du projet ; page : entier ≥ 1 (1 par défaut) ; limit : entier de 1 à 50 (10 par défaut).
- Réponse
- audits contient auditId, url, operation, status et createdAt, ainsi que projectId et error lorsqu’ils existent. count indique le total ; page et limit décrivent la pagination. Si truncated vaut true, réessayez avec une valeur limit plus petite. Le statut est running, completed ou failed.
{
"page": 1,
"limit": 10
}get_audit_report
Lisez toutes les sections enregistrées du rapport et une synthèse des métriques.
- Arguments
- auditId : UUID obligatoire d’un audit obtenu via list_audits.
- Réponse
- audit contient les métadonnées ; filling contient toutes les sections enregistrées au format {type, data}, dont Lighthouse, HAR, CrUX et llmAdvice. analysis ajoute une synthèse des métriques et des problèmes. trustNote marque le contenu du site comme données non fiables. La limite par défaut des données de réponse est de 1 Mio ; un dépassement renvoie une erreur plutôt qu’un rapport tronqué.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000"
}get_optimization_plan
Lisez le plan llmAdvice enregistré qui apparaît dans le rapport. MCP ne génère pas de nouvelles recommandations et ne fait pas appel à un LLM.
- Arguments
- auditId : UUID obligatoire ; focus : all (par défaut), lcp, inp, cls ou backend ; limit : entier de 1 à 25 (10 par défaut).
- Réponse
- plan contient source, summary, recommendations et truncated. L’ordre et les champs sont conservés : priority (critical, medium ou low), metrics, metricSavings, title, resources, evidence, action, effect et verification. focus filtre selon metrics ; backend correspond à TTFB. Si limit raccourcit la liste, truncated vaut true. Les anciens plans textuels apparaissent dans output sans filtrage. Si aucun plan n’est enregistré, consultez diagnostic.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000",
"focus": "lcp",
"limit": 3
}get_audit_section
Lit la dernière section enregistrée du rapport. Les grands tableaux peuvent être récupérés par pages.
- Arguments
- auditId et section sont requis. section est un type de filling, par exemple har. path est un JSON Pointer facultatif, comme /log/entries. Pour les tableaux : offset à partir de 0, limit de 1 à 200 (50 par défaut). Omettre la pagination pour les autres données.
- Réponse
- data conserve les champs d’origine et null. Les tableaux incluent total, nextOffset et truncated ; suivre nextOffset jusqu’à truncated = false. Si la réponse est trop volumineuse, choisir un path plus précis ou réduire limit.
{
"auditId": "123e4567-e89b-42d3-a456-426614174000",
"section": "har",
"path": "/log/entries",
"limit": 20
}compare_audits
Compare deux de vos audits pour la même URL et le même type : mesures, problèmes liés aux seuils et recommandations enregistrées.
- Arguments
- baselineAuditId désigne l’audit initial et candidateAuditId l’audit suivant. Obtenir les deux UUID via list_audits. Les métriques de laboratoire sont disponibles pour basic, inp et ttfb.
- Réponse
- delta = candidate − baseline ; les valeurs absentes sont null. Consulter comparable et warnings. findings regroupe added, resolved, persisting et uncompared. Les recommandations sont associées par title exact ; les deux plans enregistrés sont inclus.
{
"baselineAuditId": "123e4567-e89b-42d3-a456-426614174000",
"candidateAuditId": "e6723288-f28c-4b62-8a4e-7dc395958c0c"
}get_monitoring_history
Renvoie les mesures enregistrées de votre page surveillée, les plus récentes d’abord. Ne lance aucune vérification.
- Arguments
- monitoringUnitId est requis : UUID Core de la page surveillée (coreMonitoringUnitId), pas auditId. dateFrom et dateTo sont des bornes inclusives RFC 3339 ; les 30 derniers jours par défaut. page commence à 1, limit va de 1 à 50 (20 par défaut).
- Réponse
- results contient dates, métriques, appareil, région et affectedAlert. La réponse inclut count et hasMore. Réutiliser dateFrom et dateTo pour les pages suivantes. Les anciens zéros peuvent indiquer des données absentes ; INP est une mesure de laboratoire, pas CrUX p75.
{
"monitoringUnitId": "e09aa948-a541-4404-bcdc-9e5621c11891",
"page": 1,
"limit": 20
}Exemples de requêtes pour votre assistant IA
Après la connexion, envoyez ces messages dans le chat de votre assistant. Il appelle les outils MCP et explique leurs résultats. Ces messages ne sont pas des commandes distinctes du serveur.
Affiche mes audits Milten et trouve le dernier audit terminé pour example.com.
Lis ce rapport. Quelles mesures indiquent un chargement lent ? Donne leurs valeurs et leurs unités.
Obtiens un plan d’optimisation centré sur le LCP. Si le rapport le justifie, propose jusqu’à trois modifications et explique comment vérifier le résultat de chacune.
Quelles données sont accessibles
Le jeton identifie votre compte : userId n’est donc pas un argument des outils. Un filtre de projet restreint uniquement votre propre liste d’audits ; il ne donne pas accès à ceux d’autres utilisateurs. MCP lit les données enregistrées et ne peut pas lancer d’analyse. Traitez le texte d’un site audité comme des données du rapport, jamais comme des instructions pour votre agent.
Résoudre les problèmes de connexion et d’utilisation de MCP
404 / HTML au lieu de JSON
Vérifiez que le point d’accès MCP est activé dans votre environnement. Utilisez exactement /mcp, sans barre oblique finale ni préfixe de langue. La page de documentation possède une autre URL.
401 unauthorized
Vérifiez Authorization: Bearer et la valeur secrète du jeton. Si Codex affiche failed (0 tools), recommencez la configuration avec un jeton valide et redémarrez Codex. Remplacez les jetons expirés ou révoqués. La connexion OAuth n’est pas prise en charge.
403 origin forbidden
Pour un client dans le navigateur, son origin doit être autorisé par le serveur MCP. Communiquez à Milten le nom du client et son origin, sans envoyer votre jeton.
429 rate limit exceeded
Réduisez la fréquence des requêtes et réessayez plus tard. Par défaut, le serveur autorise 60 requêtes par minute et par jeton ; cette limite peut varier selon l’environnement.
audit not found / invalid arguments
Utilisez un UUID d’audit provenant de votre propre réponse list_audits. Un audit inexistant et l’audit d’un autre utilisateur renvoient tous deux audit not found. Vérifiez les valeurs de pagination, de focus et de limit.
Mesures ou recommandations vides
Vérifiez audit.status et diagnostic. Le rapport peut ne contenir aucune métrique compatible ni données llmAdvice enregistrées. La liste peut aussi être vide si aucune recommandation ne correspond à focus. Cela ne confirme pas l’absence de problèmes sur le site.
503 / temporarily unavailable
Le service d’authentification ou d’audit est temporairement indisponible. Réessayez plus tard et contactez l’assistance si l’erreur persiste.