A11Y Toolkit について
A11Y Toolkit は、コーディングエージェント向けの WCAG 2.2 アクセシビリティツールキットで、MCP サーバーと CLI を提供します。監査、操作テスト、証拠整理、レポート作成を行い、人による確認が必要な基準も明示します。
主な機能
- 01WCAG 2.2 のウェブ・文書監査
- 02キーボード・フォーム・リフローテスト
- 03コントラスト検査と自動修正
- 04アクセシビリティ宣言と VPAT レポート
- 05スナップショット差分と証拠パック
- 06スクリーンリーダー記録とブラインドテスト
活用シーン
- 01デプロイ前のアクセシビリティ回帰確認
- 02PDF と DOCX のスクリーニング
- 03テキスト用の適合色の選定
- 04人が署名する監査証拠の準備
MCP 対応
MCP サーバーとして 32 個のツールと 6 個のプロンプトを公開し、アクセシビリティ監査、修正、文書作成、回帰確認に利用できます。Agent skill も提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
24掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | いいえ | 取得して監査する URL |
| html | string | いいえ | 直接監査する raw HTML(url より優先) |
| lang | enum | いいえ | 出力言語(デフォルト en)es | en |
| pages | integer | いいえ | 同一ドメインを軽量にクロールし、最大 N ページを監査して、スコアと繰り返し検出される項目を集計します(デフォルト 1、最大 20) |
| timeout | number | いいえ | 取得タイムアウト(秒)(デフォルト 30) |
詳細
a11y-toolkit — AI コーディングエージェントのためのアクセシビリティレイヤー
コーディングエージェントに WCAG 2.2 を — 監査、修正、文書化、監視。依存関係ゼロ、スペイン語/英語対応。
WCAG 2.2 のサイクル全体をカバーする 32 個の MCP ツール、6 個のプロンプト、1 つのスキルを提供します。監査、修正、文書化、監視、引き継ぎに加え、スクリーンリーダーが公開する情報だけを認識してエージェントが実際のタスクに挑む、目隠しユーザビリティテストにも対応しています。55 項目の A/AA 基準のうち 51 項目に自動シグナルがあり(93%)、すべての検出結果にエージェントが適用できる具体的な修正方法が付属します。また、レンダリングツールは Chromium、Firefox、WebKit、Chrome、Edge など、お使いのブラウザーで動作します。
欧州アクセシビリティ法は 2025 年 6 月に施行され、ADA 訴訟は後を絶たず、AI エージェントが今やウェブの大半を作成しています。スキャンだけでは防御になりません。機械が検出し、人間が署名します。
クイックスタート
# MCP — one line, any MCP client (Claude, Cursor, Codex, Windsurf, …)
claude mcp add a11y-toolkit -- uvx --from a11y-toolkit a11y-toolkit-mcp
# CLI — same engine, one command
pip install a11y-toolkit
a11ytoolkit audit --url https://example.com
a11ytoolkit pair "#1f2328" "#fbfaf7"
静的監査、コントラスト計算、PDF/DOCX のスクリーニング、証拠パックは、依存関係ゼロで実行できます。レンダリングツール(画像上の実際のコントラスト、キーボードトラップ、リフロー、フォーム)には、追加で Playwright が必要です。
pip install playwright && playwright install chromium
機能
| 機能 | axe-core / Lighthouse / pa11y | a11y-toolkit |
|---|---|---|
| 画像やグラデーション上のテキストコントラスト(実際の背景をピクセル単位でサンプリング) | いいえ | はい |
| 証拠パックから VPAT 2.5(WCAG)草案を作成 — EAA 準拠声明に相当する米国/ADA 向け文書 | いいえ | はい |
| フォームのエラーテスト:無効なデータを入力して実際に送信し、結果を判定 | いいえ | はい |
| キーボードトラップ:実際の Tab 移動と Escape による解除テストに加え、フォーカス/入力をトリガーとするナビゲーションも検査 | いいえ | はい |
| 無限スクロールの監査:フォーカスの維持、お知らせ、フィードの終端 | いいえ | はい |
| 320px でのリフローと WCAG のテキスト間隔上書きを測定 | いいえ | はい |
| スクリーンリーダーの読み上げ内容:視覚障害のあるユーザーが聞く内容を線形化 | いいえ | はい |
| 実際にホバーして検出する、Escape を無視するツールチップ(1.4.13) | いいえ | はい |
| EAA/RD 1112/2018 に関する法的声明をスペイン語と英語で作成 | いいえ | はい |
| 人間が署名できる証拠パック — ハッシュ、マトリックス、空の署名欄 | いいえ | はい |
| ACT ルールとの相互運用:EARL エクスポートと、W3C 公式テストケースに対するルールごとの一貫性レポート | いいえ | はい |
| WCAG 3 草案のプレビュー — 2.2 の検出結果を草案の成果に沿って再分類し、架空のスコアは表示しない | いいえ | はい |
| コアは依存関係ゼロで動作し、スペイン語/英語に対応。お使いのブラウザーで利用可能 | 大規模なランタイムが必要 | 依存関係ゼロ |
ツール(32)
説明、引数、戻り値の形式、動作の詳細については、docs/tools.md を参照してください。特に記載がない限り、すべてのツールで lang(en|es)を指定でき、出力は JSON です。scripts/gen_readme.py によって server.TOOLS から生成されています。
| ツール | カテゴリ | 機能 |
|---|---|---|
a11y_audit_url | 監査 | WCAG の簡易監査 |
a11y_audit_dom | 監査 | レンダリング済みページの WCAG 監査 |
a11y_audit_pdf | 監査 | PDF のアクセシビリティスクリーニング |
a11y_docx_screen | 監査 | DOCX のアクセシビリティスクリーニング |
a11y_journey_verdict | ブラインドフォールドテスト | ブラインドフォールドでの操作に関する判定 |
a11y_autofix | 修正とコントラスト | 安全な自動修正を決定論的に実施 |
a11y_contrast_pair | 修正とコントラスト | コントラスト比と判定 |
a11y_contrast_image | 修正とコントラスト | 画像上のテキストのコントラスト |
a11y_contrast_dom | 修正とコントラスト | ライブ要素のコントラストをサンプリング |
a11y_suggest_color | 修正とコントラスト | 基準を満たす最も近い色 |
a11y_generate_declaration | ドキュメント | アクセシビリティ声明(EAA/RD 1112) |
a11y_generate_vpat | ドキュメント | VPAT 2.5 レポート(WCAG 版) |
a11y_badge | ドキュメント | 誠実な SVG バッジ |
a11y_snapshot | 監視(リグレッション) | アクセシビリティスナップショットとタブ順序 |
a11y_diff | 監視(リグレッション) | スナップショットのリグレッション差分 |
a11y_diff_urls | 監視(リグレッション) | ステージング環境と本番環境の差分 |
a11y_aria_live_snippet | 監視(リグレッション) | aria-live モニターのスニペット |
a11y_criterion | 知識とコンテキスト | WCAG の達成基準を解説 |
a11y_html_validate | 知識とコンテキスト | W3C Nu による検証 |
a11y_keyboard | インタラクション | キーボードトラップ検出 |
a11y_forms | インタラクション | フォームエラーのテスト |
a11y_hover | インタラクション | ホバーの解除可能性(1.4.13) |
a11y_reflow | インタラクション | 320px でのリフローチェック |
a11y_scroll | インタラクション | 無限スクロールの監査 |
a11y_sr_transcript | インタラクション | スクリーンリーダーのトランスクリプト |
a11y_reduced_motion | インタラクション | prefers-reduced-motion が尊重されているか |
a11y_forced_colors | インタラクション | forced-colors での表示維持を判定するヒューリスティック |
a11y_vtt_check | インタラクション | WebVTT 字幕の品質 |
a11y_evidence | カバレッジと証拠 | 証拠パック(検証可能な引き継ぎ) |
a11y_disprove | カバレッジと証拠 | 反証ツール:指摘事項を再検証 |
a11y_ledger | カバレッジと証拠 | カバレッジ台帳(永続化) |
a11y_wcag3_preview | カバレッジと証拠 | WCAG 3 ドラフトのプレビュー(スコアなし) |
6 つのプロンプト
-
audit-page(url*、language):URL のアクセシビリティ監査ワークフロー全体を実行します。自動ツールに加え、手動で確認すべき項目(キーボード、スクリーンリーダー、ズーム)も含まれます。すべてのプロンプトは英語とスペイン語に対応しています。 -
fix-contrast(fg*、bg*、context):コントラストを改善するためのガイド付き手順です。色の組み合わせ(または画像上のテキスト領域)を検証し、基準を満たす最も近い色を取得して、コードに適用します。すべてのプロンプトは英語とスペイン語に対応しています。 -
pre-deploy-check(url*、baseline):デプロイ前の回帰チェックです。URL の簡易監査と、ベースラインのスナップショットとの差分確認を行います。すべてのプロンプトは英語とスペイン語に対応しています。 -
declaration-eaa(entity*、url*、status):欧州アクセシビリティ法(European Accessibility Act)/RD 1112/2018 に準拠したアクセシビリティ声明を生成し、不足している法的項目があればユーザーに確認します。すべてのプロンプトは英語とスペイン語に対応しています。 -
conformance-wcagem(url*、tier、language):サイトの WCAG-EM 適合性を段階的に評価します。簡易スクリーニングから、代表的なサンプルに対するエージェント検証付きのガイド付き評価を経て、適合性レポートの入力項目までを扱います。すべてのプロンプトは英語とスペイン語に対応しています。 -
blindfold-task(url*、goal*、kind、language):ブラインドフォールドユーザビリティテストです。エージェントはアクセシビリティツリーだけを認識し、アクセシブルネームとキーボードだけで操作して、実際のタスクに取り組みます。各ステップでつまずいた点を記録し、最後に a11y_journey_verdict で締めくくります。他のアクセシビリティツールにはない機能です。エージェント自身がスクリーンリーダーのユーザーとなり、タスクベースの非視覚テストを行います。すべてのプロンプトは英語とスペイン語に対応しています。
インストール
mcp-name: io.github.kinti/a11y-toolkit · PyPI: a11y-toolkit · Zenodo DOI:
10.5281/zenodo.22843722
あらゆる MCP 対応クライアントで動作します — Claude Code/Desktop、Cursor、Windsurf、VS Code、 Codex CLI、OpenCode、ZCode、Zed、Cline、Continue、Kimi Code… 検証済みの設定形式はすべて docs/clients.md をご覧ください。
claude mcp add a11y-toolkit -- uvx --from a11y-toolkit a11y-toolkit-mcp
JSON 設定を使うこともできます:
{
"mcpServers": {
"a11y-toolkit": {
"command": "uvx",
"args": ["--from", "a11y-toolkit", "a11y-toolkit-mcp"],
"timeoutMs": 60000
}
}
}
レンダリングを伴うツールは、Playwright が利用可能な場合に使用し、browser パラメーター(auto、chromium、firefox、webkit、chrome、msedge — 利用可能なものを最初に自動検出)を受け付けます。ログインが必要な環境を監査する場合は、auth_state(Playwright の storage_state パス)を指定できます。
それ以外の機能は依存関係なしで動作します。
スキル
git clone https://github.com/kinti/a11y-toolkit && cd a11y-toolkit
./skill/install-skill.sh # → ~/.zcode/skills and ~/.claude/skills
エージェントフック — a11ytoolkit init
AGENTS.md を自分で読み込むエージェントは、重要なルール — UI を変更した後は、作業完了とする前に再監査する — を、正確なコマンドとともに取得できます:
cd your-project
uvx --from a11y-toolkit a11ytoolkit init # writes/merges the AGENTS.md hook (idempotent)
MCP の設定ブロックと、任意のスキルのインストール手順も出力されます。
--check はフックが存在するかどうかを報告します(存在しない場合は終了コード 1 を返すため、CI で利用できます)。
言語 — コミュニティのロケールパック
ユーザー向けのメッセージ(検出結果、修正方法、法的な文言)はすべて
ロケールパックに収録されています。言語ごとに JSON ファイルがあり、現在は es と en が同梱されています。言語の追加は 1 ファイルだけの PR で行えます。_template.json をコピーして、{placeholders} を維持しながら翻訳し、python3 tests/test_locales.py を実行すれば、キー、プレースホルダー、複数形ルール、完全性が機械的に検証されます。axe-core のロケールと同じコミュニティモデルですが、axe-core にはない検証機能を備えています。ガイド:
docs/i18n.md。下流の製品では、フォークせずにオーバーレイを使ってブランド独自の文言を重ねられます。
CLI — 同じエンジンを 1 つのコマンドで
pip install a11y-toolkit(または uv tool install a11y-toolkit)でインストールしてください。
a11ytoolkit audit --changed # ONLY what changed since HEAD (CI gate)
a11ytoolkit audit --changed --base origin/main # a branch's changes — exit 2 on high/medium
a11ytoolkit audit --url https://example.com --pages 5 # sitemap-first crawl
a11ytoolkit pair "#1f2328" "#fbfaf7" # contrast
a11ytoolkit image hero.jpg --text "#fff" --region 120,40,420,90
a11ytoolkit forms https://mysite/contact # form errors
a11ytoolkit kbd https://mysite # keyboard traps + 3.2.1/3.2.2
a11ytoolkit reflow https://mysite # 320px reflow
a11ytoolkit scroll https://medium.com/feed # infinite scroll
a11ytoolkit validate --url https://example.com # W3C Nu
a11ytoolkit hover https://mysite # tooltip dismissibility
a11ytoolkit fix --file page.html -o fixed.html # safe autofix
a11ytoolkit declaration --entity "Acme" --url https://… --status partial --framework eaa
a11ytoolkit snapshot https://mysite --out before.json # before deploy
a11ytoolkit diff before.json after.json # after deploy
a11ytoolkit evidence audit.json -o pack.json # verifiable evidence pack
a11ytoolkit disprove --url https://mysite # re-verify findings
a11ytoolkit budget --budget budget.json --audit audit.json # only NEW findings block
a11ytoolkit sarif --from-audit audit.json -o a11y.sarif # GitHub code scanning
a11ytoolkit badge --score 92 --out badge.svg # honest SVG
a11ytoolkit contrast-dom https://mysite --selector ".hero h1" # auto-region pixel sampling
a11ytoolkit vpat pack.json --product "Acme" -o vpat.html # VPAT 2.5 (WCAG) draft
a11ytoolkit earl --from-audit audit.json -o earl.json # ACT Rules / EARL export
a11ytoolkit wcag3 --from-audit audit.json # WCAG 3 draft preview (no score)
カバレッジ:WCAG 2.2 A/AA の55基準中51基準(93%)
| 自動シグナルあり | 手動のみ(真に人間による確認が必要) |
|---|---|
| 1.1.1、1.2.2、1.2.3、1.2.5、1.3.1–1.3.5、1.4.1–1.4.5、1.4.10–1.4.13、2.1.1、2.1.2、2.1.4、2.2.1、2.2.2、2.4.1–2.4.7、2.4.11、2.5.1–2.5.4、2.5.7、2.5.8、3.1.1、3.1.2、3.2.1–3.2.4、3.2.6、3.3.1–3.3.4、3.3.8、4.1.2、4.1.3 | 1.2.1(音声の文字起こし)、1.2.4(ライブキャプション)、2.3.1(点滅の検出)、3.3.7(重複入力) |
手動のみの4基準には、それぞれナレッジ項目(a11y_criterion)があり、手作業での確認方法をエージェントに具体的に伝えます。この境界はすべてのレポートに記載されます。
a11y.es を支えるエンジン
a11y.es は、このエンジンを稼働させるスペイン市場向けのアクセシビリティサービスです。このサービスは別のコードベースであり、このリポジトリはエンジンです。
実際のページで検証済み
実際のページで axe-core 4.10 と比較し、毎月ベンチマークを実施しています(方法と結果)。実際のサイトを対象としたタスクベースのエージェントベンチマークも実施しており、スペインで特に重要なページを層化抽出して含めています(方法と結果)。axe が報告しない gov.uk の実際の WCAG 違反を発見しました(青いボタンのコントラスト比は3.91:1で、手動確認済み)。また、独自の誤検出(非表示のスキップリンク、ハニーポットフィールド、単一コンテキストの汎用リンク、画像の alt の accname)を解消し、それぞれ回帰テスト用フィクスチャを用意しました。
さらに、W3C の公式 ACT テストケースでも実行しています。scripts/act_report.py により、EARL 実装レポートを再生成できます。— 実装している公開済み ACT ルールすべてと100%一致しています(公式テストケース355件、ルール20件中20件で不整合ゼロ。w3c/wcag-act-rules リポジトリを基にリリースごとに検証。ルール別の内訳はdocs/act-report-summary.mdを参照してください)。WCAG 2.2 カタログ(A/AA/AAA の86基準)と WCAG 3 のアウトカムレジストリも、正規の w3.org ソースを基に検証しています(scripts/wcag22_ingest.py、scripts/wcag3_ingest.py)。
これを作った理由
私は2003年からウェブサイトのアクセシビリティ監査を行っています。20年の間にツールは高速化しましたが、問題は変わりませんでした。同じ代替テキストの欠落、同じキーボードトラップ、同じく入力内容を消してしまうフォームです。AI エージェントがウェブの大半を書き始めたとき、監査のギャップは人員配置の問題ではなく、インフラの問題になりました。
そこで、監査のときにいつも手元にあってほしいと思っていたツールを作りました。単なるスキャナーではありません。スキャナーはすでにあります。作業の半分をこなし、どこまで対応できるかを正確に示し、残りを承認者に引き継ぐためにまとめるツールキットです。上で触れた gov.uk の違反は、人工的なベンチマーク用の事例ではありません。このエンジンが見つけ、私自身の目で確認してから記録しました。
午後の作業がひとつ省けたなら、スターを付けてください。次の監査担当者に見つけてもらう助けになります。役に立たなかった場合は、イシューを作成して不足している点を教えてください。
誠実さを組み込んでいます
すべての監査で、A/AA の55基準のうち93%を自動化でカバーできる(AAA と真に人間による確認が必要な項目を含めた、WCAG 全体のおよそ3分の1)— 残りには人間による確認が必要です。
audit-page プロンプトとスキルでは、手動確認チェックリストを使い、エージェントが確認可能な項目(キーボード、フォーカス、ズーム、通知されるエラー)をチェックします。これはフィルターであり、判定ではありません。残りの人手による作業は基準ごとに見積もられています — MIN 23(読み取って確認)、MED 19(ブラウザーで検証)、MAX 13(実際に操作して判断)。全表。また、エビデンスパックは承認者への引き継ぎ資料であり、スクリーンリーダーの文字起こしも含まれます。これにより、レビュー担当者は目の見えないユーザーに何が聞こえるかを確認できます。
セキュリティとスコープ
ローカルツールです。お使いのマシン上で、ユーザーとして実行されます。a11y_audit_url は http/https のみ受け付けます(file:// は不可です。ローカル HTML には --file/html を使用してください)。a11y_html_validate は html モードではコンテンツを W3C サービスに POST します(url モードでは URL のみを共有します。セルフホスト版の vnu にも対応しています)。path/output_path はローカルパスを読み書きするため、信頼できる MCP クライアントで使用してください。
開発
python3 tests/test_contrast.py && python3 tests/test_audit.py && python3 tests/test_v32.py \
&& python3 tests/test_dom.py && python3 tests/test_cli.py && python3 tests/test_solido.py \
&& python3 tests/test_mcp.py && python3 tests/test_png.py && python3 tests/test_vpat.py \
&& python3 tests/test_act.py
Playwright がない場合、tests/test_dom.py は自動的にスキップされます。tests/test_solido.py は設計上の不変条件(カタログの整合性、バージョンの一致、件数の網羅性、悪意ある HTML に対するファジング)を検証します。リリースは make release V=X.Y.Z で行います。バージョン更新、ゲートの通過、タグ付け、プッシュを一括で実行します。
ロードマップ
最近完了した項目:シャドウ DOM と状態コントラストを含むレンダリング監査、フォームエラーのテストと自動修正、キーボードトラップ、無限スクロール、リフロー、W3C Nu との統合、SARIF とエラーバジェット、エビデンスパック(仕様公開済み、自己検証機能付き)、サイトマップのクロール、ログインが必要なページの監査、ブラウザーの自動検出、スクリーンリーダーの文字起こし、基準ごとの作業コストの見積もりです。全履歴は変更履歴にあります。
次の項目を、おおむね以下の順で進めます。
- 認証インターロック:外部監査人の署名が、ハッシュでエビデンスパックを参照できるようにします(スキーマは監査人側のものを使用し、こちらで適応します)
- 実際のページを対象に CI で実行した axe-core の月次ベンチマーク結果を公開します
- NVDA と VoiceOver の出力に照らして、スクリーンリーダーの文字起こしを相互確認します
- 検証済みクライアント設定をさらに追加します(JetBrains AI、Gemini CLI)。docs/clients.mdと同じ方法で対応します
作者
Jesús Quintana Fernández(jquin.net)— 2003 年から SEO/GEO コンサルタントおよびウェブアクセシビリティの実務家として活動しています。MIT © 2026。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。