**axe MCP Server**
Panoramica
Il Server axe MCP è un server Model Context Protocol (MCP) che integra il testing di accessibilità di livello enterprise direttamente nel tuo flusso di lavoro di sviluppo. Basato sulla consolidata piattaforma axe, consente agli sviluppatori di eseguire scansioni di accessibilità complete e ricevere guide di correzione esperta senza lasciare il loro IDE.
Il server fornisce tre funzionalità - analyze, remediate e igt. analyze esegue anche Test Guidati Intelligenti Automatizzati contro la pagina che scansiona, il che sostituisce l'ormai obsoleto strumento standalone igt.
Questi strumenti si integrano perfettamente con i client compatibili MCP (come Claude Desktop, VS Code con Copilot, o Cursor) e rispettano le impostazioni di configurazione axe della vostra organizzazione.
Accesso
Axe MCP Server è incluso nel pacchetto bundle Axe DevTools per Web. Una sottoscrizione che abilita l'accesso all'axe MCP Server viene attivata contattando un rappresentante commerciale di Deque.
Strumenti e Capacità
Lo Strumento analyze
Lo strumento analyze esegue un'analisi completa dell'accessibilità sulle pagine web effettuando una scansione tramite l'estensione axe DevTools Browser in un ambiente browser reale. Funziona senza problemi sia con gli URL di sviluppo locale (ad es. localhost:3000) che con URL di produzione remota.
Cosa Fa
- Autenticazione - Valida le credenziali dell'utente (ovvero una chiave API o un token di accesso OAuth 2.0) per garantire un accesso autorizzato
- Recupero Configurazione - Recupera le impostazioni specifiche dell'organizzazione dell'utente Configurazione axe, inclusi:
- Standard di Testing dell'Accessibilità (es. WCAG 2.2 AA)
- Versione axe-core
- Necessità di revisione / buone pratiche
- Preset Regole Avanzate
- Analisi Basata su Browser - Avvia un'istanza del browser in background con l'estensione axe DevTools montata
- Navigazione della Pagina - Naviga all'URL fornito dall'utente nel loro prompt all'agente AI
- Scansione di Accessibilità - Esegue un'analisi completa dell'accessibilità sulla pagina pagina visualizzata utilizzando l'estensione axe DevTools Browser, garantendo che l'esperienza utente effettiva venga testata (non solo l'HTML statico)
- Consegna dei Risultati - Restituisce i risultati dell'analisi completi all'agente in un formato strutturato
Test reattivo
Lo strumento analyze supporta parametri opzionali viewportWidth e viewportHeight, consentendo di testare le pagine a dimensioni specifiche del viewport. Questo è utile per rilevare problemi di accessibilità che compaiono solo a determinate dimensioni dello schermo, come i punti di interruzione per dispositivi mobili o tablet.
Analyze http://localhost:3000 for accessibility issues at a mobile viewport of 375x812Quando entrambi i parametri sono omessi, la scansione viene eseguita a 1000×1080. Passando viewportWidth da solo, l'altezza predefinita è 1080; viewportHeight richiede che viewportWidth sia impostato. Ogni dimensione può essere fino a 7680 pixel.
Scansioni Parziali della Pagina
Per impostazione predefinita, lo strumento analyze esegue la scansione dell'intera pagina. Per delimitare la scansione a una regione specifica, passa il parametro facoltativo selector — utile per concentrarsi su un singolo componente o escludere parti della pagina rumorose e non correlate dai risultati.
-
Una singola stringa di selettore CSS individua un elemento nel frame superiore:
{ "url": "http://localhost:3000", "selector": "#main" } -
Un array di selettori CSS passa attraverso i limiti di iframe o shadow-DOM — ogni segmento seleziona l'host per il successivo. Usa un array solo quando l'obiettivo si trova all'interno di un iframe o di una radice shadow:
{ "url": "http://localhost:3000", "selector": ["iframe#checkout", "#payment-form"] }
Un array supporta fino a 10 segmenti. Se il selettore non corrisponde ad alcun elemento sulla pagina, la scansione restituisce un errore. Quando selector viene omesso, viene scansionata l'intera pagina.
Chiedi al tuo agente AI in linguaggio naturale — l'agente traduce le tue intenzioni nella chiamata allo strumento:
Scan only the #main region of http://localhost:3000 for accessibility issuesInterazioni del Browser Prima della Scansione
Lo strumento analyze supporta un array opzionale before di passaggi di interazione che eseguono dopo il caricamento della pagina ma prima della scansione di accessibilità. Questo sblocca diversi scenari di test del mondo reale:
- Pagine con accesso limitato — inserire le credenziali e sottomettere prima di scansionare la pagina post-login
- Banners sui cookie/consenso — chiudere i banner che altrimenti coprirebbero o oscurerebbero il contenuto della pagina
- Contenuto dinamico — attendere che il contenuto client-rendered (cambi di percorso, DOM iniettato in ritardo) appaia prima di effettuare la scansione
I passaggi vengono eseguiti in ordine di array, nello stesso contesto del browser come la scansione, così i cookie, localStorage e qualsiasi cambiamento di percorso attivato da click o fill persiste nella scansione.
L'array before supporta fino a 20 passaggi. Ogni passo ha il proprio timeout di BROWSER_TIMEOUT_MS (predefinito 30000 ms); non c'è sovrascrizione per passo.
Azioni supportate
| Azione | Campi richiesti | Campi opzionali | Scopo |
|---|---|---|---|
click |
selector |
Fai clic sull'elemento che corrisponde al CSS selector (ad esempio, un pulsante di invio, un pulsante "Chiudi" su un banner). |
|
fill |
selector, value |
Compila un input che corrisponde a selector con value. Usalo per le credenziali, le query di ricerca o i campi del modulo. Una stringa vuota cancella l'input. |
|
waitFor |
selector |
state — uno di "visible" (predefinito), "attached", "hidden", "detached" |
Attendere che l'elemento che corrisponde a selector raggiunga state. Usa per controllare il passo successivo o la scansione stessa. Scegli un selettore che esiste solo nello stato post-interazione (ad es., un pulsante di logout o un'intestazione della dashboard) — i selettori generici come body o #app esistono già prima dell'interazione e si risolvono istantaneamente, quindi non controlleranno nulla. |
Esempio: Effettuare il login prima della scansione
Chiedi al tuo agente AI in linguaggio naturale — l'agente traduce le tue intenzioni nella chiamata allo strumento:
Analyze http://localhost:3000 for accessibility issues. Before running
the analysis, fill in the #username and #password fields with USERNAME
and PASSWORD from ./.env.local, click the button[type=submit] button,
and wait for #main-content to appear.L'agente risolve il prompt e chiama lo strumento analyze con un payload simile a:
{
"url": "http://localhost:3000",
"before": [
{
"action": "fill",
"selector": "#username",
"value": "<resolved-from-.env.local>"
},
{
"action": "fill",
"selector": "#password",
"value": "<resolved-from-.env.local>"
},
{ "action": "click", "selector": "button[type=submit]" },
{ "action": "waitFor", "selector": "#main-content" }
]
}fill.value è trattato come sensibile. Il server axe MCP non registra mai fill.value, non lo ripete nei messaggi di errore e non lo invia mai alla telemetria. Usa fill per qualsiasi input dell'utente o segreto (password, token API, ecc.) in modo che i segreti rimangano redatti in tutto il pipeline — e non incorporare mai valori sensibili in un selector, che appaiono compaiono nei log e nei messaggi di errore.
L'agente risolve value, non il server. The axe MCP Server treats value as a literal string — it does non read files, expand environment variables, or interpret placeholder syntax like ${VAR}, $VAR, or {{VAR}}. Your AI agent (Claude, Copilot, Cursor, etc.) is responsible for resolving the user's intent into a concrete string before calling the tool.
In pratica, ciò significa:
- Formula i prompt in modo naturale — "usa USERNAME/PASSWORD da
.env.local" funziona. L'agente legge il file con i propri strumenti del file system e sostituisce i valori. - Non incollare la sintassi dei segnaposto — scrivere
value: "${USERNAME}"in un prompt farà sì che la stringa letterale${USERNAME}venga digitata nell'input. - Sii esplicito sulle fonti ambigue — se dici "usa le mie credenziali salvate" senza indicare all'agente un file o una variabile d'ambiente, un agente ben educato chiederà piuttosto che supporre. Indicalo dove cercare.
Alcuni flussi di autenticazione non sono supportati. before azioni guidano la pagina attraverso interazioni in stile Playwright in un'istanza di Chromium dockerizzata. I seguenti sono intenzionalmente fuori ambito:
- Sfide Captcha sfide (reCAPTCHA, hCaptcha, ecc.)
- Codici di verifica 2FA / TOTP / SMS codici di verifica
- SSO di terze parti catene di reindirizzamento (ad es., "Accedi con Google", pagine di login ospitate su Okta)
Quando il tuo vero flusso di login richiede uno degli elementi sopra, scansiona un punto di accesso alternativo:
- Un cookie di sessione pre-autenticato iniettato con Iniezione di cookie — autenticati una volta in un browser reale, quindi passa il cookie di sessione risultante in modo che la scansione inizi già autenticata
- Un token di sessione o URL di bypass che il tuo team utilizza per i test automatici
- Un URL di staging con autenticazione disabilitata per i test di accessibilità
Iniezione di cookie
Lo strumento analyze supporta un array opzionale cookies che imposta i cookie sul contesto del browser prima della navigazione — in modo che accompagnino la prima richiesta alla pagina. Questo è distinto da before azioni, che viene eseguito dopo navigazione e quindi non può influenzare come viene instradata la richiesta iniziale. Due usi comuni:
- Instradamento dell'ambiente — imposta un cookie selettore di staging o di branch di funzionalità che un livello edge o CDN legge per decidere quale versione del sito servire.
- Sessioni pre-autenticate — inietta un cookie di sessione valido in modo che la scansione inizi già autenticata, senza dover gestire un modulo di login attraverso
before.
L'array cookies supporta fino a 20 cookie.
Campi del cookie
| Campo | Richiesto | Descrizione |
|---|---|---|
name |
Sì | Nome del cookie. Appare nei log e nei messaggi di errore — non inserire mai valori segreti qui. |
value |
Sì | Valore del cookie. Trattato come sensibile: mai registrato, riportato negli errori o inviato alla telemetria. Fino a 10.000 caratteri (sufficientemente lungo per JWT e token di sessione). |
domain |
Sì | Dominio del cookie. Richiesto affinché l'ambito sia esplicito. Usa un punto iniziale (.example.com) per condividere il cookie tra i sottodomini. |
path |
No | Percorso del cookie. Impostazione predefinita su /. |
sameSite |
No | Uno tra "Strict", "Lax" o "None". "None" richiede secure: true. |
secure |
No | Booleano. |
httpOnly |
No | Booleano. |
expires |
No | Scadenza come timestamp Unix in secondi. Omettere per un cookie di sessione. |
Esempio: Accesso a una pagina pre-autenticata
Chiedi al tuo agente AI in linguaggio naturale — l'agente traduce le tue intenzioni nella chiamata allo strumento:
Analyze https://app.example.com for accessibility issues. Set the session
cookie for app.example.com from ./.env.local so the scan starts already
logged in.L'agente risolve il valore del cookie e chiama lo strumento analyze con un payload simile a:
{
"url": "https://app.example.com",
"cookies": [
{
"name": "session",
"value": "<resolved-from-.env.local>",
"domain": "app.example.com"
}
]
}cookies[*].value è trattato come sensibile. Come con fill.value, il server axe MCP non registra mai il value di un cookie, non lo riporta mai nei messaggi di errore e non lo invia mai alla telemetria. Il name di un cookie, tuttavia, appaiono appare nei log e nei messaggi di errore — mantieni i segreti in value, mai in name.
L'agente risolve value, non il server. I valori dei cookie seguono la stessa regola di fill.value in before azioni: il server tratta value come una stringa letterale e non non legge file, espande variabili d'ambiente, o interpreta la sintassi dei segnaposto come ${VAR}. Il tuo agente AI risolve l'intenzione dell'utente in una stringa concreta prima di chiamare lo strumento.
Screenshot
Lo strumento analyze può restituire uno screenshot della pagina insieme al rapporto di violazione, così puoi vedere cosa è stato scansionato. Passa il parametro opzionale screenshot per partecipare — un oggetto vuoto è sufficiente:
{
"url": "http://localhost:3000",
"screenshot": {}
}PNG è il formato predefinito. Imposta format su "jpeg" per un'immagine più piccola su pagine con molte foto:
{
"url": "http://localhost:3000",
"screenshot": { "format": "jpeg" }
}L'immagine viene restituita come blocco di contenuto immagine standard MCP, dopo il rapporto di violazione.
Cosa mostra lo screenshot
- Il viewport visibile, non l'intera pagina. Il contenuto sotto la piega non è incluso. Per catturare più della pagina, passa un'
viewportHeightalta (es.4096) così l'area visibile copre ciò che vuoi vedere. - La pagina com'era immediatamente prima che iniziasse la scansione. La cattura avviene appena prima di
axe.run(), quindi i cambiamenti del DOM che si verificano durante la scansione — ri-renderizzazione delle SPA, aggiornamenti diuseEffect, animazioni, richieste in corso — non sono riflessi. Su app a pagina singola questa sfasatura è comune.
Non trattare lo screenshot come la fonte di verità per ciò che axe ha visto. A causa della sfasatura temporale sopra descritta, un elemento visibile nell'immagine potrebbe non essere ciò che axe ha valutato. Chiedi al tuo agente di non narrare elementi visibili ma non segnalati come se fossero risultati di scansione — il rapporto di violazione è quello autorevole.
Costo e supporto al cliente
Richiedi screenshot deliberatamente. Un blocco di contenuto immagine costa token di input immagine nel turno successivo del tuo agente — circa un ordine di grandezza in più rispetto all'equivalente testo. Richiedi uno screenshot quando vuoi davvero vedere la pagina, piuttosto che aggiungerlo a ogni scansione.
Se l'immagine viene visualizzata in linea dipende dal tuo client MCP. Il server restituisce sempre un blocco immagine valido per le specifiche, ma alcuni client comprimono i risultati dello strumento o omettono le anteprime delle immagini — VS Code con Copilot le visualizza, mentre Cursor e Claude Desktop potrebbero non farlo. Un'anteprima mancante è una limitazione del display lato client, non una cattura fallita.
Salvataggio degli screenshot su disco
Lo screenshot può anche essere scritto su un file, che è il modo affidabile per vedere una cattura in un client che non visualizza immagini inline. Imposta saveTo su un percorso assoluto:
{
"url": "http://localhost:3000",
"screenshot": { "saveTo": "/Users/me/Desktop/home.png" }
}Oppure imposta save: true per lasciare che il server scelga il nome del file:
{
"url": "http://localhost:3000",
"screenshot": { "save": true }
}| Campo | Tipo | Scopo |
|---|---|---|
saveTo |
string |
Percorso assoluto in cui scrivere l'immagine. Se punta a una directory esistente, all'interno verrà scritto un nome file generato. Implica salvataggio, quindi save non è necessario insieme ad esso. |
save |
boolean |
Scrivi l'immagine con un nome file generato nella directory degli screenshot del server (AXE_SCREENSHOT_DIR, predefinita la directory temporanea del tuo sistema operativo). Ignorato quando saveTo è impostato. |
inline |
boolean |
Se allegare o meno l'immagine come blocco inline (predefinito true). Imposta false per saltare l'immagine inline e restituire solo il percorso salvato. |
Il percorso assoluto su cui è stato scritto viene restituito nell'array messages della risposta, in modo che il tuo agente possa dirti dove trovare il file.
Associa un salvataggio a inline: false per evitare di pagare due volte per l'immagine. Se il tuo client non può rendere l'immagine in linea comunque, { "save": true, "inline": false } scrive il file e salta il blocco di contenuto immagine — risparmiando i token di input immagine che altrimenti costerebbero nel turno successivo del tuo agente.
inline: false ha effetto solo quando il salvataggio riesce effettivamente. Se la scrittura fallisce, l'immagine viene comunque restituita in linea in modo che la cattura non vada persa.
Sotto la distribuzione Docker, il file viene scritto all'interno del contenitore. Per raggiungerlo dal tuo host, monta un volume sulla directory di destinazione e punta saveTo (o AXE_SCREENSHOT_DIR) al percorso lato contenitore. Il server non rileva se esiste un mount — senza uno, il file viene scritto e poi scartato con il contenitore.
Il salvataggio si applica a solo scansioni riuscite. Se la scansione fallisce dopo che lo screenshot è stato catturato, l'immagine viene restituita in linea insieme all'errore a prescindere da inline, e non viene mai scritta su disco.
Quando la cattura fallisce
La cattura dello screenshot è al meglio delle possibilità e non fallisce mai una scansione. Se la cattura scade, la scansione restituisce comunque i suoi risultati con una nota nell'array messages della risposta:
Screenshot capture failed: <reason>Se scansione stessa fallisce dopo che lo screenshot è stato scattato, l'immagine viene comunque restituita con la risposta di errore — lo stato visivo della pagina nel momento in cui qualcosa è andato storto è di solito l'evidenza di debug più utile che hai.
Gli screenshot che richiedi non vengono inviati a Deque. L'immagine viene catturata localmente e restituita direttamente al tuo agente. Ciò è separato dallo screenshot a pagina intera che Regole Avanzate carica per la valutazione lato server; vedi Cosa viene inviato a Deque.
Regole Avanzate
Oltre al set di regole standard di axe-core, lo strumento analyze può eseguire Regole Avanzate — test automatizzati che utilizzano screenshot, computer vision e modelli di linguaggio di grandi dimensioni per rilevare problemi che il solo axe-core non può, come intestazioni che sembrano solo intestazioni o immagini informative con testi alternativi inutili.
Quale preset viene eseguito è determinato dal Configurazione axe della tua organizzazione, e — laddove il tuo amministratore lo permetta — può essere sovrascritto per server con AXE_ADVANCED_RULES o per scansione con l'argomento advancedRules:
{
"url": "http://localhost:3000",
"advancedRules": "thorough"
}Ogni risposta riporta il preset che è stato effettivamente eseguito e da dove proviene:
{
"advancedRules": {
"value": "thorough",
"source": "tool_arg"
}
}Le Regole Avanzate sono incluse con il tuo abbonamento a axe DevTools per il Web — lo stesso che ti dà accesso al server axe MCP. Aggiungono circa 15–20 secondi a una scansione, consumano Crediti AI e sono l'unico caso in cui analyze invia i dati della pagina (uno screenshot a pagina intera più la struttura della pagina) a Deque per la valutazione. Vedi Regole avanzate per preselezioni, precedenze, messaggi di degrado e dettagli sulla privacy.
Test guidati intelligenti
Lo strumento analyze può anche eseguire i Test Intelligenti Guidati Automatizzati (IGT) di Deque sulla stessa pagina nella stessa chiamata. Passa l'array opzionale igtTools per nominare quali IGT eseguire — attualmente il valore supportato è IGT Tastiera:
{
"url": "http://localhost:3000",
"igtTools": ["keyboard"]
}Chiedi al tuo agente AI in linguaggio naturale — l'agente traduce le tue intenzioni nella chiamata allo strumento:
Scan http://localhost:3000 for accessibility issues and run the keyboard IGT on itOgni IGT richiesto viene eseguito in sequenza dopo la scansione axe, sulla stessa pagina, nello stesso browser, alla stessa larghezza del viewport. Qualsiasi cosa che prepari la pagina viene eseguita una volta e si estende a entrambe: before azioni, iniezione di cookie e il parametri del viewport.
{
"url": "http://localhost:3000",
"igtTools": ["keyboard"],
"before": [
{
"action": "fill",
"selector": "#username",
"value": "<resolved-from-.env.local>"
},
{ "action": "click", "selector": "button[type=submit]" },
{ "action": "waitFor", "selector": "#main-content" }
]
}Forma della risposta
Impostando igtTools cambia la forma di data. Senza di esso, data rappresenta l'array dei problemi axe. Con esso, data include axe e igt come chiavi coese, con un'entrata igt per ogni strumento richiesto:
{
"pageUrl": "http://localhost:3000",
"data": {
"axe": [],
"igt": {
"keyboard": {
"status": "complete",
"issues": [],
"igtElements": [],
"terminatedReason": "keyboard-trap"
}
}
}
}status—"complete"o"error". Controllalo prima di leggere nient'altro:issueseigtElementssono presenti solo su"complete", eerrorsolo su"error".issues— i problemi di accessibilità che l'IGT ha trovato. Il conteggio dei problemi è la lunghezza di questo array.igtElements— ogni elemento che l'IGT ha processato, non una lista di problemi. Le voci conanalysisFailed: truenon possono essere analizzate dall'IA e dovrebbero essere riviste manualmente. Ogni voce è ridotta solo ai campi identificativi:vnodeId,selector,tagName,role,accessibleName,stateseanalysisFailed, ognuno presente solo quando l'elemento lo contiene.terminatedReason— presente solo quando l'esecuzione si è fermata anticipatamente, significando che i risultati sono parziali."keyboard-trap"significa che il test ha colpito un blocco di focus da cui non è potuto uscire;"insufficient-credits"significa che l'account ha esaurito i crediti IA a metà corsa.
Una chiamata senza igtTools rimane invariata. data rimane l'array dei problemi axe esattamente come prima, quindi i prompt esistenti, le istruzioni dell'agente e le integrazioni continuano a funzionare senza modifiche.
I fallimenti sono isolati
Un IGT che fallisce non riesce non a fallire la chiamata e non influisce mai sui risultati di axe. Il fallimento viene riportato come status: "error" dello strumento con un messaggio, mentre i risultati di axe vengono restituiti normalmente — incluso quando l'impostazione di machine learning della tua organizzazione è disabilitata, nel qual caso la parte IGT spiega che il machine learning è richiesto.
Uso dei crediti
Gli IGT sono alimentati dall'IA e fanno parte del Sistema di Gestione dei Crediti AI. Ogni esecuzione consuma crediti IA dalla allocazione mensile della tua organizzazione; la scansione axe stessa no. Richiedi IGT deliberatamente piuttosto che aggiungerli a ogni scansione.
Se le tue istruzioni personalizzate per agenti dicono all'agente di chiamare lo strumento autonomo strumento igt, aggiornale per utilizzare analyze con igtTools invece — una chiamata copre sia la scansione che l'IGT, e lo strumento autonomo è deprecato.
Vantaggi principali
- Test del browser reale - Testa la pagina effettivamente renderizzata, non solo il codice sorgente, assicurando risultati accurati
- Standard dell'organizzazione - Rispetta le impostazioni di configurazione di axe del tuo team per test coerenti tra tutti gli utenti
- Copertura completa - Sfrutta la piattaforma axe leader del settore
- Test reattivo - Testa a dimensioni specifiche del viewport per identificare problemi di accessibilità specifici del punto di interruzione
- Scansioni Mirate - Limita una scansione a una regione specifica, iframe o shadow root con il parametro
selector - Pagine Autenticate e Interattive - Scansiona pagine dietro un login, rimuovi i banner dei cookie o attendi contenuti dinamici utilizzando le azioni
before - Cookie di Sessione e Ambiente - Arriva già autenticato, o indirizza a un ambiente specifico, iniettando cookie prima della navigazione con il parametro
cookies - Contesto visuale - Restituisci uno screenshot della pagina insieme al report con il parametro
screenshot, anche quando una scansione fallisce - Regole avanzate - Cattura i problemi che richiedono ragionamenti visivi o contestuali, a una soglia di fiducia controllata dalla tua organizzazione
- Test guidati intelligenti - Esegui un IGT sulla stessa pagina nella stessa chiamata con il parametro
igtTools
Output
Lo strumento restituisce una risposta JSON strutturata contenente:
- Tutte le violazioni dell'accessibilità riscontrate
- Livelli di gravità delle violazioni (critico, serio, moderato, minore)
- Selettori specifici degli elementi e codice sorgente
- ID delle regole e descrizioni
- Un blocco
advancedRulesche riporta il preset Regole avanzate che è stato eseguito e da dove è venuto - Un array di
messagesche include eventuali note sull'esecuzione (per esempio, una cattura di screenshot fallita, un'esecuzione di regole avanzate degradate, o il percorso in cui è stato salvato uno screenshot)
Quando screenshot è impostato, un blocco di contenuti di immagine segue il report. Quando igtTools è impostato, i risultati degli IGT vengono restituiti insieme ai risultati di axe, organizzati per nome dello strumento.
Lo Strumento remediate
Lo strumento remediate prende uno o più problemi di accessibilità identificati dallo strumento analyze o igt e genera suggerimenti di rimedio contestualizzati e potenziati dall'AI che gli agenti di codifica possono tradurre in correzioni di codice effettive. I problemi vengono inviati in gruppo, quindi una singola chiamata può restituire correzioni per ogni violazione trovata su una pagina.
Cosa Fa
- Autenticazione - Convalida le credenziali dell'utente — una chiave API o un token di accesso OAuth 2.0 — per garantire l'accesso autorizzato
- Uso di Crediti AI - Ogni problema nel gruppo consuma crediti AI dall'allocazione della tua organizzazione, consentendo l'uso di modelli AI avanzati addestrati sull'ampia esperienza di accessibilità di Deque
- Correzioni Generate dall'IA - Crea correzioni di accessibilità di alta qualità e azionabili che gli agenti di codifica possono interpretare e implementare nel codice sorgente
Se i crediti IA sono esauriti, lo strumento remediate non funzionerà fino a quando i tuoi crediti non saranno ripristinati (acquistandone di più o al reset del tuo ciclo mensile). Tuttavia, lo strumento analyze continuerà a funzionare.
Rimediazione del Batch
Lo strumento accetta un array issues. Invia tutti i problemi da un singolo analyze o igt eseguiti insieme in una chiamata piuttosto che chiamare lo strumento una volta per problema — un batch supporta tra 1 e 25 problemi.
Ogni problema ha i seguenti campi:
| Campo | Richiesto | Descrizione |
|---|---|---|
id |
Sì | Un identificatore scelto dal chiamante, unico all'interno del batch (ad esempio, l'ID regola più un contatore: color-contrast-0). Usato solo per correlare ciascun risultato al suo input. |
rule |
Sì | L'ID regola axe dall'output analyze/igt (ad esempio, color-contrast, image-alt). |
elementHtml |
Sì | Il frammento HTML dell'elemento che viola. |
remediation |
Sì | Una descrizione di cosa c'è di sbagliato e cosa deve essere corretto, tratta dal sommario del problema (opzionalmente arricchita con la sua descrizione, il testo di aiuto o il ragionamento AI). |
pageUrl |
No | L'URL della pagina in fase di rimedio, dalla risposta analyze. |
Invita il tuo agente AI in linguaggio naturale — assembla il batch dai risultati dell'analisi:
Analyze http://localhost:3000 and remediate every issue foundL'agente risolve il prompt e chiama lo strumento remediate con un payload simile a:
{
"issues": [
{
"id": "color-contrast-0",
"rule": "color-contrast",
"elementHtml": "<span style=\"color: #aaa\">Sign up</span>",
"remediation": "Increase the contrast ratio to at least 4.5:1",
"pageUrl": "http://localhost:3000"
},
{
"id": "image-alt-1",
"rule": "image-alt",
"elementHtml": "<img src=\"logo.png\">",
"remediation": "Add alt text describing the image"
}
]
}Output
Lo strumento restituisce un array di risultati per problema, ciascuno associato al suo input tramite id. Un risultato è di una delle due forme:
- Successo —
status: "ok", con un oggettoremediationcontenente una descrizione generale, i passaggi di rimedio e una correzione di codice concreta - Errore —
status: "error", con un oggettoerror(codeemessage) per un problema che non ha potuto essere risolto
{
"data": [
{
"id": "color-contrast-0",
"status": "ok",
"remediation": {
"general_description": "...",
"remediation": "...",
"code_fix": "<span style=\"color: #595959\">Sign up</span>"
}
},
{
"id": "image-alt-1",
"status": "error",
"error": { "code": "LLM_ERROR", "message": "..." }
}
]
}I risultati sono indipendenti: un fallimento in un problema non blocca le indicazioni per gli altri.
Utilizzo del Credito
Lo strumento remediate fa parte del Sistema di Gestione dei Crediti AI. Ogni problema in un batch consuma crediti dalla tua allocazione mensile. Gli amministratori possono monitorare l'uso dei crediti tramite il Portale account axe.
Lo Strumento igt
Lo strumento igt è deprecato. Utilizza parametro analyze dello strumento igtTools invece — esegue gli stessi test guidati intelligenti sulla stessa pagina in una singola chiamata, insieme alla scansione axe.
igt rimane pienamente funzionale e restituisce gli stessi risultati di prima, quindi nulla si interrompe oggi. Verrà rimosso in un futuro aggiornamento. Se le tue istruzioni personalizzate per agenti nominano lo strumento igt, aggiornali per chiamare analyze con igtTools.
Lo strumento igt esegue i Test Guidati Intelligenti Automatizzati di Deque su una pagina web come chiamata autonoma. Tutto quello che fa, analyze ora lo esegue nella stessa chiamata della scansione sull'accessibilità — vedi Test guidati intelligenti per utilizzo e consumo di crediti, che sono gli stessi per entrambi.
L'oggetto risultato per test è lo stesso per entrambi — status, issues, igtElements e un terminatedReason opzionale, come descritto in Forma della risposta. Solo l'involucro è diverso: igt restituisce i suoi risultati direttamente sotto data, organizzati per nome del test (data.keyboard), mentre analyze li nidifica sotto data.igt insieme a data.axe.
Introduzione
Configurare il server axe MCP comporta tre scelte indipendenti:
- Scegli una distribuzione — Docker o npm
- Imposta l'autenticazione — una chiave API o OAuth 2.0
- Configura il tuo client — VS Code con Copilot, Cursor, o **Claude Code**
Gli utenti di Claude Code possono saltare questi passaggi con il plugin di accessibilità axe, che registra il server e aggiunge comandi slash per l'impostazione, le istruzioni dell'agente e l'esecuzione completa del ciclo di correzione.
Per le variabili d'ambiente e le istruzioni raccomandate per gli agenti IA, vedi Riferimento di Configurazione. Se qualcosa va storto, vedi Risoluzione dei problemi.
Esempi di prompt
Garantire il richiamo degli strumenti attesi
In molti IDE, l'uso della seguente sintassi (prefisso "#") garantirà che gli strumenti di axe MCP Server vengano chiamati come previsto:
#analyze the http://localhost:3033/ web page for accessibility issues and #remediate any violations foundAnalizzare un URL localhost per problemi di accessibilità:
Analyze http://localhost:3000 for accessibility issuesAnalisi con correzione:
Analyze https://example.com for accessibility issues and fix any issues foundAnalizzare una pagina dietro un login:
Analyze http://localhost:3000 for accessibility issues. Before running the
analysis, fill in the #username and #password fields with USERNAME and
PASSWORD from ./.env.local, click the button[type=submit] button, and
wait for #main-content to appear.Disattivare un banner di cookie prima della scansione:
Analyze https://example.com for accessibility issues, but first click the
#cookie-dismiss button to dismiss the cookie consent banner.Cattura uno screenshot della pagina:
Analyze http://localhost:3000 for accessibility issues and capture a screenshot of the pageScansiona una pagina con un cookie di sessione iniettato:
Analyze https://app.example.com for accessibility issues. Set the session
cookie for app.example.com from ./.env.local so the scan starts already
logged in.Supporto
Per domande, problemi o feedback riguardanti axe MCP Server:
- Supporto tecnico: helpdesk@deque.com
- Richieste generali: helpdesk@deque.com
- Domande relative alle vendite: sales@deque.com
FAQ Sicurezza & Privacy
Il server axe MCP memorizza o cattura il nostro codice sorgente?
No. Il server axe MCP non cattura né memorizza il tuo codice sorgente in alcun database o archivio persistente.
Quando lo strumento analyze viene eseguito, la risposta include il codice sorgente HTML degli elementi problematici per il contesto e scopi di debug. Tuttavia, questi dati:
- Vengono restituiti solo nella risposta API immediata al tuo agente AI
- Non vengono mai memorizzati nei database gestiti da Deque
- Rimangono all'interno del tuo ambiente di sviluppo locale
- Vengono scartati dopo il completamento dell'analisi
Per quanto tempo i risultati dei test MCP sono conservati nell'infrastruttura gestita da Deque?
Non lo sono. risultati dei test MCP non sono memorizzati in alcun database o sistema di archiviazione gestito da Deque.
Lo strumento analyze:
- Funziona interamente sulla tua macchina — in un contenitore Docker, o come processo locale Node.js con la distribuzione npm
- Restituisce direttamente i risultati al tuo agente AI
- Non invia risultati di analisi ai server Deque
Ci sono due eccezioni:
- Lo strumento
remediate, che può includere metadati di violazione minimi (vedi sotto) per generare indicazioni di correzione potenziate dall'IA. - Regole avanzate, quando è attivo un preset. Le Regole avanzate vengono valutate server-side, quindi
analyzecarica uno screenshot della pagina completa e la struttura della pagina necessaria per le regole. Vedi Cosa viene inviato a Deque.
Quali dati vengono inviati ai server Deque?
Solo quando si utilizza lo strumento remediate:
I seguenti dati sono inviati al punto finale di rimedio AI di Deque per generare indicazioni di correzione:
- ID Regola - La specifica regola di accessibilità che è stata violata
- HTML dell'elemento - Il markup HTML dell'elemento(i) interessato(i)
- Metadati del problema - Descrizione della violazione e guida alla correzione da axe-core
Questi dati sono utilizzati esclusivamente per generare indicazioni di rimedio e non sono memorizzati a lungo termine nei database di Deque.
Quando si utilizzano Regole avanzate:
Le Regole avanzate sono valutate dai servizi ML e LLM di Deque piuttosto che nel browser locale, quindi una scansione con un preset attivo invia:
- Uno screenshot della pagina completa della pagina in corso di scansione
- Struttura della pagina e stili calcolati — i dati di valutazione necessari alle regole avanzate per ragionare su layout, contrasto e intestazioni
Questa acquisizione è indipendente dal parametro opzionale screenshot dello strumento analyze: omettere quel parametro non lo impedisce. Imposta il preset Regole avanzate su disabled — per scansione, per server o a livello organizzativo in Configurazione axe — per le pagine il cui contenuto non deve lasciare il tuo ambiente.
Altrimenti, lo strumento analyze non invia alcun dato ai server Deque oltre alle richieste di autenticazione (convalida della tua chiave API o token di accesso OAuth 2.0) e al recupero della configurazione axe della tua organizzazione.
Quale livello di accesso è necessario affinché l'agente AI funzioni?
L'agente AI (Claude, Copilot, Cursor, ecc.) ha bisogno di accesso a:
-
Comunicazione con il Server MCP - L'agente deve essere in grado di chiamare gli strumenti del server MCP tramite il Protocollo di Contesto del Modello
-
Dati di risposta degli strumenti - L'agente riceve:
- Dati sulle violazioni dell'accessibilità dalle chiamate
analyze - Guida alla correzione dalle chiamate
remediate - Questi dati sono necessari per l'agente per comprendere i problemi e generare correzioni al codice
- Dati sulle violazioni dell'accessibilità dalle chiamate
-
Il tuo Codice (Opzionale) - Se si desidera che l'agente applichi automaticamente le correzioni di codice, deve avere accesso ai file del tuo codice sorgente
- Questo è standard per gli assistenti di codifica AI negli IDE (VS Code, Cursor, ecc.)
- Non necessario se usi solo gli strumenti per analisi e guida (ad esempio, tramite l'app desktop Claude)
Il server MCP stesso ha bisogno di accesso a:
- URL che specifichi per i test (supporta sia locali che remoti)
- Le tue credenziali axe: o una chiave API (generata nel Portale Account axe) o un token di accesso OAuth 2.0 (ottenuto tramite
@deque/axe-auth); fornito tramite variabile d'ambiente
Importante: Il server MCP funziona localmente sulla tua macchina - in un contenitore Docker, o come un processo Node.js con la distribuzione npm. Non richiede un ampio accesso al file system o privilegi elevati.
Best Practices
- Sicurezza delle Credenziali - Memorizza il tuo
AXE_API_KEYoAXE_ACCESS_TOKENcome variabile d'ambiente, non nel codice. Con OAuth 2.0,@deque/axe-authconserva i token nella tua chiave di sistema operativo e inietta un nuovo token di accesso all'avvio, quindi non è necessario che un segreto a lungo termine risieda nella tua configurazione - Test Locale - Testa URL di sviluppo locale (localhost) o di staging per mantenere isolato il codice sensibile pre-produzione
- Isolamento della Rete - Il server MCP comunica solo con:
- URL che richiedi esplicitamente di analizzare
- Server Deque per l'autenticazione (convalida della chiave API o del token OAuth 2.0) e rimedio (quando chiamato)
- Il tuo agente AI locale attraverso il protocollo MCP
- Revisione Prima di Applicare - Rivedi sempre le modifiche al codice generate dall'IA prima di integrarle nel tuo codice sorgente
