**axe MCP Server**

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

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

  1. Autenticazione - Valida le credenziali dell'utente (ovvero una chiave API o un token di accesso OAuth 2.0) per garantire un accesso autorizzato
  2. 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
  3. Analisi Basata su Browser - Avvia un'istanza del browser in background con l'estensione axe DevTools montata
  4. Navigazione della Pagina - Naviga all'URL fornito dall'utente nel loro prompt all'agente AI
  5. 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)
  6. 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 375x812

Quando 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 issues

Interazioni 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" }
  ]
}
important

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.

note

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.
caution

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à

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.

Campo Richiesto Descrizione
name Nome del cookie. Appare nei log e nei messaggi di errore — non inserire mai valori segreti qui.
value 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 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"
    }
  ]
}
important

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.

note

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'viewportHeight alta (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 di useEffect, animazioni, richieste in corso — non sono riflessi. Su app a pagina singola questa sfasatura è comune.
caution

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
tip

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.

tip

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.

important

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.

note

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 it

Ogni 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: issues e igtElements sono presenti solo su "complete", e error solo su "error".
  • issues — i problemi di accessibilità che l'IGT ha trovato. Il conteggio dei problemi è la lunghezza di questo array.
  • igtElementsogni elemento che l'IGT ha processato, non una lista di problemi. Le voci con analysisFailed: true non possono essere analizzate dall'IA e dovrebbero essere riviste manualmente. Ogni voce è ridotta solo ai campi identificativi: vnodeId, selector, tagName, role, accessibleName, states e analysisFailed, 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.
note

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.

tip

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 advancedRules che riporta il preset Regole avanzate che è stato eseguito e da dove è venuto
  • Un array di messages che 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

  1. Autenticazione - Convalida le credenziali dell'utente — una chiave API o un token di accesso OAuth 2.0 — per garantire l'accesso autorizzato
  2. 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
  3. 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
note

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 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 L'ID regola axe dall'output analyze/igt (ad esempio, color-contrast, image-alt).
elementHtml Il frammento HTML dell'elemento che viola.
remediation 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 found

L'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:

  • Successostatus: "ok", con un oggetto remediation contenente una descrizione generale, i passaggi di rimedio e una correzione di codice concreta
  • Errorestatus: "error", con un oggetto error (code e message) 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

caution

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:

  1. Scegli una distribuzione — Docker o npm
  2. Imposta l'autenticazione — una chiave API o OAuth 2.0
  3. Configura il tuo clientVS 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 found

Analizzare un URL localhost per problemi di accessibilità:

Analyze http://localhost:3000 for accessibility issues

Analisi con correzione:

Analyze https://example.com for accessibility issues and fix any issues found

Analizzare 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.
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 page
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:

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 analyze carica 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:

  1. 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

  2. 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
  3. 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_KEY o AXE_ACCESS_TOKEN come variabile d'ambiente, non nel codice. Con OAuth 2.0, @deque/axe-auth conserva 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