orca
Orca — ATK Accessibility MCP Server
Erfasst den ATK-Widget-Baum (Accessibility Toolkit) von laufenden GTK-Anwendungen unter Linux, normalisiert ihn zu ARIA-Rollen/Typen, wendet eine konfigurierbare deklarative Sicherheitsrichtlinie an und stellt die Ergebnisse als MCP-Tools für jeden Standard-MCP-Client (Claude, Cursor, Windsurf usw.) bereit.
Schnellstart
cd orca
just shell # enter nix-shell with all dependencies
just server # start the MCP server on stdioOder manuell:
nix-shell
PYTHONPATH=src python3 -m srcRelated MCP server: blade-computer-use
Architektur
orca/
├── shell.nix # nix-shell environment
├── pyproject.toml # package config
├── Justfile # task runner
├── docs/
│ ├── README.md # this file
│ ├── usage.md # client integration guide
│ ├── policy.md # policy engine reference
│ ├── atk.md # ATK capture internals
│ └── contribute.md # development guide
└── src/
├── __init__.py
├── __main__.py # entry point
├── atk.py # ATK tree capture
├── normalize.py # ATK→ARIA normalization
├── policy.py # declarative security policy
├── server.py # MCP server
└── default_policy.yaml # ship-default policyMCP-Tools
Tool | Parameter | Beschreibung |
| keine | Vollständiger ARIA-normalisierter Baum, richtliniengefiltert |
|
| Auf eine App eingeschränkter Baum (fnmatch-Glob) |
|
| Einzelne Knotensuche über |
| keine | App-Objekte der oberen Ebene (Name, PID, Rolle) |
Konfiguration
Policy
Richtliniendateien werden in diesem Prioritätsverfahren geladen:
~/.config/atk-mcp/policy.yaml(Benutzerüberschreibung)src/default_policy.yaml(mitgelieferte Standardrichtlinie)
Wenn keine der Dateien existiert oder eine davon nicht analysieren lässt, startet der Server mit default_action: allow und ohne Benutzerregeln.
Die Richtlinie wird einmal beim Start geladen. Starten Sie den Server neu, um Änderungen zu übernehmen.
Siehe docs/policy.md für das vollständige Schema und Beispiele.
Nix-Umgebung
Alle Abhängigkeiten werden über shell.nix verwaltet. Kein uv, kein virtualenv.
Wichtige Pakete:
python314– Laufzeitpython314Packages.pyatspi– ATK-Baumzugriffpython314Packages.pygobject3– GI-Introspektionpython314Packages.mcp– MCP SDK v2python314Packages.pydantic-settings– Richtlinienkonfigurationpython314Packages.pyyaml– Policy-Analyseat-spi2-core,at-spi2-atk,atk,gtk3– Laufzeitbibliotheken
Verwendung
Mit Cursor
Fügen Sie zu ~/.cursor/mcp.json hinzu:
{
"mcpServers": {
"atk-accessibility": {
"command": "nix-shell",
"args": ["--run", "python -m src"],
"cwd": "/path/to/orca"
}
}
}Mit Claude Desktop
Fügen Sie zu ~/Library/Application Support/Claude/claude_desktop_config.json hinzu:
{
"mcpServers": {
"atk-accessibility": {
"command": "nix-shell",
"args": ["--run", "python -m src"],
"cwd": "/path/to/orca"
}
}
}Mit Windsurf
Fügen Sie zu .mcp.json in Ihrem Projekt hinzu:
{
"mcpServers": {
"atk-accessibility": {
"command": "nix-shell",
"args": ["--run", "python -m src"],
"cwd": "/path/to/orca"
}
}
}Von der Befehlszeile (interaktiver Test)
just shell
python -m src # runs indefinitely on stdioLeiten Sie eine rohe MCP-Anfrage weiter, um einzelne Tools zu testen:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' \
| python -m srcRichtlinien-Engine
Siehe docs/policy.md für die vollständige Referenz.
Kurzes Beispiel – alle heading-Knoten ablehnen und textbox-Namen schwärzen:
default_action: allow
built_in_deny:
aria_roles:
- "password"
state_keywords:
- "hidden"
- "invisible"
rules:
- id: deny-headings
conditions:
role: "heading"
action: deny
- id: redact-forms
conditions:
role: "textbox"
action: redact
redact_fields:
- "name"
- "description"ATK-Erfassung
Für Details siehe docs/atk.md. Wichtige Punkte:
Durchläuft Rekursiv den Desktop-Root
gi.repository.AtspiFail-closed: Die Subprozess-Isolation verhindert, dass ein GLib-Abort der Servers Absturz , wenn kein AT-SPI-Bus verfügbar ist.
Jeder Knoten erfasst:
obj_id,role(int),role_name,name,description,state_set,attributes,child_count,index_in_parent,app_name,pid
Normalisierung
Für die Rollenzuordnung siehe docs/normalize.md.
Ganzzahlige ATK-Rollen (0–132) werden auf ARIA-Rollenstrings abgebildet. Nicht zugeordnete Rollen werden unverändert als ihr role_name-String durchgereicht. Zustandsnamen werden übersetzt (z. B. FOCUSED → focused, CHECKED → checked).
Entwicklung
Siehe docs/contribute.md für den Entwicklungsleitfaden.
just shell # enter dev environment
just test # run verification suite
just compile # syntax check
just lint # import + smoke check
just server # start server for manual testingEinschränkungen
Wayland-Apps ohne AT-SPI: Manche Wayland-native GTK-Apps stellen keine AT-SPI-Schnittstellen bereit.
get_tree_for_appp-Kein heißen Reload: Die Richtlinie wird einmal beim Start geladen.
Erforderlicher AT-SPI-Bus: Ohne einen laufenden Accessibility-Bus (z. B.
at-spi-bus-launcher) gibt das ATK-Modul sauber[]zurück.Python 3.14+: Keine
typing-extensions-Abhängigkeit.
Lizenz
MIT
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Guarded MCP server for agent-readable business truth, provenance, readiness, and discovery.
Read-only MCP server for turva.dev, an agent-readiness audit and advisory service.
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables browser automation through the MCP protocol, allowing AI agents to control a real browser using accessibility snapshots and natural language commands.-
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to control macOS via accessibility and screen recording, providing tools to list apps, observe UI, click, type, press keys, and scroll.MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to control a Linux/X11 desktop like a human: see the screen, move the mouse, click UI elements via the accessibility tree, type text, and manage windows.MIT
- AlicenseAqualityBmaintenanceBrowser automation MCP server that uses a real browser to give agents eyes and hands—open pages, click, fill, screenshot, and run scripts via accessibility-tree snapshots.223981MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sachin-sankar/orca'
If you have feedback or need assistance with the MCP directory API, please join our Discord server