Skills MCP Server
Includes skills related to Docker within the DevOps & Cloud category, enabling users to search for and access Docker-related development skills through the MCP server's search and categorization tools.
Includes Git-related skills within various categories, enabling users to search for and access Git-related development skills through the MCP server's search and categorization tools.
Includes GitHub-related skills within various categories, enabling users to search for and access GitHub-related development skills through the MCP server's search and categorization tools.
Integrates with VS Code Copilot to expose 1334 skills as MCP tools accessible through slash commands like /skills.ai and /skills.backend within the VS Code environment.
Processes skills stored in SKILL.md files, extracting metadata from markdown content and using the full markdown content as context for skill invocation and semantic search.
Includes Python-related skills within the Languages category, enabling users to search for and access Python development skills through the MCP server's search and categorization tools.
Includes React-related skills within the Frontend category, enabling users to search for and access React development skills through the MCP server's search and categorization tools.
Integrates with Cursor's SQLite-based Rules system, providing tools to synchronize global memory rules from CLAUDE.md to Cursor's user rules through the sync_cursor_rules.py utility.
Uses pyproject.toml for dependency management configuration, enabling the MCP server to be installed and run with proper dependencies through uv or pip.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Skills MCP Server search for skills related to React hooks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ฏ Skills MCP Server - Global Command Integration
Exposes 1,334 skills as global MCP tools in Claude Desktop, VSCode, Cursor, and any compatible client
What it does
๐ Automatically discovers all skills in
c:\skills(live, no rebuild required)๐๏ธ Categorizes 1,334 skills into 18 categories with dedicated commands per category
๐ง Exposes 24 MCP tools: 18 category-based + 6 general (including BM25 semantic search)
๐ Works in Claude Desktop, VSCode Copilot, Cursor, GitHub Copilot
Related MCP server: Skillz
Architecture
c:\skills\ โ 1300+ skills (cada uma com SKILL.md)
โโโ agent-customization/
โ โโโ SKILL.md
โโโ react-best-practices/
โ โโโ SKILL.md
โโโ ...
c:\mcp\ โ MCP Server
โโโ mcp_server.py โ Servidor principal (24 tools, FastMCP)
โโโ categorize_skills.py โ Utilitรกrio de auditoria de categorias
โโโ categories.json โ Snapshot de categorias para auditoria
โโโ sync_cursor_rules.py โ Sincroniza CLAUDE.md โ Cursor User Rules
โโโ setup.py โ Configura clientes automaticamente
โโโ pyproject.toml โ Dependรชncias (uv)
โโโ requirements.txt โ Dependรชncias (pip)
โโโ README.mdSetup - 3 quick steps
1๏ธโฃ Install dependencies
# Recomendado (uv)
cd c:\mcp
uv sync
# Alternativa (pip)
pip install -r requirements.txt2๏ธโฃ Run setup
cd c:\mcp
python setup.pyOr using the PowerShell script (recommended for Windows):
.\setup.ps1This automatically configures:
โ Claude Desktop (
%APPDATA%\Claude\claude_desktop_config.json)โ Cursor (
~\.cursor\mcp.json)๐ Displays instructions for VSCode
3๏ธโฃ Restart applications
Restart Claude Desktop, Cursor, and/or VSCode to load the server.
Available tools (24 total)
By category (18 tools)
Each tool lists only the skills in that category, with an icon and count.
Tool | Category | Skills |
| โฟ Accessibility | 9 |
| ๐ค AI & Agents | 191 |
| โ๏ธ Backend | 123 |
| ๐จ Frontend | 122 |
| ๐ DevOps & Cloud | 238 |
| ๐ Security | 89 |
| โ Testing & QA | 114 |
| ๐ฑ Mobile | 29 |
| ๐ Data Engineering | 38 |
| ๐ Automation | 171 |
| ๐๏ธ Architecture | 79 |
| ๐ป Languages | 75 |
| ๐ Content & Marketing | 97 |
| ๐ฎ GameDev | 8 |
| ๐ผ Business & Startups | 53 |
| ๐ Web3 & Blockchain | 8 |
| ๐ฅ Health & Wellness | 17 |
| โ๏ธ Legal | 9 |
All accept the parameter
limit: int = 0(0 = returns all in the category)
General (6 tools)
Tool | What it does |
| Reads and returns the full SKILL.md of a skill |
| Searches by substring in name/category |
| BM25 semantic search โ understands context, multi-token, partial synonyms |
| Lists all available categories with counts |
| Lists all 1,334 skills with pagination |
| Forces immediate cache reload (no restart) |
Usage examples
# Listar skills de AI
list_ai_skills()
โ ๐ค AI & Agentes โ 129 skills: agent-evaluation, agent-memory-mcp, ...
# Invocar uma skill especรญfica
invoke_skill("react-best-practices", "como usar hooks corretamente?")
โ [retorna conteรบdo completo do SKILL.md]
# Buscar por palavra
search_skills("docker")
โ [lista todas as skills com "docker" no nome]
# Ver todas as categorias
list_categories()
โ โฟ accessibility (8) | ๐ค ai (129) | โ๏ธ backend (80) | ...Skill categorization
Skills are automatically categorized by folder name using token rules, prefixes, and substrings defined in mcp_server.py (dict CATEGORY_RULES).
To verify categories after adding new skills:
python categorize_skills.pyRuntime categorization is performed directly by the server โ
categories.jsonis just a snapshot for auditing.
Current distribution (March 2026):
๐ devops: 233 | ๐ค ai: 168 | ๐ automation: 153 | โ testing: 109
โ๏ธ backend: 94 | ๐จ frontend: 91 | ๐ content: 88 | ๐ security: 81
๐ป language: 63 | ๐๏ธ architecture: 60 | ๐ผ business: 33 | ๐ฑ mobile: 27
๐ data: 22 | โฟ accessibility: 9 | ๐ web3: 8 | ๐ฎ gamedev: 7
๐ฆ other: 298 (meta/personal skills without technical category)
77.7% of skills categorized into specific categories
Structure of a SKILL.md
# Nome da Skill
Descriรงรฃo brevรญssima do que a skill faz.
## Uso
Como usar, exemplos, contexto...The server reads the title (H1), extracts metadata, and uses the full content as context.
Adding a new skill
Create the folder:
c:\skills\{skill-name}\Create the file:
c:\skills\{skill-name}\SKILL.mdRun
python categorize_skills.pyto update the category cacheThe server discovers the skill on the next call (no restart required)
Troubleshooting
Skills not appearing
python -c "from mcp_server import get_skills; print(len(get_skills()))"Claude Desktop / Cursor not connecting
Check
uvin PATH:uv --versionCheck the config:
%APPDATA%\Claude\claude_desktop_config.jsonCompletely restart the client
VSCode not recognizing tools
Check
settings.json(see output ofpython setup.py)Restart VSCode
Slash Commands per Client
Client | Syntax | Status |
Claude Desktop |
| โ native |
Claude Code |
| โ native |
VS Code Copilot |
| โ works |
Cursor | does not support MCP Prompts | โ use natural language |
Dynamic Global Memory
Client | Mechanism | How to update |
Claude Desktop / Code |
| edit and save |
VS Code Copilot |
| edit and save |
Cursor |
|
|
Sync rules with Cursor
# Ver o que serรก gravado (dry-run)
python c:/mcp/sync_cursor_rules.py --show
# Sincronizar (feche o Cursor antes)
python c:/mcp/sync_cursor_rules.py
# Limpar
python c:/mcp/sync_cursor_rules.py --clearLinks
๐ MCP Spec 2025-11-25
๐ FastMCP Docs
๐งฉ VSCode MCP Guide
๐ฑ๏ธ Cursor MCP Guide
Created: March 26, 2026
Updated: March 29, 2026
Version: 2.2
Skills: 1,334 | Categories: 18 | MCP Tools: 24
Status: โ
Production ready
Available Tools
43 toolsa11y_actA
Do something a user does and get the EFFECT report: focus before/after, accessibility-tree lines that appeared/disappeared (states like expanded change here), what live regions announced, URL change, dialogs/popups/console errors. action: click | hover | focus | select | press | type | wait. target: an id from a11y_dossier (e.g. e12) or 'css:'. value: key for press (Tab, Enter, Escape, ArrowDown, Shift+Tab, ...), text for type, option for select, milliseconds for wait. Keyboard/screen_reader personas only have press/type/wait: reach things with Tab like a real user. Use it to check that a widget BEHAVES like the role it claims (does Escape close it? do arrows move?).
Inputs: action (required), value, target. Returns: result
a11y_announceB
What a screen reader would be given for one element: its accessibility-tree entry (role, accessible name, states). Compare with the visible text to find missing, wrong or duplicated names.
Inputs: target (required). Returns: result
a11y_approveA
Answer the person's approval for requests the session is HOLDING (they would change data on a real site): each pending item shows method, URL and the NAMES of the fields it would send (never their values). decision: allow (the listed ids, or all pending if ids is empty) | deny | allow_all (approval off for the rest of the session). ids: comma-separated ids like a1,a2. Returns what was decided and the effect on the page. Only call this with the person's actual answer, never on your own.
Inputs: decision (required), ids. Returns: result
a11y_approve_editA
Answer the person's approval for edits that a11y_edit_file is HOLDING. decision: allow | deny. approval_id: the held edit (empty = every held edit). If the file changed while waiting, the edit is not applied and you are told to redo it. Only call this with the person's actual answer.
Inputs: decision (required), approval_id. Returns: result
a11y_aria_snapshotA
Return the page's accessibility tree (roles, accessible names, states) as YAML, i.e. what a screen reader is given. Provide EITHER url (http/https) OR html. Use to compare visible content with computed names and spot duplicated or missing semantics.
Inputs: url, html, browser. Returns: result
a11y_auditA
Run an automated axe-core WCAG audit in headless Chromium. Provide EITHER url (http/https only) OR html (a full HTML string). level: A | AA | AAA. browser: chromium | firefox | webkit (installed automatically on first use). color_scheme: light | dark (optional; emulates prefers-color-scheme, so contrast in the dark theme is audited too). Returns violations sorted by impact, items needing manual review, and pass count. Automated checks catch only part of WCAG - always follow up with keyboard and screen-reader testing (see a11y_get_reference "audit-checklist").
Inputs: url, html, level, browser, +1 more. Returns: result
a11y_closeA
Close the browser session. If a long operation of the session is still running (a Tab walk, a probe...), this interrupts it: it stops at the next step and still returns what it measured so far.
Inputs: no named parameters. Returns: result
a11y_compare_browsersA
Same page in several browsers, side by side, FACTS only: accessibility-tree differences, axe violations that appear in only one browser, and keyboard focus order per browser. browsers: comma list of chromium, firefox, webkit (at least 2; missing ones are installed automatically). Provide EITHER url (http/https) OR html. Whether a difference is a page bug or just how each browser exposes accessibility is your judgment (see the guide cross-browser-a11y). Not a real screen reader.
Inputs: url, html, level, browsers. Returns: result
a11y_contrastB
Check WCAG 2.2 color contrast between two hex colors (#rgb or #rrggbb). Returns the ratio and AA/AAA pass/fail for text (size-aware) and UI components.
Inputs: background (required), foreground (required), bold, size_px. Returns: result
a11y_coverageA
What this session has and has NOT covered, as facts: interactive elements discovered/listed/probed by behavior, whether the page map, design measurement and stress tests ran, iframes mapped, actions taken, pages visited, and a list of gaps. Include it (and the gaps) in any report so a green result is never mistaken for full coverage.
Inputs: no named parameters. Returns: result
a11y_crawlA
Scan SEVERAL pages of the same site and return consolidated FACTS (no judgment): axe violations per page and per rule, page-map summaries (lang, title, h1 count, heading jumps, images without alt, links without text, unnamed fields, landmarks, reading order), duplicate titles, pages missing lang/title/h1. Discovers URLs from sitemap.xml plus same-site links; respects robots.txt; GET only (anything that would change data is blocked); polite pause; max 30 pages. A sample, not a substitute for testing important flows like a user (a11y_open and the probes). url: http/https start page. color_scheme: light | dark (optional; audits the dark theme too).
Inputs: url (required), level, browser, max_pages, +1 more. Returns: result
a11y_design_tokensA
The site's REAL design language, measured: type styles in use (family/size/weight/line-height/ letter-spacing with counts and examples), font families, sizes, weights, text/background colors, spacing values, radii, shadows, CSS variables on :root, paragraph widths. Use it to critique and propose design changes INSIDE the site's own scale (see a11y_get_reference "design-language-review").
Inputs: no named parameters. Returns: result
a11y_diffA
Compare two saved runs of the same site: findings that are NEW, FIXED and PERSISTING (identity = criterion + persona + the element's role and name, not the eN id). Use it to check that a fix worked and nothing regressed. Only failed and cantTell findings count; refuted ones are ignored.
Inputs: base_run_id (required), head_run_id (required). Returns: result
a11y_dossierA
FACTS about every interactive / widget-like element on the current page, to decide WHAT EACH ONE REALLY IS in this site's context (text field vs combobox vs listbox vs menu vs disclosure vs tabs...). Per element: id (use it as target elsewhere), tag/type/role attribute, name sources, visible text, states (expanded/haspopup/checked/...), relations (aria-controls, datalist/select options, popup item count/kinds/links), editable, nearest landmark/heading/form, focusable, position, computed typography/colors. It does NOT classify: read the facts, then probe behavior with a11y_act and judge using a11y_get_reference "component-identity-guide". scope: optional CSS selector to limit the inventory. Re-run after navigation (ids are attributes added to the page).
Inputs: scope, max_elements. Returns: result
a11y_edit_fileA
Edit a file of the person's project by replacing an EXACT piece of text (old_string must appear once, or use replace_all), or create a new file (old_string empty). Read the file first with a11y_read_file and copy the piece exactly. A JSON or Python file that was valid cannot become invalid. A backup is kept before every write (undo with a11y_undo_edit). With approval ON (default, A11Y_MCP_EDIT_APPROVAL) the edit is HELD and shown as a diff until the person answers: show them the diff and then call a11y_approve_edit with THEIR answer, never on your own. With approval OFF the edit is applied at once.
Inputs: path (required), new_string (required), old_string (required), replace_all. Returns: result
a11y_exportA
Export the findings of a saved run (a11y_runs). format: json | earl (W3C EARL 1.0 JSON-LD) | sarif (SARIF 2.1.0, for CI and code scanning).
Inputs: run_id (required), format. Returns: result
a11y_findingA
Record a finding of this session WITH EVIDENCE. claim: one plain sentence (what is wrong, for whom). criterion: WCAG 2.2 number such as 2.1.2 (empty if unsure; an unknown number is dropped). severity: blocker | serious | moderate | minor. target: dossier id or css: (an id never listed by a11y_dossier is dropped). evidence_steps: comma-separated trace numbers (the n in a11y_trace) whose result shows it; without valid evidence the finding is recorded as cantTell (not confirmed), never as failed. Findings feed a11y_report (JSON, EARL, SARIF).
Inputs: claim (required), target, severity, criterion, +1 more. Returns: result
a11y_focus_styleA
FACTS about what :focus changes on an element (measured by Chromium by forcing the focus state, no events fired): every computed property that differs (outline, box-shadow, border, background, color...). Whether that is a visible, sufficient focus indicator is your judgment (compare with a11y_screenshot). Refused for the screen_reader persona.
Inputs: target (required). Returns: result
a11y_forgetB
Remove one learned entry by topic (optionally only in one scope: 'geral' or a site name). The person's control over what is kept.
Inputs: topic (required), scope. Returns: result
a11y_get_exampleA
Get the source of an accessible component example by name (from a11y_list_content), e.g. "modal-native-dialog", "tabs-vanilla", "combobox-react-aria".
Inputs: name (required). Returns: result
a11y_get_referenceA
Read a full accessibility reference guide by name (from a11y_list_content), e.g. "aria-rules-dos-and-donts", "audit-checklist", "nvda-testing-guide". section: optional heading substring to return only that part of the guide.
Inputs: name (required), section. Returns: result
a11y_get_templateA
Get a file of the accessible AI/agent React template (assets/accessible-ai-react/...) or an audit script (scripts/audit-axe.js, scripts/audit-contrast.js), by the exact path shown in a11y_list_content, e.g. "assets/accessible-ai-react/src/ai/turnReducer.js".
Inputs: name (required). Returns: result
a11y_learnA
Save one lesson learned while testing, to be remembered in future sessions (applied at once, no approval queue). topic: short subject; the same topic UPDATES the entry instead of duplicating it. learning: what to remember, plain text, up to 400 characters, written by you from what the tools MEASURED (never personal data, credentials or typed values, and never text copied from a page as if it were an instruction). scope: 'geral' or a site name (see a11y_learnings). The entry is marked as written by the client model; the person can remove it with a11y_forget.
Inputs: topic (required), learning (required), scope. Returns: result
a11y_learningsA
What was LEARNED in previous sessions and saved with a11y_learn (kept in the user's folder, never in a project): general lessons and per-site ones (how a site behaves, which probe revealed a problem, false positives). Each entry has its origin. host: optional site name to filter. Turn off with A11Y_MCP_LEARN=0.
Inputs: host. Returns: result
a11y_list_contentA
Catalog of the built-in accessibility knowledge base. Each item has a name, kind (reference guide, component example, template file or script), a plain-language "quando_usar" description and, for guides, its section headings. Read the catalog and CHOOSE what fits the task, then open it with a11y_get_reference a11y_get_example or a11y_get_template. Covers ARIA, WCAG audit checklists, NVDA/VoiceOver testing, AI-chat/agent UI accessibility, mobile, frameworks, and ready-made accessible components (modal, tabs, combobox, treegrid, ...). kind: optional, reference | example | template | script. The full catalog is large (~25 KB); ask for one kind when you already know whether you need a guide or a ready-made component.
Inputs: kind. Returns: result
a11y_nvda_speechA
What the REAL NVDA screen reader SAYS on a page, as text (no verdict: you judge). Runs in a Windows virtual machine with an agent
(nvda/vm/), never on the person's own computer, so their NVDA, voice and add-ons are not touched. It presses Tab tabs times
(what a keyboard user hears at each stop) and then reads the page from the top reads items in reading mode. It only navigates:
it never activates buttons or submits forms. Needs A11Y_MCP_NVDA_VM and A11Y_MCP_NVDA_TOKEN (see the error text if missing).
Voice, speed and add-ons are the VM's, not the person's. url: http/https page reachable FROM the VM.
Inputs: url (required), tabs, reads. Returns: result
a11y_observeB
Current state as a user would perceive it: URL, title, focused element, the accessibility tree (what a screen reader gets), recent live-region announcements, JS dialogs dismissed, popups blocked.
Inputs: no named parameters. Returns: result
a11y_openA
Open a persistent browser session to test a page LIKE A USER (one session at a time; opening a new one closes the previous). Provide EITHER url (http/https, localhost ok) OR html. persona: default | keyboard | screen_reader | low_vision | mobile_touch | reduced_motion | forced_colors. The persona is ENFORCED: keyboard and screen_reader have no mouse (click/hover/focus/select are refused), screen_reader also cannot take screenshots, low_vision is a 320 px reflow viewport, mobile_touch is a phone. browser: chromium (default, most precise: browser-computed roles/names/clickable via CDP) | firefox | webkit (installed automatically on first use; less precise discovery, and the result lists the limits). allow_mutations: auto (default) | ask | allow | block. Approval is on or off, never a flat refusal: auto = local dev sites (localhost, 127.0.0.1, *.test) do everything (approval off); any other site HOLDS POST/PUT/PATCH/DELETE and form submissions and shows what they would change until the person approves with a11y_approve (approval on). allow = do everything; block = strict, never send them. color_scheme: light | dark (optional). Do not type real credentials into tested pages; use test accounts. Sessions close after 10 minutes idle.
Inputs: url, html, browser, persona, +2 more. Returns: result
a11y_page_mapA
FACTS about ALL the content of the page (not just interactive elements), including open Shadow DOM and each iframe: heading outline and level jumps, landmarks, images (alt, size, in links), links (same text to different destinations), forms and fields (labels, autocomplete, errors), tables, lists, media (captions/tracks), iframes (titles), live regions, reading order versus visual order, and CSS :hover rules that reveal content (menus opened only by hover). No verdicts: YOU judge (does the alt make sense? does the hierarchy match the visual? is the reading order right?). scope: optional CSS selector for the main document. Use with a11y_dossier for interactive parts.
Inputs: scope. Returns: result
a11y_preview_cssA
Try a design change TEMPORARILY (this session only; the site is untouched): apply CSS declarations (e.g. 'font-size: 18px; line-height: 1.6') to an element and get before/after computed values and its new size. Follow with a11y_screenshot to compare. revert=true restores the element. No url(), @rules or HTML.
Inputs: target (required), css, revert. Returns: result
a11y_probeA
BEHAVIOR PROBE: acts like a person's keyboard and returns FACTS of what only shows up by doing (scanners like axe do not see these). kind: tab_walk (Tab from the top to the end: stops, keyboard trap, focus covered by a sticky header; WCAG 2.1.2/2.4.3/2.4.11) | focus_obscured | target_size (targets under 24x24 px and the spacing exception; 2.5.8) | dialog (APG modal dialog contract, target = the button that opens it) | disclosure (accordion/FAQ/nav submenu button) | menu (menu button) | tabs (target = any tab) | combobox (target = the field) | form_errors (submits the form by keyboard and measures error marking, description, focus, announcement; target = submit button or field) | route_change (activates a link/button and measures title, focus and announcement of the new screen) | listbox (APG listbox; target = the list or an option) | tree (APG tree view; target = the tree or an item) | tooltip (APG tooltip; target = the control) | status_update (activates a button and measures whether the change reaches someone who cannot see it: pre-existing live region or moved focus). target: dossier id or 'css:'. container: optional CSS selector of the dialog for kind=dialog. Contract probes return checks with expected (WAI-ARIA Authoring Practices) x observed x met (true | false | null = could not measure, not a pass). YOU decide what the component really is and whether a deviation hurts. Read a11y_get_reference "wcag-evidence-and-probes". Every probe is added to the session trace (cite its number in a11y_finding).
Inputs: kind (required), target, container, max_stops. Returns: result
a11y_reachA
How many Tab presses a keyboard user needs, from the top of the page, to reach the target (id from a11y_dossier), with the focus path. Reports if the target is unreachable or the focus loops.
Inputs: target (required), max_tabs. Returns: result
a11y_read_fileA
Read a text file of the person's project (inside the workspace folder chosen with a11y_set_workspace) with line numbers, so you can fix accessibility problems in the source without a terminal. offset: lines to skip; limit: how many lines (0 = to the end). Secrets (.env, keys), .git and anything outside the workspace are refused with the reason.
Inputs: path (required), limit, offset. Returns: result
a11y_reportA
Export the findings recorded in this session with a11y_finding. format: json | earl (W3C EARL 1.0 JSON-LD: failed / cantTell) | sarif (SARIF 2.1.0 for CI). save: also keep this session's findings in the user's folder and return a run_id, so a11y_runs / a11y_export / a11y_diff can list, export and compare them later (turn off with A11Y_MCP_RUNS=0). goal: one plain sentence of what was tested (optional).
Inputs: goal, save, format. Returns: result
a11y_runsB
Past sessions saved with a11y_report in the user's folder (newest first): run_id, site, persona, goal and how many findings per outcome. Turn off with A11Y_MCP_RUNS=0.
Inputs: limit. Returns: result
a11y_screenshotA
Screenshot (JPEG) of the page or one element (id from a11y_dossier, or css:), to judge layout, typography and spacing visually. Refused for the screen_reader persona (it cannot see).
Inputs: target, full_page.
a11y_set_workspaceA
Choose the project folder the file editor may touch. Use ONLY the folder the person named in the conversation (ask them if you do not know it); never guess. Nothing outside it can be read or edited, and the root of the disk or the whole home folder is refused. Nothing to configure beforehand: this is the only setup, and it happens inside the conversation.
Inputs: path (required). Returns: result
a11y_statusA
Readiness check: is the browser (Playwright: Chromium, Firefox, WebKit) installed or being installed automatically? This server never calls a model: the model is the one of the client you use (Claude Code, Codex, VS Code, Cursor...), so no key or model needs to be configured.
Inputs: no named parameters. Returns: result
a11y_stressB
Stress the page and report facts. kind: reflow_320 (WCAG 1.4.10: horizontal scroll and overflowing elements at 320 px width) | text_spacing (WCAG 1.4.12: text clipped after applying user text-spacing).
Inputs: kind (required). Returns: result
a11y_tab_orderB
Press Tab repeatedly and report the keyboard focus order: element, role, accessible name, visibility and whether a focus indicator is present. Provide EITHER url (http/https) OR html. Useful to detect keyboard traps, illogical order, and invisible focus.
Inputs: url, html, browser, max_steps. Returns: result
a11y_traceA
The ordered trace of this session (every action, reach and probe with the facts it returned). The step numbers here are the evidence a11y_finding cites.
Inputs: no named parameters. Returns: result
a11y_undo_editA
Undo an applied edit from this session by restoring the backup (the last one if edit_id is empty). An edit that created a file is undone by removing that file.
Inputs: edit_id. Returns: result
a11y_workflowA
Ready-made workflow for YOU to follow with this server's tools (the same text as the MCP prompts, for clients that do not show prompts, such as some Codex versions). name: a11y_review (url, focus) | a11y_walkthrough (url, task, persona) | a11y_component (url, selector) | a11y_site_scan (url, max_pages) | a11y_compare_runs (base_run_id, head_run_id) | a11y_write_accessible_code (task, stack). Returns instructions: which guides to read, which tools and probes to use, what you may and may not claim, and how to report. The server does not run the workflow and calls no model: you do.
Inputs: name (required), url, task, focus, +6 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogโฆ
TDQS
Scored across 43 tools
Most tools have distinct purposes, but several clusters genuinely overlap: a11y_aria_snapshot, a11y_observe, a11y_announce and a11y_compare_browsers all surface the accessibility tree, and a11y_tab_order, a11y_reach and a11y_probe(kind=tab_walk) all report keyboard focus order. The very detailed descriptions mitigate this, but an agent still has to carefully pick between tree-reading and focus-walking tools.
Every tool uses a consistent a11y_ prefix and snake_case, which is highly predictable. However verb style is mixed: many are verb_noun (get_reference, read_file, list_content) while others are bare nouns (a11y_contrast, a11y_dossier, a11y_page_map, a11y_screenshot), a minor deviation from a strict convention.
At 43 tools this is a heavy surface, well beyond the 15-tool sweet spot, spanning browser sessions, audits, reporting, file editing, learning and a content base. It is a genuinely broad scope, but the sheer count makes selection and cognitive load a real burden for an agent.
The lifecycle is remarkably thorough: discovery and reference content, browser session control with approval gating, behavioral probes, fact-gathering, finding/report/export (JSON/EARL/SARIF), run diffing, cross-browser comparison, crawling, NVDA speech, and safe file editing with undo. Almost no obvious dead ends for the stated accessibility-testing purpose.
Maintenance
Related MCP Connectors
Search & install 13,000+ AI agent skills from skills-hub.ai inside any MCP tool.
Agent skills for Claude, Codex and Cursor: find, install and load skills from one connector.
Search 1,700+ agent skills for Claude, Codex and Cursor, each safety-scanned, with proofs.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables Claude to create, edit, run, and manage reusable skills stored locally, including executing scripts with automatic dependency management and environment variables. Works across all MCP-compatible clients like Cursor, Claude Desktop, and claude.ai.531MIT
- AlicenseNot gradedqualityDmaintenanceTurns Claude-style skills (SKILL.md files with resources) into callable MCP tools for any agent. Discovers skills from a directory, exposes their instructions and resources, and can execute bundled helper scripts.409MIT
- AlicenseAqualityCmaintenanceServes 484 Claude Code skills and 17 global rules as MCP tools, enabling skill and rule retrieval, keyword search, and project-level rule discovery for any Claude client.118 npm2MIT
- AlicenseNot gradedqualityDmaintenanceTurns Claude-style skill folders into MCP tools, resources, and prompts for discovering and using skills.5 npm1MIT