Repository navigation
Conversation
…down linting to GitHub Pages workflow
Bring the Sphinx documentation up to date with main across all MCP servers, setup guides, and navigation trees: - Populate Furo sidebar navigation via hidden toctree blocks in docs/index.md and docs/personas/index.md, enable myst_heading_anchors, exclude docs/superpowers, and set tabindex='0' on Furo table-wrapper containers and aria-level='2' on sidebar captions. - Add docs/adk_agent.md covering the mcp-security-agent CLI (info, chat, serve), environment variables, Cloud Run deployment, and custom sub-agents. - Update docs/usage_guide.md, docs/remote_server.md, docs/google_secops_extension.md, and docs/development_guide.md for Remote MCP endpoints, uvx and uv client configs (including Gemini CLI, Antigravity, Goose, Claude, Cursor, and ADK), and per-transport proxy and custom TLS CA settings. - Reconcile 100% of registered tools across docs/servers/secops_mcp.md (69 tools), docs/servers/gti_mcp.md (36 tools), docs/servers/secops_soar_mcp.md (17 core tools plus verified marketplace tool names), and docs/servers/scc_mcp.md (6 SCC v2 tools). - Sync docs/soar_integrations/index.md and docs/toc.md with all 305 integration pages and fix the malformed H1 in nozomi_networks.md.
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This pull request adds automated WCAG 2.1 AA accessibility checks to the Sphinx and Furo documentation build and brings the documentation in
docs/up to date withmain.The changes cover two areas:
markdownlint-cli2, high-contrast syntax-highlighting palettes viaaccessible-pygments, Furo template overrides indocs/_templates/, a Sphinxhtml-page-contextpost-processor indocs/conf.py, and a Playwright andaxe-coretest suite indocs/tests/test_docs_a11y.pycatch contrast, ARIA landmark, heading hierarchy, form label, and keyboard-scrolling violations in both light and dark themes.main, totaling 128 core tools acrosssecops-mcp,gti-mcp,secops-soar-mcp, andscc-mcp. In addition,docs/adk_agent.mddocuments therun-with-google-adkpackage,docs/index.mdpopulates the Furo left navigation tree, anddocs/soar_integrations/index.mdanddocs/toc.mdresolve 40 broken cross-reference warnings across all 305 SOAR integration pages.Accessibility pipeline and Furo theme fixes
Out of the box, Sphinx
9.0.4, MyST5.1.0, and Furo2025.12.19emitaxe-coreWCAG 2.1 AA and ARIA landmark violations in light and dark modes. This pull request fixes each violation at the source template or build hook and gates pull requests in.github/workflows/deploy-docs.yml:axe-coreand WCAGcolor-contrast, WCAG 1.4.3#1a73e8link blue against Furo's#f8f9fbsidebar background measures4.29:1against the4.5:1minimum, and default Pygments comment and keyword tokens fall below4.5:1#185abcfor6.5:1contrast and configureaccessible-pygmentswitha11y-high-contrast-lightanda11y-high-contrast-darkindocs/conf.pylandmark-uniqueandregion<aside>drawers in Furo'spage.htmland.content-icon-containerrendered outsidearticle[role="main"]docs/_templates/page.htmlwith distinctaria-labelattributes on each<aside>and move.content-icon-containerinsidearticle#furo-main-content[role="main"]page-has-heading-onesearch.htmlomits an<h1>headingdocs/_templates/search.htmlwith<h1 class="visually-hidden">Search Documentation</h1>and addaria-hidden="true" focusable="false"to decorative SVGs indocs/_templates/sidebar/custom_github_link.htmlaria-required-attr, WCAG 4.1.2{toctree}captions render<p class="caption" role="heading">withoutaria-levelin both page bodies andfuro_navigation_tree_enhance_body_accessibilitytohtml-page-contextatpriority=900so it runs after Furo's priority-500_compute_navigation_treehook and setsaria-level="2"scrollable-region-focusable, WCAG 2.1.1<pre>code blocks and Furodiv.table-wrapperwide-table containers lack keyboard focusabilitytabindex="0"on<pre>anddiv.table-wrapperelements indocs/conf.pyand assert presence across all built HTML pages indocs/tests/test_docs_a11y.pylabel, WCAG 4.1.2tasklistcheckboxes emit<input class="task-list-item-checkbox" type="checkbox" disabled>without accessible namesaria-labelfrom the enclosing list item text indocs/conf.pyMD001,MD025,MD042,MD045, andMD059[here](...)in Markdown sourcesdocs/.markdownlint-cli2.jsoncandmake -C docs lint-docsacross all 333 Markdown filesGitHub Actions workflow hardening
.github/workflows/deploy-docs.ymlnow runslint-docs,make html, andtest-a11yonpull_requestevents touchingdocs/**or.github/workflows/deploy-docs.ymlwithout uploading Pages artifacts or deploying to GitHub Pages.actions/checkout,actions/setup-python,actions/setup-node,actions/upload-pages-artifact, andactions/deploy-pages, are pinned to full commit SHAs on Node 24 releases. Checkout setspersist-credentials: false, andpages: writeandid-token: writepermissions apply only to thedeployjob.zizmor --pedanticreports zero findings.docs/requirements.txtpins every documentation, parser, theme, and accessibility test package version explicitly.Documentation updates and tool reconciliation
Navigation and cross-references
docs/index.mdadds hidden{toctree}directives underGetting started,MCP servers, andWorkflows and referenceto populate Furo's left navigation drawer and previous-and-next page links.docs/conf.pysetsmyst_heading_anchors = 4so H1 through H4 section anchors resolve across documents and excludesdocs/superpowers/scratch files.docs/personas/index.mdcloses an unclosed{toctree}code fence and includesllm_judge.docs/soar_integrations/index.mdanddocs/toc.mdmatch all 305 integration Markdown files indocs/soar_integrations/, resolving 40myst.xref_missingwarnings, anddocs/soar_integrations/nozomi_networks.mdfixes a malformed:# Nozomi Networks IntegrationH1 heading.Guides and agent integrations
docs/adk_agent.md. Adds a guide for themcp-security-agentpackage inrun-with-google-adk/, covering CLI commandsinfo,chat, andserve, environment variables, FastAPI endpoints, authenticated Cloud Run deployment withgemini-3.1-pro-previewandGOOGLE_CLOUD_LOCATION="global", custom sub-agents, and unit tests.docs/usage_guide.md. Documents the three installation paths: Remote MCP server, PyPIuvx, and local Git clone viauv --directory. Includes client configurations for Gemini CLI, Antigravity, Goose, Claude Code, Claude Desktop, Cursor, VS Code with Cline, and Google ADK, along withgcloud auth login "$ACCOUNT" --update-adc,SOAR_URLdiscovery, and per-transport proxy and custom TLS CA variablesREQUESTS_CA_BUNDLE,SSL_CERT_FILE, andGRPC_DEFAULT_SSL_ROOTS_FILE_PATH.docs/remote_server.md. Documents regional Chronicle endpoints athttps://<region>-chronicle.googleapis.com/mcpand the US multi-regional endpoint athttps://chronicle.us.rep.googleapis.com/mcp, required IAM rolesroles/mcp.toolUser,roles/serviceusage.serviceUsageConsumer, androles/chronicle.*, Streamable HTTP client configs, and 7-tool feed-administration filtering.docs/google_secops_extension.mdanddocs/development_guide.md. Aligns extension paths and skillssecops-setup-gemini,secops-setup-antigravity,secops-triage,secops-investigate, andsecops-huntwithextensions/google-secops/, adds an inline Remote vs. local tool mapping table, and documentsOptional[T] = NoneFastMCP parameter typing,stderrlazy%slogging, per-serverpytestcommands, and local documentation checks.Server tool reference reconciliation
Every
@server.tool()and@mcp.tool()function registered inserver/onmainis documented, and non-existent tool names and environment variables have been removed:docs/servers/secops_mcp.mdupdate_rule, curated rule sets and detections, rule exclusions, data tables, reference lists, watchlists, investigations, log ingestion, feed management, and parser management, and closed an unclosed code fencedocs/servers/gti_mcp.mdanalyse_filedocs/servers/secops_soar_mcp.mdservicenow_create_ticketandcsv_export_casewith verified marketplace module tool namesservice_now_create_incident,csv_csv_search_by_entity,csv_save_json_to_csv,jira_create_issue, andokta_disable_user, and removed non-existentSOAR_USERNAME,SOAR_PASSWORD, andSOAR_INTEGRATIONSvariablesdocs/servers/scc_mcp.mdsearch_findings,get_finding_details,search_findings_by_compliance,top_vulnerability_findings,get_finding_remediation, andset_finding_mutewith project or organization scope andlocationparametersVerification
Run the following commands from the repository root to reproduce all checks locally:
Related issues and pull requests