Skip to main content
Glama

get_summary

Identify and summarize accessibility issues on any webpage using axe-core. Input the URL to receive a concise report for improving web accessibility and integrating fixes with AI assistants.

Instructions

Get a summary of accessibility issues for a webpage

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the webpage to audit

Implementation Reference

  • The main handler function for the 'get_summary' tool. It validates the input URL, launches a Puppeteer browser, loads the page, runs Axe accessibility checker, computes a summary including total issues, breakdown by severity, top 5 issues, and test counts, then returns it as JSON text content.
    async getSummary(args) { if (!args.url) { throw new McpError( ErrorCode.InvalidParams, 'URL is required' ); } try { const browser = await puppeteer.launch({ headless: 'new', args: ['--no-sandbox', '--disable-setuid-sandbox'], }); const page = await browser.newPage(); // Set a reasonable viewport await page.setViewport({ width: 1280, height: 800 }); // Navigate to the page await page.goto(args.url, { waitUntil: 'networkidle2', timeout: 30000 }); // Run axe on the page const results = await new AxePuppeteer(page).analyze(); // Close the browser await browser.close(); // Create a summary const summary = { url: args.url, timestamp: new Date().toISOString(), totalIssues: results.violations.length, issuesBySeverity: { critical: results.violations.filter(v => v.impact === 'critical').length, serious: results.violations.filter(v => v.impact === 'serious').length, moderate: results.violations.filter(v => v.impact === 'moderate').length, minor: results.violations.filter(v => v.impact === 'minor').length, }, topIssues: results.violations .sort((a, b) => { const impactOrder = { critical: 0, serious: 1, moderate: 2, minor: 3 }; return impactOrder[a.impact] - impactOrder[b.impact]; }) .slice(0, 5) .map(violation => ({ id: violation.id, impact: violation.impact, description: violation.description, helpUrl: violation.helpUrl, })), passedTests: results.passes.length, incompleteTests: results.incomplete.length, }; return { content: [ { type: 'text', text: JSON.stringify(summary, null, 2), }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error getting summary: ${error.message}`, }, ], isError: true, }; } }
  • Input schema definition for the 'get_summary' tool, specifying an object with a required 'url' string property.
    inputSchema: { type: 'object', properties: { url: { type: 'string', description: 'URL of the webpage to audit', }, }, required: ['url'], },
  • src/index.js:66-79 (registration)
    Tool registration in the ListToolsRequestHandler response, defining name, description, and input schema for 'get_summary'.
    { name: 'get_summary', description: 'Get a summary of accessibility issues for a webpage', inputSchema: { type: 'object', properties: { url: { type: 'string', description: 'URL of the webpage to audit', }, }, required: ['url'], }, },
  • src/index.js:87-88 (registration)
    Dispatch registration in the CallToolRequestHandler switch statement, routing calls to the getSummary method.
    case 'get_summary': return this.getSummary(request.params.arguments);

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/priyankark/a11y-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server