Ara — audits d'accessibilité RGAA について
Ara — audits d'accessibilité RGAAは、フランス政府のAraでアクセシビリティ監査を管理するコミュニティ製MCPサーバーです。RGAA 4.1を内蔵し、ソース確認だけでは判断できない判定には根拠の提示を求めます。
主な機能
- 01監査の作成、編集、公開、エクスポート
- 02RGAA 4.1の基準とテストを参照
- 03進捗確認と再テストの比較
- 04指定された判定で根拠を必須化
- 05ローカルログインまたは環境変数で認証
活用シーン
- 01MCPクライアントからAraの監査を実施
- 02監査を複製して修正後に再テスト
- 03初回監査と再テストの結果を比較
- 04監査結果をCSVでエクスポート
MCP 対応
Araの監査操作、RGAA基準の参照、結果のエクスポートを行う17個のツールをMCPクライアントに提供します。Ara APIを利用する非公式のサードパーティークライアントです。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y ara-rgaa-mcpARA_AUTH_TOKENシークレットJeton JWT Ara. Voie recommandée : elle évite d'écrire un mot de passe en clair dans la configuration.ARA_USERNAMEAdresse e-mail du compte Ara, utilisée pour l'authentification au démarrage si ARA_AUTH_TOKEN n'est pas fourni.ARA_PASSWORDシークレットMot de passe du compte Ara, utilisé avec ARA_USERNAME. Préférer ARA_AUTH_TOKEN.ARA_BASE_URLURL de base de l'API Ara. Par défaut https://ara.numerique.gouv.fr/api ; à changer uniquement pour viser une instance Ara auto-hébergée.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
17掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| topic | number | いいえ | この RGAA トピック(1~13)のみを対象にします |
| auditType | enum | いいえ | この Ara 監査タイプの対象となる基準のみを対象にしますFULL | FAST | COMPLEMENTARY |
詳細
Ara MCP Server — IA による RGAA 監査
Ara プラットフォームの RGAA アクセシビリティ監査に対する CRUD 操作を公開するサーバーです。Claude Code、Codex、または互換性のある MCP クライアントから、ブラウザーで手動ログインすることなく Ara の監査をすべて実行できます。
コミュニティプロジェクトであり、公式プロジェクトではありません。 このサーバーは、DINUM のアクセシビリティ監査サービスである Ara の API を利用するサードパーティ製クライアントです。DINUM が公開または保守しているものではありません。
English — フランス政府の RGAA 4.1 アクセシビリティ監査プラットフォームである Ara 用の MCP サーバーです。あらゆる MCP クライアントからアクセシビリティ監査の作成、入力、公開、エクスポートを行うための 17 個のツールを公開します。ara.numerique.gouv.fr のアカウントが必要です。RGAA の対象読者に合わせ、ドキュメントはフランス語です。非公式のコミュニティプロジェクトです。
インストール
1. 1 度だけログインします:
npx ara-rgaa-mcp login
ご自身のコンピューターのブラウザーでページが開きます。Ara の認証情報を入力すると、トークンが権限 600 で ~/.config/ara-rgaa-mcp/credentials.json に保存されます。パスワードは保存されません。
2. 構成にシークレットを含めずにサーバーを登録します:
{
"mcpServers": {
"ara-rgaa": {
"command": "npx",
"args": ["-y", "ara-rgaa-mcp"]
}
}
}
前提条件:Node.js ≥ 18、および ara.numerique.gouv.fr のアカウント。
Claude Code の場合、ファイルは ~/.claude/claude_desktop_config.json です。Codex または Cursor の場合は、それぞれの MCP 設定で同じ形式を使用します。
トークンは自動的に更新されます。 Ara のトークンの有効期間は 24 時間ですが、サーバーは起動のたびに新しいトークンを要求します。定期的に使用していれば、再ログインは必要ありません。24 時間以上使用しなかった場合は、サーバーから login を再実行するよう通知されます。
| コマンド | |
|---|---|
npx ara-rgaa-mcp login | ログインしてトークンを保存する |
npx ara-rgaa-mcp status | アカウント、インスタンス、トークンの経過時間を確認する |
npx ara-rgaa-mcp logout | 保存したトークンを削除する |
ログインページのセキュリティ
認証情報を求めるローカルページはフィッシングに見える可能性があるため、サーバーでは 4 つの対策を講じています。
127.0.0.1のみで待ち受け、ネットワークインターフェースでは待ち受けません。- URL にはランダムなトークンが含まれており、ほかのローカルページから推測することはできません。ほかのアドレスにはすべて 404 を返します。
- 1 回限りの使用です。ログインに成功すると、サーバーは直ちに停止します。
- 正確な URL がターミナルに表示されます。情報を入力する前に、ブラウザーに表示された URL と照合してください。
パスワードはブラウザーからこのローカルプロセスへ、そして ara.numerique.gouv.fr へ送信されるだけです。どこにも書き込まれません。
コマンドを自分で実行していない場合は、ページを閉じてください。
自動化やブラウザーを使用できない環境向けの、login の代替手段です。
| 変数 | デフォルト | 説明 |
|---|---|---|
ARA_AUTH_TOKEN | — | JWT トークン。⚠️ 有効期限は24時間です |
ARA_USERNAME | — | メールアドレス。起動時の認証に使用します |
ARA_PASSWORD | — | パスワード。起動時の認証に使用します |
ARA_BASE_URL | https://ara.numerique.gouv.fr/api | Ara API のベース URL |
認証情報をツールのパラメーターとして受け取ることはありません。 ツールのパラメーターはモデルのコンテキストを経由し、会話のトランスクリプトに保存されるためです。そのため、認証情報はプロセスの環境変数または login が書き込んだファイルからのみ読み取ります。
⚠️
ARA_AUTH_TOKENの有効期限は24時間です。 Ara のトークンはexpiresIn: "24h"で署名されるため、手動で貼り付けたトークンは翌日には使えなくなります。トークンを更新できる自動連携の場合にのみ使用してください。日常的な使用には、上記のloginを使用するか、ARA_USERNAME/ARA_PASSWORDを使用してください。ただし、後者では設定ファイルにパスワードを平文で書き込む必要があります。
auth_refresh ツールは、トークンの有効期限が切れた場合に、セッション中の認証を再実行します。
ツール
各ツールには、MCP クライアントが機密性の高い操作の前に確認を求められるようにするアノテーション(readOnlyHint、destructiveHint、idempotentHint)が付いています。
| ツール | 種類 | 説明 |
|---|---|---|
get_audit_method | 📖 リファレンス | 作業計画:各基準で必要なこと |
list_rgaa_criteria | 📖 リファレンス | RGAA 基準の一覧(番号+名称)。フィルタリング可能 |
get_rgaa_criterion | 📖 リファレンス | 1つの基準、そのテスト、確認に必要なこと |
auth_refresh | ↻ | 環境変数を使って認証を再実行します |
create_audit | ✚ 追加 | 新しい監査を作成します |
duplicate_audit | ✚ 追加 | 再テスト用に監査を複製します。監査票も含みます(複製元は変更されません) |
get_audit | 🔒 読み取り専用 | 監査の全情報を取得します |
get_audit_progress | 🔒 読み取り専用 | 進捗状況:ページごとの未評価項目 |
compare_audits | 🔒 読み取り専用 | 再テスト:前後の適合率、変更された基準と結果 |
get_audit_results | 🔒 読み取り専用 | 基準の結果。ページとステータスでフィルタリング可能 |
get_report | 🔒 読み取り専用 | 適合率を含む完全なレポート |
export_csv | 🔒 読み取り専用 | 結果を CSV にエクスポートします |
update_audit | ⚠️ 破壊的 | 全項目を更新します — メタデータを置き換えます |
patch_audit_notes | ⚠️ 破壊的 | 監査メモを置き換えます |
update_audit_results | ⚠️ 破壊的 | 対象の基準の評価を置き換えます |
update_statement | ⚠️ 破壊的 | アクセシビリティ宣言を置き換えて公開します |
publish_audit | ⚠️ 破壊的 | 監査を公開します — 元に戻せません(以下を参照) |
delete_audit | ⚠️ 破壊的 | 削除します(以降は410)— 非公開にはなりません |
修正後の再テスト
推奨されるサイクルは、初回監査、修正、監査の複製、該当する基準の再テスト、複製からの報告です。
duplicate_auditは監査票を複製します。 Ara の監査を複製すると、依頼者、監査組織、URL、連絡先、テクノロジー、ツールは空欄になります(API で確認済み)。サーバーはこれらを複製元から引き継ぎ、ページは複製元の順序を維持します。Ara の監査票の複製だけにする場合はcopyMetadata: falseを指定してください。この2段階目が失敗しても、複製自体は作成されています。識別子は警告とともに返されます。update_auditは、送信された配列の順序でページに番号を付け直します。order(get_auditで取得した値)で並べ替えたページを再送信してください。そうしないと、レポートでサンプルの順序が入れ替わります。compare_auditsは初回監査とその複製を比較します。ページは名前と URL で照合されます。Ara のルールに基づいて算出された各監査の適合率(ページのいずれかで不適合なら不適合、少なくとも1ページで適合し、不適合がない場合は適合、適合率 = 適合 / 適用可能)と、ステータスが変わった基準、およびページごとの遷移(NC→C、C→NC…)を返します。
結果の分割送信
update_audit_results は結果を20件ずつ Ara に送信します(batchSize は1~100)。すべての結果を単独で送信すれば受け付けられるパケットでも、Ara が500を返すことがあります(テーマ10および12の結果が23~36件のパケットで確認)。その場合、サーバーは結果が1件になるまでパケットを二分します。
- Ara が受け付けた結果は登録されます。
- 単独でも Ara が拒否する結果は
echecsに一覧表示されます。 - 4xx エラーが発生すると送信は停止し、すでに登録された結果の件数が示されます。
送信のたびに対象の評価が置き換えられるため、パケットを再送信しても副作用はありません。
同梱の RGAA リファレンス
サーバーには RGAA 4.1 の全リファレンス(13のテーマ、106の基準、および各基準のテスト)が同梱されています。これがなければ、エージェントは評価対象を把握できず、番号(topic: 6, criterium: 1)だけを扱うことになります。
list_rgaa_criteria(auditType: "FAST") → les 25 critères de l'audit rapide (~5 Ko)
get_rgaa_criterion(topic: 6, criterium: 1)
→ « Chaque lien est-il explicite (hors cas particuliers) ? » + ses 5 tests (~2 Ko)
監査中に推奨される手順は、get_rgaa_criterion で基準とそのテストを確認し、続いて update_audit_results で判定を入力することです。推測するのではなく、判断してください。
データは Ara プロジェクトの rgaa.json に由来し、DINUM によって Licence Ouverte 2.0 のもとで公開されています。データはパッケージに同梱されているため、リファレンス部分はネットワークに接続せずオフラインで動作します。再生成するには node scripts/build-rgaa-data.mjs を実行してください。
注:監査タイプ
FASTとCOMPLEMENTARYはそれぞれ25の基準を対象とし、互いに重複しません。完全な方法論(簡易+補完)では50の基準を対象とします。
ソースコードだけでは不十分です
RGAAの106項目のうち、HTMLを読むだけで判定できるのは40項目だけです。簡易監査の25項目では6項目にとどまります。残りの項目には、レンダリング後のページ、実際のキーボード操作、アクセシビリティツリー、または編集上の判断が必要です。
これがAIを活用した監査の落とし穴です。エージェントがマークアップを読み、もっともらしい答えを見つけ、根拠のない監査結果を埋めてしまいます。これを防ぐ仕組みが3つあります。
get_audit_method(auditType) — 作業を始める前の手順です。どの項目にソース、レンダリング、キーボード操作、読み上げ、判断が必要かを確認できます。
get_rgaa_criterion は各項目に verification ブロックを付与します。ここには sourceSuffit、必要なもの、検証方法が含まれます。
update_audit_results は根拠のない判定を拒否します。 追加の検証が必要な項目について、該当する evidence フィールドを入力せずに適合または不適合と判定すると、明示的なエラーが発生します。
Verdict refusé sur 1 critère(s) : le code source ne suffit pas à les trancher,
et la vérification correspondante n'a pas été déclarée.
10.7 — exige : clavier (…) ; rendu (…)
Effectuez réellement ces vérifications, puis renseignez le champ "evidence".
Si vous ne pouvez pas les faire, utilisez le statut NOT_TESTED plutôt qu'un
verdict non fondé.
NOT_TESTED と NOT_APPLICABLE は、何も断定しないため、この制限の対象外です。また、evidence は自己申告です。エージェントが嘘をつくことはできますが、もはや記入漏れのままにはできません。
この分類は、テストの語彙から推定し、手作業で修正した、このサーバー独自のガイダンスです。RGAAが示すのは何を検証すべきかであり、どのツールを使うかではありません。
⚠️ 公開は取り消せません
Araには非公開に戻す機能がなく、監査を削除しても公開済みのレポートは削除されません。
publish_audit の後に delete_audit を実行した場合 | |
|---|---|
GET /audits/:editUniqueId | 410 Gone — 監査が一覧から消えます |
GET /reports/:consultUniqueId | 200 — レポートは引き続き公開され、閲覧できます |
その場合、Araのインターフェースからレポートにアクセスできなくなります。閲覧も修正も削除もできません。公開レポートから監査人の名前だけが消え、監査内容は残ります。
実務上の注意点は2つです。
- 公開を取り消す手段として、削除を決して使わないでください。
- 第三者のサイトに関する監査を公開すると、そのサイトのアクセシビリティに関する声明が、あなたの署名付きで公開されます。公開する権限があることを確認してください。
コメント内でHTMLを引用する
Araは項目のコメントをリッチテキストとして表示します。そのまま記述した <th> はタグとして解釈され、レンダリング後のコメントから消えます。APIは200を返しますが、指摘内容が失われても、それを知らせるものはありません。
2.2.1以降、update_audit_results は compliantComment、notApplicableComment、および各 notCompliantItems の title/comment に含まれる < と > をエスケープします。マークアップはそのまま自由に引用できます。
"comment": "Le champ n'a ni <label for>, ni aria-label."
↳ affiché dans Ara : Le champ n'a ni <label for>, ni aria-label.
自分でエスケープしないでください。& はそのまま残るため、すでにエスケープ済みの <th> は正しく表示されます。
例外:notes フィールド(patch_audit_notes)は、引き続きエスケープされないリッチテキストです。書式設定にはこちらのフィールドを使ってください。ここでマークアップを引用するには、<th> と記述してください。
MCPプロトコルのリビジョン
2.1.0以降、サーバーは接続開始時にネゴシエーションを行い、同じコードから仕様の2つのリビジョンを提供します。
2025-11-25— これまでどおり、initializeでハンドシェイクします。2026-07-28— ステートレスです。initializeは不要になり、server/discover、resultType、ツールカタログのキャッシュヒント(ttlMs/cacheScope)が追加されます。
設定は不要です。クライアントは、対応可能なリビジョンを受け取ります。
1.x からの移行
2.0 では、メールアドレスとパスワードをパラメーターとして受け取り、モデルのコンテキストを通じて渡していた**auth_signin** ツールが削除されました。
- スクリプトまたはプロンプトから
auth_signinの呼び出しをすべて削除してください。 - MCP 設定の
envブロックに認証情報を設定してください(認証を参照)。サーバーは起動時に自動で認証を行います。 - 引数なしの
auth_refreshが、セッション中に手動で再接続する必要性をなくします。
併せて修正しました。signin は現在のトークンを含む Authorization ヘッダーを送信していたため、そのトークンの有効期限が切れると API が 404 Cannot POST /api/auth/signin を返していました。これは、まさに再接続が必要な状況でした。
典型的なワークフロー
1. get_audit_method("FULL") # De quoi aurai-je besoin ?
2. create_audit(FULL, "MonSite", pages...) # Créer l'audit (106 critères)
3. get_audit(editUniqueId) # Récupérer les IDs de page
4. get_rgaa_criterion(topic, criterium) # Lire le critère et ses tests
5. update_audit_results(...) # Poser le verdict (envoi par paquets)
6. get_audit_progress(editUniqueId) # Que reste-t-il ?
↳ revenir en 4 tant qu'il reste des critères
7. update_statement(editUniqueId, ...) # Remplir la déclaration
8. publish_audit(editUniqueId) # Publier l'audit terminé
9. get_report(consultUniqueId) # Consulter le rapport final
Retest : duplicate_audit (fiche comprise) → update_audit_results sur la copie
→ compare_audits(initial, copie) → update_statement sur la copie
完全監査が通常のケースです。アクセシビリティに関する宣言の根拠となるのは、106 項目すべてを対象とした監査だけです。FAST(25 項目)と COMPLEMENTARY(その他の 25 項目)は、問題の発見に使うものであり、宣言の根拠にはなりません。
完全監査では、ページごとに共通要素も含めて 106 項目を確認します。2 ページで 318 件、8 ページのサンプルでは 1,000 件近くの結果になります。そのため、4→6 のループでは、結果をまとめて評価した後、すべての結果を取得し直すのではなく、get_audit_progress で残りを確認します。
認証は環境変数からサーバー起動時に行われるため、ワークフローにログイン手順はありません。
RGAA の列挙型
監査の種類
FULL— 106 項目(完全監査)FAST— 25 項目(簡易監査)COMPLEMENTARY— 50 項目(補完監査)
項目のステータス
COMPLIANT— 適合NOT_COMPLIANT— 不適合NOT_APPLICABLE— 該当なしNOT_TESTED— 未テスト
ユーザーへの影響
MINOR— 軽微MAJOR— 重大BLOCKING— 操作を妨げる
RGAA のテーマ(トピック 1~13)
- 画像
- フレーム
- 色
- マルチメディア
- 表
- リンク
- スクリプト
- 必須要素
- 情報の構造化
- 情報の提示
- フォーム
- ナビゲーション
- 利用
Ara のルート対応表
監査(/audits)
| メソッド | ルート | MCP ツール |
|---|---|---|
POST | /audits | create_audit |
GET | /audits/:uniqueId | get_audit |
PUT | /audits/:uniqueId | update_audit |
PATCH | /audits/:uniqueId | patch_audit_notes |
DELETE | /audits/:uniqueId | delete_audit |
POST | /audits/:uniqueId/duplicate | duplicate_audit |
PUT | /audits/:uniqueId/publish | publish_audit |
GET | /audits/:uniqueId/results | get_audit_results |
PATCH | /audits/:uniqueId/results | update_audit_results |
GET | /audits/:uniqueId/exports/csv | export_csv |
PUT | /audits/:editUniqueId/statement | update_statement |
レポート(/reports)— 読み取り専用
| メソッド | ルート | MCP ツール |
|---|---|---|
GET | /reports/:consultUniqueId | get_report |
認証(/auth)
| メソッド | ルート | MCP ツール |
|---|---|---|
POST | /auth/signin | auth_refresh(環境変数のみ) |
公開されていないルート(MCP の対象外)
| ルート | 理由 |
|---|---|
GET /audits/:id/pages/:slug | slug は監査ごとに一意の列ですが、どの API レスポンスからも返されません。並び順でもページ ID でも特定できません。get_audit_results を使い、pageId で絞り込んでください |
POST /audits/:id/results/examples | 画像のアップロード(非推奨) |
POST /audits/:id/notes/files | ファイルのアップロード |
POST /audits/editor/images | エディター画像のアップロード |
DELETE /audits/:id/results/examples/:id | 画像の削除 |
DELETE /audits/:id/notes/files/:id | ファイルの削除 |
GET /audits | 監査一覧(account 認証が必要) |
POST /auth/signup | アカウントの作成 |
POST /auth/verify | アカウントの確認 |
PATCH /profile | ユーザープロフィール |
POST /feedback | ユーザーフィードバック |
開発
git clone https://github.com/DavidPivert/ara-rgaa-mcp.git
cd ara-rgaa-mcp
npm install
npm run build # compile vers build/
npm run typecheck # tsc --noEmit
npm test # tests hors ligne (envoi par paquets, fiche, comparaison), après le build
公開。 パッケージは GitHub Actions(.github/workflows/publier.yml)によって、トークンやキーを使わず、来歴の証明を付与する「信頼された公開」(OIDC)方式で npm に公開されます。新しいバージョンを公開するには、package.json と server.json のバージョンを更新して main にマージし、タグ vX.Y.Z をプッシュします。ワークフローは package.json と一致しないタグを拒否し、すでに公開済みのバージョンは再公開しません。「Run workflow」ボタンを使うと、package.json のバージョンが未公開の場合に公開できます。
ローカルコピーを MCP クライアントに接続するには、command を node に設定し、args に build/index.js の絶対パスを指定します。または、node_modules を解決するために必要な cd を実行する run.sh を使用します。
ライセンス
EUPL-1.2 — このリポジトリのコードに適用される欧州連合公衆ライセンスです。
同梱されている RGAA リファレンス(src/rgaa-data.ts)は、Ara プロジェクトから抽出されたもので、Licence Ouverte 2.0(デジタル省庁間局(DINUM))のライセンスが引き続き適用されます。
このサーバーは独立したプロジェクトであり、Ara の API を利用していますが、そのコードは再利用していません。Ara は DINUM によってMIT ライセンスで公開されており、このリポジトリのライセンスには何の制約も課しません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。