**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

Overzicht

De axe MCP Server is een Model Context Protocol (MCP) server die toegankelijkheidstests van ondernemingskwaliteit rechtstreeks in uw ontwikkelworkflow integreert. Gebouwd op het vertrouwde axe-platform stelt het ontwikkelaars in staat om uitgebreide toegankelijkheidsscans uit te voeren en deskundige richtlijnen voor correcties te ontvangen zonder hun IDE te verlaten.

De server biedt drie mogelijkheden - analyze, remediate en igt. analyze voert ook Geautomatiseerde Intelligente Begeleide Tests uit op de pagina die het scant, wat de nu vervangen standalone igt tool overbodig maakt.

Deze tools integreren naadloos met MCP-compatibele clients (zoals Claude Desktop, VS Code met Copilot of Cursor) en houden rekening met de configuratie-instellingen van je organisatie voor axe.

Toegang Krijgen

Axe MCP Server is opgenomen in het Axe DevTools for Web pakket. Een abonnement dat toegang tot de axe MCP Server mogelijk maakt, wordt opgezet in overleg met een Deque-vertegenwoordiger.

Tools & Mogelijkheden

De analyze Tool

De analyze tool voert een uitgebreide toegankelijkheidsanalyse uit op webpagina's door een scan uit te voeren via de axe DevTools Browser Extension in een echte browseromgeving. Het werkt naadloos met zowel lokale ontwikkelings-URL's (bijv. localhost:3000) als externe productie-URL's.

Wat Het Doet

  1. Authenticatie - Valideert de gebruikersreferenties (ofwel een API-sleutel of een OAuth 2.0 toegangstoken) om geautoriseerde toegang te waarborgen
  2. Configuratie Ophalen - Haalt de gebruikersspecifieke axe-configuratie instellingen op, inclusief:
    • Toegankelijkheidsteststandaard (bijv. WCAG 2.2 AA)
    • axe-core versie
    • Behoeft beoordeling / best practices
    • Geavanceerde Regels voorinstelling
  3. Browsergebaseerde Analyse - Start een browserinstantie op de achtergrond met de axe DevTools Extension geïnstalleerd
  4. Paginanavigatie - Navigeert naar de door de gebruiker aangeleverde URL in hun prompt aan de AI-agent
  5. Toegankelijkheidsscan - Voert een volledige toegankelijkheidsanalyse uit op de gerenderde pagina met behulp van de axe DevTools Browser Extension, waardoor de daadwerkelijke gebruikerservaring wordt getest (niet alleen statische HTML)
  6. Resultaatlevering - Geeft uitgebreide analyseresultaten terug aan de agent in een gestructureerd formaat

**Responsieve Testen**

De analyze tool ondersteunt optionele viewportWidth en viewportHeight parameters, waarmee u pagina's kunt testen op specifieke viewportafmetingen. Dit is handig om toegankelijkheidsproblemen te ontdekken die alleen bij bepaalde schermgroottes optreden, zoals mobiele of tablet breakpoints.

Analyze http://localhost:3000 for accessibility issues at a mobile viewport of 375x812

Wanneer beide parameters worden weggelaten, wordt de scan uitgevoerd op 1000×1080. Als viewportWidth alleen wordt doorgegeven, is de standaardhoogte 1080; viewportHeight vereist dat viewportWidth wordt ingesteld. Elke afmeting kan tot 7680 pixels zijn.

Gedeeltelijke Paginascans

Standaard scant de analyze tool de gehele pagina. Om de scan te beperken tot een specifiek deelgebied, geeft u de optionele selector parameter door — nuttig om te focussen op één component of om lawaaierige, ongerelateerde delen van de pagina uit de resultaten te houden.

  • Een enkele CSS-selector string richt zich op een element in het bovenste frame:

    {
      "url": "http://localhost:3000",
      "selector": "#main"
    }
  • Een array van CSS-selectors doorloopt iframe- of schaduw-DOM-grenzen — elk segment selecteert de host voor de volgende. Gebruik alleen een array wanneer de target zich binnen een iframe of shadow root bevindt:

    {
      "url": "http://localhost:3000",
      "selector": ["iframe#checkout", "#payment-form"]
    }

Een array ondersteunt maximaal 10 segmenten. Als de selector geen element op de pagina vindt, retourneert de scan een fout. Wanneer selector wordt weggelaten, wordt de hele pagina gescand.

Geef je AI-agent een instructie in natuurlijke taal — de agent vertaalt je intentie in de tooloproep:

Scan only the #main region of http://localhost:3000 for accessibility issues

Browserinteracties voor scannen

De analyze tool ondersteunt een optionele before array van interactiestappen die nadat de pagina wordt geladen maar voor de toegankelijkheidsscan uitvoeren. Dit ontsluit verschillende realistische testsituaties:

  • Pagina's met inlogbeveiliging — vul inloggegevens in en dien in voordat de post-loginpagina wordt gescand
  • Cookie-/toestemmingsbanners — sluit banners die anders inhoud van de pagina zouden bedekken of verbergen
  • Dynamische inhoud — wacht tot door de client gegenereerde inhoud (routewijzigingen, laat geïnjecteerde DOM) verschijnt voordat u scant

Stappen worden in arrayvolgorde uitgevoerd, in de browsercontext als de scan, zodat cookies, localStorage en eventuele routewijzigingen veroorzaakt door click of fill voortduren in de scan.

De before array ondersteunt tot 20 stappen. Elke stap heeft een eigen tijdslimiet van BROWSER_TIMEOUT_MS (standaard 30000 ms); er is geen per-stap overschrijven.

Ondersteunde acties
Actie Vereiste velden Optionele velden Doel
click selector Klik op het element dat overeenkomt met de CSS selector (bijv. een verzendknop, een "Sluiten" knop op een banner).
fill selector, value Vul een invoerveld dat overeenkomt met selector met value. Gebruik voor inloggegevens, zoekopdrachten of formuliervelden. Een lege tekenreeks wist de invoer.
waitFor selector state — een van "visible" (standaard), "attached", "hidden", "detached" Wacht tot het element dat overeenkomt met selector state bereikt. Gebruik om de volgende stap of de scan zelf aan te sturen. Kies een selector die in de post-interactiestatus bestaat in de post-interactiestatus (bijv. een uitlogknop of dashboardkoptitel) — generieke selectors zoals body of #app bestaan al vóór de interactie en lossen onmiddellijk op, dus ze sturen niets aan.
Voorbeeld: Inloggen vóór het scannen

Geef je AI-agent een instructie in natuurlijke taal — de agent vertaalt je intentie in de tooloproep:

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.

De agent lost de prompt op en roept de analyze tool aan met een payload die lijkt op:

{
  "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 wordt als gevoelig behandeld. De axe MCP Server logt fill.value nooit, echoot het nooit in foutmeldingen, en verzendt het nooit naar telemetrie. Gebruik fill voor elke door de gebruiker toegediende of geheime invoer (wachtwoorden, API-tokens, etc.) zodat geheimen over de hele pijplijn worden geredigeerd — en embed nooit gevoelige waarden in een selector, die wel in logs en foutmeldingen kunnen verschijnen.

note

De agent lost value op, niet de server. De axe MCP Server behandelt value als een letterlijke tekenreeks — het leest leest geen geen bestanden, breidt geen omgevingsvariabelen uit, of interpreteert geen plaatsaanduidingssyntax zoals ${VAR}, $VAR, of {{VAR}}. Je AI-agent (Claude, Copilot, Cursor, etc.) is verantwoordelijk voor het omzetten van de intentie van de gebruiker in een concrete tekenreeks voordat het de tool aanroept.

In de praktijk betekent dit:

  • Formuleer prompts natuurlijk — "gebruik GEBRUIKERSNAAM/WACHTWOORD van .env.local" werkt. De agent leest het bestand met zijn eigen bestandssysteemtools en vervangt de waarden.
  • Plak geen placeholder-syntaxis — het schrijven van value: "${USERNAME}" in een prompt zal ervoor zorgen dat de letterlijke string ${USERNAME} in het invoerveld wordt getypt.
  • Wees expliciet over dubbelzinnige bronnen — als je zegt "gebruik mijn opgeslagen inloggegevens" zonder de agent naar een bestand of omgevingsvariabele te verwijzen, zal een goed geprogrammeerde agent vragen in plaats van gokken. Zeg waar het moet kijken.
caution

Sommige authenticatiestromen worden niet ondersteund. before acties sturen de pagina aan via Playwright-achtige interacties in een Dockerized Chromium-instantie. Het volgende valt bewust buiten het bereik:

  • Captcha uitdagingen (reCAPTCHA, hCaptcha, etc.)
  • 2FA / TOTP / SMS verificatiecodes
  • Externe SSO redirectketens (bijv. "Inloggen met Google", Okta-gehoste inlogpagina's)

Wanneer je echte inlogstroom een van de bovenstaande vereist, zoek dan een alternatieve toegangspunt:

  • Een voorgeauthenticeerde sessiecookie geïnjecteerd met Cookie-injectie — authenticeer eenmaal in een echte browser en geef dan de resulterende sessiecookie door zodat de scan begint terwijl er al is ingelogd
  • Een sessietoken of bypass-URL die je team gebruikt voor geautomatiseerd testen
  • Een staging-URL met uitgeschakelde authenticatie voor toegankelijkheidstests

De analyze tool ondersteunt een optionele cookies array die cookies instelt in de browsercontext voor navigatie — zodat ze meegaan met het allereerste verzoek naar de pagina. Dit is anders dan before acties, die nadat na navigatie worden uitgevoerd en daarom geen invloed kunnen hebben op hoe het initiële verzoek wordt gerouteerd. Twee veelvoorkomende toepassingen:

  • Omgevingsroutering — stel een staging- of feature-branch-selector-cookie in die een edge of CDN-laag leest om te beslissen welke versie van de site wordt geleverd.
  • Vooraf geauthenticeerde sessies — injecteer een geldige sessiecookie zodat de scan al ingelogd begint, zonder een inlogformulier te gebruiken via before.

De cookies array ondersteunt tot wel 20 cookies.

Cookievelden
Veld Verplicht Beschrijving
name Ja Cookienaam. Verschijnt in logs en foutmeldingen — plaats hier nooit geheime waarden.
value Ja Cookie waarde. Wordt als gevoelig behandeld: nooit gelogd, niet weergegeven in foutenberichten, of naar telemetrie gestuurd. Tot 10.000 tekens (lang genoeg voor JWT's en sessietokens).
domain Ja Cookie domein. Vereist zodat de reikwijdte expliciet is. Gebruik een punt vooraan (.example.com) om de cookie over subdomeinen te delen.
path Nee Cookie pad. Standaard is /.
sameSite Nee Eén van „Strict“, „Lax“, of „None“. „None“ vereist secure: true.
secure Nee Booleaans.
httpOnly Nee Booleaans.
expires Nee Vervaldatum als een Unix-timestamp in seconden. Weglaten voor een sessiecookie.
Voorbeeld: Landen op een vooraf geauthenticeerde pagina

Geef je AI-agent een instructie in natuurlijke taal — de agent vertaalt je intentie in de tooloproep:

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.

De agent lost de cookie waarde op en roept de analyze tool aan met een payload die lijkt op:

{
  "url": "https://app.example.com",
  "cookies": [
    {
      "name": "session",
      "value": "<resolved-from-.env.local>",
      "domain": "app.example.com"
    }
  ]
}
important

cookies[*].value wordt als gevoelig behandeld. As with fill.value, the axe MCP Server never logs a cookie's value, never echoes it in error messages, and never sends it to telemetry. A cookie's name, however, wel appear in logs and error messages — keep secrets in value, never in name.

note

De agent lost value op, niet de server. Cookie values follow the same rule as fill.value in before acties: the server treats value as a literal string and does leest geen read files, expand environment variables, or interpret placeholder syntax like ${VAR}. Your AI agent resolves the user's intent into a concrete string before calling the tool.

Schermafbeeldingen

De analyze tool kan een schermafbeelding van de pagina teruggeven naast het overtredingsrapport, zodat je kunt zien wat er gescand is. Geef de optionele screenshot parameter door om in te schrijven — een leeg object is voldoende:

{
  "url": "http://localhost:3000",
  "screenshot": {}
}

PNG is de standaard. Stel format in op "jpeg" voor een kleinere afbeelding op fotovolle pagina's:

{
  "url": "http://localhost:3000",
  "screenshot": { "format": "jpeg" }
}

De afbeelding komt terug als een standaard MCP-afbeeldingsinhoudsblok, na het overtredingsrapport.

Wat de schermafbeelding laat zien
  • Het zichtbare viewport, niet de volledige pagina. Inhoud onder de vouwlijn is niet inbegrepen. Om meer van de pagina vast te leggen, geef een hoge viewportHeight door (bijv. 4096) zodat het zichtbare gebied de gewenste inhoud dekt.
  • De pagina zoals die onmiddellijk was voordat de scan begon. De vastlegging gebeurt net voor axe.run(), dus wijzigingen in de DOM die tijdens de scan plaatsvinden — SPA-renderingen, useEffect updates, animaties, lopende verzoeken — worden niet weergegeven. Bij single-page apps is deze afwijking gebruikelijk.
caution

Behandel de schermafbeelding niet als de waarheid van wat axe zag. Vanwege de hierboven beschreven timingafwijking kan een element dat in de afbeelding zichtbaar is, niet zijn wat axe beoordeelde. Vraag je agent om zichtbare-maar-niet-gemarkeerde elementen niet te vertellen alsof het scanresultaten zijn — het overtredingsrapport is gezaghebbend.

Kosten en klantondersteuning
tip

Vraag schermafbeeldingen bewust aan. Een afbeeldingsinhoudsblok kost beeldinvoertokens bij de volgende beurt van je agent — ruwweg een orde van grootte meer dan de equivalente tekst. Vraag een schermafbeelding aan wanneer je de pagina daadwerkelijk wilt zien, in plaats van deze aan elke scan toe te voegen.

Of de afbeelding inline wordt weergegeven, hangt af van je MCP-client. De server retourneert altijd een specificatie-valide afbeeldingsblok, maar sommige clients vouwen toolresultaten in of laten beeldvoorbeelden weg — VS Code met Copilot toont het, terwijl Cursor en Claude Desktop dat mogelijk niet doen. Een ontbrekend voorbeeld is een client-side weergavebeperking, geen mislukte vastlegging.

Schermafbeeldingen opslaan op schijf

De schermafbeelding kan ook naar een bestand worden geschreven, wat de betrouwbare manier is om een vastlegging te bekijken in een client die geen inline-afbeeldingen weergeeft. Stel saveTo in op een absoluut pad:

{
  "url": "http://localhost:3000",
  "screenshot": { "saveTo": "/Users/me/Desktop/home.png" }
}

Of stel save: true in om de server de bestandsnaam te laten kiezen:

{
  "url": "http://localhost:3000",
  "screenshot": { "save": true }
}
Veld Type Doel
saveTo string Absoluut pad om de afbeelding naar te schrijven. Als het wijst naar een bestaande map, wordt een gegenereerde bestandsnaam erin geschreven. Impliceert opslaan, dus save is niet nodig erbij.
save boolean Schrijf de afbeelding onder een gegenereerde bestandsnaam in de screenshotmap van de server (AXE_SCREENSHOT_DIR, standaard jouw OS-tempmap). Genegeerd wanneer saveTo is ingesteld.
inline boolean Of de afbeelding ook als een inline blok moet worden toegevoegd (standaard true). Stel false in om de inline-afbeelding over te slaan en alleen het opgeslagen pad terug te geven.

Het absolute pad dat werd geschreven, komt terug in de messages array van de respons, zodat je agent je kan vertellen waar je het bestand kunt vinden.

tip

Combineer een opslaan met inline: false om te voorkomen dat je twee keer voor de afbeelding betaalt. Als je client de inline-afbeelding toch niet kan weergeven, schrijft { "save": true, "inline": false } het bestand en slaat het het afbeeldingsinhoudsblok over — waarmee de beeldinvoertokens worden bespaard die het anders zou kosten bij de volgende beurt van je agent.

inline: false Werkt alleen als de opslag daadwerkelijk slaagt. Als de schrijfactie mislukt, wordt de afbeelding toch inline geretourneerd zodat de vastlegging niet verloren gaat.

important

Onder de Docker-distributie wordt het bestand in de container geschreven. Om het vanaf je host te bereiken, monteer een volume over de doelmap en richt saveTo (of AXE_SCREENSHOT_DIR) op het pad aan de containerzijde. De server detecteert niet of er een mount bestaat — zonder een wordt het bestand geschreven en vervolgens met de container weggegooid.

Opslaan geldt voor alleen succesvolle scans. Als de scan mislukt nadat de schermafbeelding is vastgelegd, wordt de afbeelding inline met de fout geretourneerd ongeacht inline, en wordt nooit op schijf geschreven.

Wanneer vastleggen mislukt

Het maken van schermafbeeldingen is naar beste vermogen en doet nooit een scan mislukken. Als de vastlegging tijd laat worden, retourneert de scan nog steeds zijn resultaten met een notitie in de messages array van de respons:

Screenshot capture failed: <reason>

Als de de scan zelf mislukt nadat de schermafbeelding is gemaakt, wordt de afbeelding toch met de foutantwoord geretourneerd — de visuele staat van de pagina op het moment dat er iets misging is meestal het nuttigste bewijsmateriaal voor foutopsporing dat je hebt.

note

Schermafbeeldingen die je aanvraagt, worden niet naar Deque gestuurd. De afbeelding wordt lokaal vastgelegd en rechtstreeks aan je agent teruggegeven. Dit is los van de volledige paginascreenshot die Geavanceerde Regels uploaden voor serverzijde evaluatie; zie Wat wordt verzonden naar Deque.

Geavanceerde Regels

Naast de standaard axe-core regels kan de analyze tool Geavanceerde Regels uitvoeren — geautomatiseerde tests die gebruik maken van schermafbeeldingen, computer vision en grote taalmodellen om problemen te identificeren die axe-core alleen niet kan oplossen, zoals koppen die alleen op koppen lijken of informatieve afbeeldingen met onnuttige alternatieve tekst.

Welke voorinstelling wordt uitgevoerd, wordt bepaald door de axe-configuratie van je organisatie, en — waar je beheerder dit toestaat — kan per server worden overschreven met AXE_ADVANCED_RULES of per scan met het advancedRules argument:

{
  "url": "http://localhost:3000",
  "advancedRules": "thorough"
}

Elke respons rapporteert de voorinstelling die daadwerkelijk werd uitgevoerd en waar deze vandaan kwam:

{
  "advancedRules": {
    "value": "thorough",
    "source": "tool_arg"
  }
}

Geavanceerde Regels zijn onderdeel van je axe DevTools voor Web-abonnement — hetzelfde abonnement dat de axe MCP Server bevat. Ze voegen ongeveer 15-20 seconden toe aan een scan, verbruiken AI-credits, en dit is de enige situatie waarin analyze paginagegevens (een volledige paginascreenshot plus paginavormgeving) naar Deque stuurt voor evaluatie. Zie Geavanceerde Regels voor presets, prioriteit, degradatieberichten en privacygegevens.

Intelligente Begeleide Tests

De analyze-tool kan ook Deque's Automated Intelligent Guided Tests (IGTs) uitvoeren tegen dezelfde pagina in dezelfde oproep. Geef de optionele igtTools-array door waarin je aangeeft welke IGT's je wilt uitvoeren — de Keyboard IGT is momenteel de ondersteunde waarde:

{
  "url": "http://localhost:3000",
  "igtTools": ["keyboard"]
}

Geef je AI-agent een instructie in natuurlijke taal — de agent vertaalt je intentie in de tooloproep:

Scan http://localhost:3000 for accessibility issues and run the keyboard IGT on it

Elke aangevraagde IGT draait in volgorde na de axe-scan, tegen dezelfde pagina, in dezelfde browser, op dezelfde viewport-breedte. Alles dat de pagina voorbereidt, draait één keer en gaat over in beide: before acties, cookie-injectie, en de viewportparameters.

{
  "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" }
  ]
}
Responsvorm

Het instellen van igtTools verandert de vorm van data. Zonder deze instelling is data de axe-problemen-array. Met deze instelling bevat data axe en igt als gelijkwaardige sleutels, met één igt-invoer per opgevraagde tool:

{
  "pageUrl": "http://localhost:3000",
  "data": {
    "axe": [],
    "igt": {
      "keyboard": {
        "status": "complete",
        "issues": [],
        "igtElements": [],
        "terminatedReason": "keyboard-trap"
      }
    }
  }
}
  • status"complete" of "error". Controleer dit voordat je iets anders leest: issues en igtElements zijn alleen aanwezig bij "complete", en error alleen bij "error".
  • issues — de toegankelijkheidsproblemen die de IGT heeft gevonden. Het aantal problemen is de lengte van deze array.
  • igtElementselke element dat de IGT heeft verwerkt, geen lijst van problemen. Invoeren met analysisFailed: true konden niet door AI worden geanalyseerd en moeten handmatig worden beoordeeld. Elke invoer wordt tot slechts de identificerende velden beperkt: vnodeId, selector, tagName, role, accessibleName, states, en analysisFailed, elk alleen aanwezig als het element het bevat.
  • terminatedReason — aanwezig in de post-interactiestatus wanneer de uitvoering vroegtijdig werd gestopt, wat betekent dat de resultaten gedeeltelijk zijn. "keyboard-trap" betekent dat de test een focusslot tegenkwam waaruit hij niet kon ontsnappen; "insufficient-credits" betekent dat de AI-credits van het account halverwege opgebruikt zijn.
note

Een oproep zonder igtTools is ongewijzigd. data blijft de axe-problemen-array precies zoals voorheen, zodat bestaande prompts, agentinstructies en integraties blijven werken zonder aanpassing.

Mislukkingen zijn geïsoleerd

Een IGT die faalt, zorgt er leest geen voor dat de oproep mislukt en beïnvloedt nooit de axe-resultaten. De mislukking wordt gerapporteerd als de eigen status: "error" van die tool met een bericht, terwijl de axe-resultaten normaal terugkomen — ook wanneer de machine learning-instelling van je organisatie is uitgeschakeld, in welk geval het IGT-gedeelte uitlegt dat machine learning vereist is.

Kredietgebruik

IGT's worden aangedreven door AI en maken deel uit van de AI-Kredietbeheersysteem. Elke uitvoering verbruikt AI-credits van de maandelijkse toewijzing van je organisatie; de axe-scan zelf doet dat niet. Vraag IGT's weloverwogen aan in plaats van ze aan elke scan toe te voegen.

tip

Als je aangepaste agentinstructies de agent vertellen om de stand-alone igt tool aan te roepen, werk ze dan bij om analyze met igtTools te gebruiken in plaats daarvan — één oproep dekt zowel de scan als de IGT en de stand-alone tool is verouderd.

Belangrijke Voordelen

  • Testen in Echte Browser - Test de daadwerkelijk weergegeven pagina, niet alleen de broncode, om accurate resultaten te garanderen
  • Organisatiestandaarden - Neemt de axe configuratie-instellingen van je team in acht voor consistente tests bij alle gebruikers
  • Uitgebreide Dekking - Maakt gebruik van het toonaangevende axe-platform
  • **Responsieve Testen** - Test bij specifieke viewport-afmetingen om toegankelijkheidsproblemen specifiek voor breekpunt te detecteren
  • Gerichte Scans - Beperk een scan tot een specifiek gebied, iframe, of shadow root met de selector parameter
  • Geauthenticeerde & Interactieve Pagina's - Scan pagina's achter een login, sluit cookiebanners, of wacht op dynamische inhoud met behulp van before acties
  • Sessie- en Omgevingscookies - Land al geauthenticeerd, of routeer naar een specifieke omgeving door cookies te injecteren voordat navigatie met de cookies parameter
  • Visuele Context - Retourneer een screenshot van de pagina naast het rapport met de screenshot-parameter, ook als een scan mislukt
  • Geavanceerde Regels - Identificeer problemen die visuele of contextuele redenering vereisen, bij een drempelwaarde die je organisatie beheert
  • Intelligente Begeleide Tests - Voer een IGT uit tegen dezelfde pagina in dezelfde oproep met de igtTools-parameter

Uitvoer

De tool geeft een gestructureerd JSON-antwoord dat het volgende bevat:

  • Alle gevonden toegankelijkheidsovertredingen
  • Overtredingsniveaus (kritiek, ernstig, matig, minder)
  • Specifieke elementselectors en broncode
  • Regel-ID's en beschrijvingen
  • Een advancedRules blok dat de Geavanceerde Regels preset rapporteert die werd uitgevoerd en waar het vandaan kwam
  • Een messages array die eventuele aantekeningen over de uitvoering draagt (bijvoorbeeld een mislukte schermopname, een gedegradeerde geavanceerde regels-uitvoering, of het pad waar een screenshot is opgeslagen)

Wanneer screenshot is ingesteld, volgt een afbeeldingsinhoudsblok het rapport. Wanneer igtTools is ingesteld, worden IGT-resultaten naast de axe-resultaten geretourneerd, gesorteerd op toolnaam.

De remediate Tool

De remediate tool neemt een of meer toegankelijkheidsproblemen geïdentificeerd door de analyze of igt tool en genereert contextbewuste, AI-gestuurde hersteladviezen die coderingsagenten kunnen vertalen in daadwerkelijke codeaanpassingen. Problemen worden als een batch ingediend, zodat één oproep aanpassingen kan retourneren voor elke overtreding die op een pagina is gevonden.

Wat Het Doet

  1. Authenticatie - Valideert de gebruikersinloggegevens—of een API-sleutel of een OAuth 2.0 toegangstoken—om geautoriseerde toegang te waarborgen
  2. AI-krediet Gebruik - Elk probleem in de batch verbruikt AI-credits uit de toewijzing van uw organisatie, waarmee gebruik van geavanceerde AI-modellen mogelijk wordt gemaakt die zijn getraind op ruime toegankelijkheidsexpertise van Deque
  3. **AI-Gegenereerd Herstel** - Creëert hoogwaardige, actiegerichte toegankelijkheidsoplossingen die coderingsagenten kunnen interpreteren en implementeren in de broncode
note

Als de AI-credits uitgeput zijn, werkt de remediate-tool niet meer totdat je credits zijn hersteld (hetzij door meer te kopen of wanneer je maandelijkse cyclus opnieuw begint). De analyze-tool blijft echter functioneren.

Batch Remediation

De tool accepteert een issues array. Dien alle de problemen van een enkele analyze of igt run samen in één oproep in plaats van de tool één keer per probleem aan te roepen — een batch ondersteunt tussen 1 en 25 problemen.

Elk probleem heeft de volgende velden:

Veld Verplicht Beschrijving
id Ja Een door de beller gekozen identificator, uniek binnen de batch (bijv. de regel-ID plus een teller: color-contrast-0). Alleen gebruikt om elk resultaat met de invoer te correleren.
rule Ja De axe regel-ID van de analyze/igt output (bijv. color-contrast, image-alt).
elementHtml Ja Het HTML-fragment van het overtredende element.
remediation Ja Een beschrijving van wat er mis is en wat moet worden gerepareerd, afkomstig uit de samenvatting van het probleem (eventueel verrijkt met de beschrijving, helptekst of AI-redenering).
pageUrl Nee De URL van de pagina die wordt hersteld, van de analyze reactie.

Stimuleer je AI-agent in natuurlijke taal — het stelt de batch samen uit de analyseresultaten:

Analyze http://localhost:3000 and remediate every issue found

De agent lost de prompt op en roept de remediate tool aan met een payload die lijkt op:

{
  "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"
    }
  ]
}

Uitvoer

De tool retourneert een array van resultaten per probleem, elk teruggekoppeld naar zijn invoer door id. Een resultaat heeft een van twee vormen:

  • Successtatus: "ok", met een remediation object dat een algemene beschrijving, de herstelstappen en een concrete code-oplossing bevat
  • Foutstatus: "error", met een error object (code en message) voor een probleem dat niet kon worden hersteld
{
  "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": "..." }
    }
  ]
}

Resultaten zijn onafhankelijk: een mislukking bij een issue blokkeert geen begeleiding voor de anderen.

Kredietgebruik

De remediate tool maakt deel uit van de AI-Kredietbeheersysteem. Elk probleem in een batch verbruikt credits van de maandelijkse toewijzing van uw organisatie. Beheerders kunnen het creditgebruik monitoren via het axe Accountportaal.

De igt Tool

caution

De igt-tool is verouderd. Gebruik in plaats daarvan de analyze-tool's igtTools-parameter — deze voert dezelfde Intelligente Begeleide Tests uit tegen dezelfde pagina in één enkele oproep, naast de axe-scan.

igt blijft volledig functioneel en levert dezelfde resultaten als voorheen, zodat er vandaag niets kapot gaat. Het zal in een toekomstige release worden verwijderd. Als je aangepaste agentinstructies de igt-tool noemen, werk ze dan bij om analyze met igtTools aan te roepen.

De igt-tool voert Deque's Geautomatiseerde Intelligente Begeleide Tests uit tegen een webpagina als een afzonderlijke oproep. Alles wat het doet, doet analyze nu in dezelfde oproep als de toegankelijkheidsscan — zie Intelligente Begeleide Tests voor gebruik en kredietverbruik, die hetzelfde zijn voor beide.

Het resultaatobject per test is ook hetzelfde voor beide — status, issues, igtElements, en een optionele terminatedReason, zoals beschreven in Responsvorm. Alleen de envelop verschilt: igt retourneert zijn resultaten direct onder data, gesorteerd op testnaam (data.keyboard), terwijl analyze ze onder data.igt naast data.axe nest.

Aan de slag

Het instellen van de axe MCP Server omvat drie onafhankelijke keuzes:

  1. Kies een distributie — Docker of npm
  2. Stel authenticatie in — een API-sleutel of OAuth 2.0
  3. Configureer uw clientVS Code met Copilot, Cursor of **Claude Code**

Claude Code-gebruikers kunnen deze stappen overslaan met de axe Toegankelijkheidsplugin, die de server registreert en schuine streep-commando's toevoegt voor instelling, agentinstructies en het uitvoeren van de volledige remediatielus.

Voor omgevingsvariabelen en aanbevolen AI-agentinstructies, zie de Configuratiereferentie. Als er iets misgaat, zie Probleemoplossing.

Voorbeeldprompten

Zorgen dat verwachte tools worden aangeroepen

In veel IDE's zorgt het gebruik van de volgende syntaxis ("#"-voorvoegsel) ervoor dat de axe MCP Server-tools worden aangeroepen zoals verwacht:

#analyze the http://localhost:3033/ web page for accessibility issues and #remediate any violations found

Analyse van een localhost-URL voor toegankelijkheidsproblemen:

Analyze http://localhost:3000 for accessibility issues

Analyse met remediëring:

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

Analyseer een pagina achter een 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.

Verwijder een cookiebanner voordat je scant:

Analyze https://example.com for accessibility issues, but first click the
#cookie-dismiss button to dismiss the cookie consent banner.

Maak een screenshot van de pagina:

Analyze http://localhost:3000 for accessibility issues and capture a screenshot of the page

Scan een pagina met een geïnjecteerde sessiecookie:

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.

Ondersteuning

Voor vragen, problemen of feedback met betrekking tot de axe MCP Server:

Veiligheid & privacy FAQ

Slaat de axe MCP Server onze broncode op?

Nee. De axe MCP-server vangt je broncode niet op en slaat deze niet op in een database of permanente opslag.

Wanneer de analyze-tool wordt uitgevoerd, bevat de respons de HTML-broncode van elementen met toegankelijkheidsproblemen voor context- en foutopsporingsdoeleinden. Deze gegevens worden echter:

  • Worden alleen teruggestuurd in het directe API-antwoord naar uw AI-agent
  • Worden nooit opgeslagen in door Deque beheerde databases
  • Blijven binnen uw lokale ontwikkelomgeving
  • Worden verwijderd nadat de analyse is voltooid

Hoe lang blijven MCP-testresultaten op door Deque beheerde infrastructuur?

Helemaal niet. MCP-testresultaten worden niet bewaard in een door Deque beheerde database of opslag.

De analyze-tool:

  • Draait volledig op uw machine — in een Docker-container, of als een lokaal Node.js-proces met de npm-distributie
  • Stuurt resultaten direct naar uw AI-agent
  • Stuurt geen analyseresultaten naar Deque-servers

Er zijn twee uitzonderingen:

  • De remediate-tool, die minimale overtredingsmetadata kan bevatten (zie hieronder) om door AI aangedreven reparatierichtlijnen te genereren.
  • Geavanceerde regels, wanneer een actieve preset actief is. Geavanceerde regels worden server-side geëvalueerd, dus analyze uploadt een volledige pagina-screenshot en de paginavorming die de regels nodig hebben. Zie Wat er naar Deque wordt verzonden.

Welke gegevens worden naar Deque-servers verzonden?

Alleen bij het gebruik van de remediate-tool:

De volgende gegevens worden naar Deque's AI-herstellingsendpoint gestuurd om hersteladviezen te genereren:

  • Regel ID - De specifieke toegankelijkheidsregel die werd geschonden
  • Element HTML - De HTML-markering van het getroffen element of de elementen
  • Probleemmetadata - Omschrijving van de schending en hersteladviezen van axe-core

Deze gegevens worden uitsluitend gebruikt om hersteladvies te genereren en worden niet langdurig opgeslagen in Deque-databases.

Bij gebruik van Geavanceerde regels:

Geavanceerde regels worden geëvalueerd door de ML- en LLM-diensten van Deque in plaats van in de lokale browser, dus een scan met een actieve preset verzendt:

  • Een volledige pagina-screenshot van de pagina die wordt gescand
  • Paginavorming en berekende stijlen — de evaluatielading die de geavanceerde regels nodig hebben om te redeneren over lay-out, contrast en koppen

Deze vastlegging is onafhankelijk van de optionele analyze-parameter van het screenshot-hulpmiddel: het weglaten van die parameter voorkomt dit niet. Stel de preset voor geavanceerde regels in op disabled — per scan, per server, of organisatiebreed in axe-configuratie — voor pagina's waarvan de inhoud uw omgeving niet mag verlaten.

Anders stuurt het analyze-hulpmiddel geen gegevens naar Deque-servers buiten authenticatieverzoeken (het valideren van uw API-sleutel of OAuth 2.0-toegangstoken) en het ophalen van de configuratie van uw organisatie via axe.

Welk toegangslevel heeft de AI-agent nodig om te functioneren?

De AI-agent (Claude, Copilot, Cursor, etc.) heeft toegang nodig tot:

  1. MCP Server Communicatie - De agent moet in staat zijn om de tools van de MCP-server aan te roepen via het Model Context Protocol

  2. Antwoordgegevens van tools - De agent ontvangt:

    • Toegankelijkheidsschendinggegevens van analyze-oproepen
    • Hersteladviezen van remediate-oproepen
    • Deze gegevens zijn noodzakelijk voor de agent om problemen te begrijpen en codeherstel te genereren
  3. Uw codebasis (optioneel) - Als je wilt dat de agent automatisch codeherstel toepast, heeft het toegang nodig tot je broncodebestanden

  • Dit is standaard voor AI-coderingsassistenten in IDE's (VS Code, Cursor, enz.)
  • Niet vereist als u de tools alleen gebruikt voor analyse en begeleiding (bijv., via Claude Desktop-app)

De MCP-server zelf heeft toegang nodig tot:

  • URL's die u opgeeft voor testen (ondersteunt zowel lokaal als op afstand)
  • Je axe-gegevens: ofwel een API-sleutel (gegenereerd in het axe Accountportaal) of een OAuth 2.0-toegangstoken (verkregen via @deque/axe-auth); verstrekt via omgevingsvariabele

Belangrijk: De MCP-server draait lokaal op je machine — in een Docker-container of als een Node.js-proces met de npm-distributie. Het vereist geen brede toegang tot het besturingssysteem of verhoogde privileges.

Best Practices

  • Inloggegevensbeveiliging - Sla je AXE_API_KEY of AXE_ACCESS_TOKEN op als een omgevingsvariabele, niet in de code. Met OAuth 2.0 houdt @deque/axe-auth tokens in je OS-sleutelhanger en injecteert een nieuwe toegangstoken bij het opstarten, zodat er geen langlevend geheim in je configuratie hoeft te staan
  • Lokale Testen - Test lokale ontwikkelings-URL's (localhost) of staging om gevoelige pre-productiecode geïsoleerd te houden
  • Netwerkisolatie - De MCP-server communiceert alleen met:
    • URL's die je expliciet aanvraagt om te analyseren
    • Deque-servers voor authenticatie (API-sleutel of OAuth 2.0-tokenvalidatie) en herstel (wanneer opgeroepen)
    • Je lokale AI-agent via het MCP-protocol
  • Controleer voor Toepassing - Controleer altijd AI-gegenereerde codewijzigingen voordat je ze naar je codebase commit