返回 MCP 目录
public公开dns本地运行

accessibilitymcp

A11y MCP是一个为LLM提供网页无障碍测试能力的MCP服务器,通过集成Deque Axe-core API和Puppeteer实现WCAG合规性检测

article

README

🚀 网络可访问性测试 MCP 服务器(A11y MCP)

Web 可访问性测试 MCP 服务器(A11y MCP) 是一款用于 Web 应用程序可访问性测试的工具。它支持通过 Model Context Protocol (MCP) 进行交互,基于 @modelcontextprotocol/sdk 搭建,结合 puppeteeraxe-core 等库,提供全面的可访问性测试功能。

smithery badge

🚀 快速开始

Web 可访问性测试 MCP 服务器(A11y MCP)能帮助你对 Web 应用进行可访问性测试。以下将为你介绍安装、配置及使用的相关内容。

✨ 主要特性

核心功能

  • 可访问性测试:借助 axe-core 分析网页内容,检测不符合 WCAG 2.1 级别 AAA 的问题。
  • DOM 操作:利用 Puppeteer 提供的 API 进行元素定位、点击、输入等操作。
  • 报告生成:返回详细的可访问性测试结果,涵盖违规项、通过项和不适用项。

支持的功能

  1. 颜色对比检测:确保文本与背景之间的对比度符合 WCAG 标准。
  2. 表单验证:检查表单元素是否符合可访问性规范,如标签关联、输入提示等。
  3. 屏幕阅读器支持:验证网页内容是否能够被屏幕阅读器正确解析和朗读。
  4. 键盘导航测试:确保用户可以通过键盘完成所有交互操作。

📦 安装指南

依赖项

  • @modelcontextprotocol/sdk
  • puppeteer
  • @axe-core/puppeteer
  • axe-core

安装步骤

  1. 使用 Node.js 包管理器 (npm) 或 yarn 下载所有依赖:
    npm install @modelcontextprotocol/sdk puppeteer @axe-core/puppeteer axe-core
    
  2. 配置环境变量或在代码中指定 Puppeteer 的浏览器执行模式(如 headlessnon-headless)。

💻 使用示例

基础用法

const { createMcpServer } = require('@modelcontextprotocol/sdk');
const puppeteer = require('puppeteer');
const axe = require('axe-core');

// 初始化 Puppeteer 浏览器实例
let browser;
async function initBrowser() {
  browser = await puppeteer.launch({
    headless: true,
    width: 1200,
    height: 800,
  });
}

// 创建 MCP 服务器
const server = createMcpServer({
  async getBrowser() {
    if (!browser) await initBrowser();
    return browser;
  },
});

// 示例测试用例:检测颜色对比
async function testContrast(url) {
  const page = await browser.newPage();
  await page.goto(url);
  const result = await axe.run(page);
  return result;
}

// 启动服务器并开始测试
server.start(3000);

📚 详细文档

响应格式

MCP 服务器返回的可访问性测试结果采用 JSON 格式:

{
  "violations": [
    {
      "id": "color-contrast",
      "impact": "serious",
      "description": "确保文本与背景之间的对比度符合 WCAG 2 AA 最低要求。",
      "help": "元素必须满足最低颜色对比度阈值。",
      "helpUrl": "https://dequeuniversity.com/rules/axe/4.10/color-contrast",
      "affectedNodes": [
        {
          "html": "<div style=\"color: #aaa; background-color: #eee;\">低对比度文本</div>",
          "target": ["div"],
          "failureSummary": "修复以下任一问题:元素的对比度为 1.98(前景色:#aaa,背景色:#eee,字体大小:12.0pt,字体重量:正常)未达到最低要求。"
        }
      ]
    }
  ],
  "passes": 1,
  "incomplete": 0,
  "inapplicable": 2,
  "timestamp": "2025-04-25T16:45:33.655Z",
  "url": "about:blank",
  "testEngine": {
    "name": "axe-core",
    "version": "4.10.3"
  },
  "testRunner": {
    "name": "axe"
  },
  "testEnvironment": {
    "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/135.0.0.0 Safari/537.36",
    "width": 1200,
    "height": 800
  }
}

其他资源

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端