Référence de configuration
Cette page documente les variables d'environnement que le serveur axe MCP lit, ainsi que les instructions personnalisées recommandées pour votre agent IA. Celles-ci s'appliquent à la fois aux distributions Docker et npm. Pour savoir où placer ces valeurs, consultez votre guide de configuration client.
Options de configuration
Le serveur axe MCP prend en charge plusieurs variables d'environnement pour la personnalisation :
| Var env | Description | Défaut |
|---|---|---|
AXE_API_KEY |
Clé API pour l'authentification (voir Clé API). Mutuellement exclusive avec AXE_ACCESS_TOKEN. |
|
AXE_ACCESS_TOKEN |
Jeton Bearer OAuth 2.0 pour l'authentification (voir OAuth 2.0). Mutuellement exclusif avec AXE_API_KEY. |
|
AXE_SERVER_URL |
L'URL de base du portail de compte axe de votre organisation. Nécessaire uniquement si votre organisation n'utilise pas l'instance SaaS partagée aux États-Unis par défaut. Voir ci-dessous pour plus de détails. | "https://axe.deque.com" |
AXE_CHROME_PATH |
Chemin vers un binaire Chrome/Chromium à utiliser au lieu de l'installation gérée par Playwright. distribution npm uniquement. Voir ci-dessous pour les exigences. | |
AXE_ADVANCED_RULES |
Règles avancées préréglé appliqué à chaque analyse exécutée par ce serveur. L'un de "precise", "balanced", "thorough", "disabled", ou sous forme de pourcentage équivalent. Voir ci-dessous. |
Configuration par défaut d'axe de votre organisation |
AXE_SCREENSHOT_DIR |
Répertoire dans lequel l'outil analyze écrit les captures d'écran lorsque screenshot.save est utilisé sans chemin saveTo explicite. Voir ci-dessous. |
Répertoire temporaire de votre système d'exploitation |
AXE_TOKEN_REFRESH_PORT |
Port loopback sur lequel le serveur écoute pour accepter un jeton d'accès OAuth actualisé, afin qu'une session longue survive à l'expiration du jeton sans redémarrage. Voir Variables de rafraîchissement du jeton. | |
AXE_TOKEN_REFRESH_SECRET |
Secret partagé qui authentifie une poussée de jeton. Voir Variables de rafraîchissement du jeton. | |
AXE_TOKEN_REFRESH_HOST |
Interface réseau à laquelle l'écouteur de rafraîchissement de jeton est lié. Voir Variables de rafraîchissement du jeton. | "127.0.0.1" |
BROWSER_TIMEOUT_MS |
Le nombre de millisecondes que nous autorisons pour que les interactions avec le navigateur attendent avant un délai d'expiration | 30000 |
LOG_LEVEL |
Suit Protocole Syslog ; les valeurs prises en charge sont "debug", "info", "warn" et "error" |
"info" |
AXE_SERVER_URL
La valeur par défaut (https://axe.deque.com) est correcte pour la plupart des utilisateurs — ceux sur l'instance SaaS partagée des États-Unis de Deque. Si votre organisation utilise l'un des éléments suivants, vous devez définir AXE_SERVER_URL sur l'URL de base de votre instance :
- Un instance SaaS régionale (UE, Australie, Francfort, etc.)
- Un déploiement cloud privé
- Une installation installation sur site
Si vous ne savez pas quelle instance votre organisation utilise, vérifiez l'URL que vous utilisez pour vous connecter au portail de compte axe, ou demandez à votre administrateur.
Définissez AXE_SERVER_URL explicitement dans le bloc env de la configuration de votre serveur MCP. Les guides d'installation client incluent des exemples montrant exactement où l'ajouter.
AXE_CHROME_PATH
distribution npm uniquement. Cela n'est pas pris en charge dans Docker, qui utilise toujours son navigateur intégré — le serveur ne démarre pas si AXE_CHROME_PATH est défini sous la distribution Docker.
Par défaut, la distribution npm utilise la build de Chromium que vous installez via Playwright. Définissez AXE_CHROME_PATH sur le chemin complet d'un binaire Chrome/Chromium existant pour l'utiliser à la place et éviter l'installation de Playwright.
- La valeur doit être un fichier binaire exécutable, et non un package ou un répertoire
.app. Sur macOS, par exemple, pointez vers le binaire à l'intérieur du package :/Applications/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing. - Le binaire doit se lancer et répondre à
--version. Le serveur valide cela au démarrage et échoue rapidement avecUnable to find specified chrome instances'il ne peut pas. - Google Chrome stable 137 et ultérieur n'est pas pris en charge. Utilisez Chrome pour les tests ou un autre binaire compatible avec Chromium.
Les outils analyze et igt acceptent également un argument chromePath par appel, qui prend le pas sur AXE_CHROME_PATH pour cet appel.
AXE_ADVANCED_RULES
Définit le préréglage de confiance Règles avancées pour chaque analyse exécutée par ce serveur, en remplaçant la configuration par défaut d'axe de votre organisation — à condition que votre administrateur autorise les utilisateurs à modifier le paramètre.
Les valeurs acceptées sont "precise" (ou "90%"), "balanced" (ou "70%"), "thorough" (ou "50%"), et "disabled". Les valeurs ne sont pas sensibles à la casse.
{
"env": {
"AXE_ADVANCED_RULES": "thorough"
}
}Une valeur non reconnue échoue au démarrage du serveur au lieu de revenir silencieusement à une valeur par défaut :
Invalid Advanced Rules value: "high". Expected one of: 'precise' (90%), 'balanced' (70%), 'thorough' (50%), 'disabled'.L'outil analyze accepte également un argument advancedRules par appel, qui prend la priorité sur AXE_ADVANCED_RULES pour cet appel. Si votre administrateur a verrouillé le paramètre, les deux sont ignorés au profit du préréglage de l'organisation. Voir Règles avancées pour les règles complètes de priorité et le bloc de réponse advancedRules.
AXE_SCREENSHOT_DIR
Définit le répertoire dans lequel l'outil analyze écrit les captures d'écran lorsqu'un appel passe screenshot.save sans chemin explicite. Cela n'a aucun effet sur les appels qui définissent screenshot.saveTo, qui l'emporte toujours, ni sur les appels qui ne sauvegardent pas du tout.
{
"env": {
"AXE_SCREENSHOT_DIR": "/Users/me/axe-screenshots"
}
}Les chemins relatifs sont résolus par rapport au répertoire de travail du serveur. La valeur par défaut est le répertoire temporaire de votre système d'exploitation.
Dans la distribution Docker, ce chemin se trouve à l'intérieur du conteneur. Monter un volume dessus pour que les fichiers atteignent votre hôte — le serveur ne détecte pas si un montage existe, donc sans un les captures d'écran sont éliminées avec le conteneur.
Variables de rafraîchissement du jeton
Cela s'applique uniquement à OAuth 2.0, et permet à un serveur en cours d'exécution d'accepter un jeton d'accès fraîchement rafraîchi pour qu'une session qui survit à son jeton n'ait pas besoin de redémarrage. L'écouteur est désactivé par défaut et ne démarre que lorsque les deux AXE_TOKEN_REFRESH_PORT et AXE_TOKEN_REFRESH_SECRET sont définis.
Vous ne configurez pas normalement ceux-ci manuellement. @deque/axe-auth run supervise le serveur et les fournit pour vous — vous choisissez un port, et il génère le secret.
| Var env | Description | Défaut |
|---|---|---|
AXE_TOKEN_REFRESH_PORT |
Port sur lequel l'écouteur de rafraîchissement de jeton accepte les poussées. Nécessaire pour activer l'écouteur. | |
AXE_TOKEN_REFRESH_SECRET |
Secret partagé authentifiant chaque poussée. Nécessaire pour activer l'écouteur ; axe-auth run en génère un à moins que vous fixiez une valeur. |
|
AXE_TOKEN_REFRESH_HOST |
Interface à laquelle l'écouteur est lié. Défini sur 0.0.0.0 sous Docker, où un port publié est transféré vers l'interface du conteneur, pas son loopback. |
"127.0.0.1" |
Votre jeton de rafraîchissement n'est jamais envoyé au serveur — seuls les jetons d'accès de courte durée passent, et le secret partagé est ce qui protège le point de terminaison. Voir Maintenir une longue session active pour des configurations Docker et npm complètes.
Configurer votre agent IA (Recommandé)
Pour garantir que votre agent de codage IA utilise correctement les outils de serveur MCP d'axe et respecte les meilleures pratiques en matière d'accessibilité, vous pouvez lui fournir des instructions personnalisées. Ces instructions aident l'agent à comprendre le flux de travail approprié pour analyser et rectifier les problèmes d'accessibilité.
Où ajouter des instructions
La méthode varie selon le client :
- VS Code avec GitHub Copilot - Ajoutez à
.github/copilot-instructions.mdà la racine de votre projet - Cursor - Ajoutez aux "Règles de curseur" dans les paramètres
- Claude Code - Ajoutez à un fichier
CLAUDE.mdà la racine de votre projet - Claude Desktop - Ajoutez aux instructions personnalisées dans les paramètres
- Autres clients MCP - Consultez la documentation de votre client pour la configuration des instructions personnalisées
Dans Claude Code, le axe Plugin d'accessibilité peut écrire ces fichiers pour vous — /axe-accessibility:mcp-generate-instructions génère et fusionne le flux de travail dans CLAUDE.md, .github/copilot-instructions.md, règles de curseur, ou AGENTS.md.
Exemple d'instructions de flux de travail
Ci-dessous un modèle recommandé que vous pouvez adapter pour votre agent :
# Accessibility Testing and Remediation Workflow
## MANDATORY WORKFLOW - DO NOT DEVIATE
When working with accessibility issues, you MUST follow this exact workflow:
### 1. Analysis Phase
When asked to analyze pages for accessibility issues, you MUST:
- Use the `analyze` tool to scan the page
- Do NOT manually identify accessibility issues
- Always provide the complete URL being analyzed
### 2. Authentication & Pre-Scan Setup
When the user's request involves credentials, form input, dismissing
overlays, or waiting for content before the scan, you MUST:
- Pass an ordered `before` array to the `analyze` tool using the
`click`, `fill`, and `waitFor` actions
- Resolve any references to env vars, `.env*` files, or local
configuration into literal strings BEFORE calling the tool — the
server treats `value` as a literal and will not expand `${VAR}`,
`$VAR`, or `{{VAR}}` syntax
- Use `fill` for secret values so the server's redaction protections
apply; never embed secrets in a `selector`, which appears in logs
and error messages
- ASK the user when the source of a credential or value is ambiguous;
do NOT guess or fabricate values
- Use ONLY selectors the user provided; if a step needs a selector
the user did not name, ASK rather than guess
- Use `waitFor` after any `click`/`fill` that triggers async UI
(route changes, late-rendered content) to deterministically gate
the next step or the scan — pick a selector that exists ONLY in
the post-interaction state (e.g., a logout button or dashboard
heading), never a generic one like `body` or `#app` that already
exists beforehand
### 3. Remediation Phase
When asked to remediate or fix accessibility issues, you MUST:
- Collect ALL violations from the analysis and pass them to the
`remediate` tool in a SINGLE batched call — do NOT call `remediate`
once per issue
- Give each issue a unique `id` so each result can be correlated
back to its input
- Provide the exact HTML element, rule ID, and issue description for
every issue in the batch
- Review the remediation guidance before making any code changes
- Apply fixes based on the remediate tool's recommendations
- Do NOT manually fix accessibility issues without first using the remediate tool
### 4. Verification Phase
After applying fixes, you MUST:
- Re-run `analyze` to verify all issues are resolved
- Confirm zero violations before considering the task complete
## Required Workflow Example:
1. analyze → Find violations
2. remediate → Pass ALL violations in one batched call to get fix guidance
3. Apply recommended fixes to code
4. analyze → Verify fixes
## Enforcement
- NEVER skip the remediate tool when fixing accessibility issues
- ALWAYS use both analyze and remediate tools as specified
- This workflow ensures proper accessibility best practices and compliancePourquoi c'est important
Ces instructions garantissent que votre agent :
- Utilise l'expertise de Deque - Exploite des modèles d'IA formés sur des décennies de données d'évaluation de l'accessibilité plutôt que sur des connaissances générales de LLM
- Suit les meilleures pratiques - Applique des correctifs conformes à la WCAG de manière cohérente plutôt que des solutions génériques
- Vérifie les changements - Confirme toujours que les correctifs ont effectivement résolu les problèmes
- Évite une confiance excessive - Ne suppose pas qu'il sait comment résoudre les problèmes d'accessibilité sans guidance experte
Bien que facultatives, ces instructions améliorent significativement la qualité et la fiabilité des corrections d'accessibilité dans votre base de code.
