ATSPI
A MCP server that leverages the Linux accessibility API, ATSPI, for gaining context on system state
claude mcp add --transport stdio c-loftus-atspi-mcp-server node path/to/server.js \ --env DISPLAY="(:0) or your X display" \ --env LOG_LEVEL="info" \ --env AT_SPI_ENABLED="true"
How to use
This MCP server provides access to the state of the accessibility tree via ATSPI (Assistive Technology Service Provider Interface) on Linux. It serves as a simple example showing how to expose AT-SPI data through the MCP protocol so clients can query the accessibility tree, status, and related attributes. To use it, start the ATSPI MCP server in an environment where AT-SPI is available and the AT-SPI bus is accessible. Once running, connect with an MCP client (for example Claude Desktop or any MCP client you prefer) and issue requests to retrieve the current accessibility tree, node attributes, and observable state. If you’re using Claude Desktop, you can run any provided setup script or follow the client’s instructions to point it at the running server, then browse or filter the accessibility nodes returned by the server.
How to install
Prerequisites:
- Linux with AT-SPI support installed (at-spi2-core, at-spi2-atk, etc.)
- Node.js installed if using the Node-based server (or adjust for the actual runtime)
- An MCP client to test against (optional but helpful)
Installation steps:
- Install AT-SPI dependencies on your Linux system (example):
- sudo apt-get update
- sudo apt-get install at-spi2-core at-spi2-atk libatk-adapter libatk-bridge2.0
- Obtain the ATSPI MCP server source (clone or download the repository).
- Install runtime dependencies if required (e.g., npm install if this is a Node.js project).
- Configure the server (see mcp_config example in the repository or this document) and ensure the environment is prepared (AT_SPI_ENABLED=true, display variables, etc.).
- Start the server:
- node path/to/server.js
- Verify the server is listening (e.g., check logs or use a basic MCP client to connect and request data).
Note: If you encounter AppArmor-related blocks when atspi communicates from within certain sandboxes (for example inside Electron apps), run the server from a plain terminal outside of those sandboxes as recommended in the project notes.
Additional notes
Tips and notes:
- Ensure AT-SPI communication is allowed by your environment; AppArmor can block atspi communication when running inside sandboxed apps.
- If using Claude Desktop or another MCP client, consult the client’s setup script (e.g., setupClaude.sh) to simplify connecting to the ATSPI MCP server.
- The server may require specific environment variables to enable AT-SPI and expose the tree; verify that AT_SPI_ENABLED is true and that the correct DISPLAY/DBUS session is available.
- If you move to a different runtime than Node.js (e.g., Python or Docker), adjust the mcp_config command and args accordingly and provide any needed env vars.
- Check client compatibility with the MCP protocol version used by the server to avoid protocol mismatch issues.
Related MCP Servers
web-eval-agent
An MCP server that autonomously evaluates web applications.
unitree-go2
The Unitree Go2 MCP Server is a server built on the MCP that enables users to control the Unitree Go2 robot using natural language commands interpreted by a LLM.
time
⏰ Time MCP Server: Giving LLMs Time Awareness Capabilities
mcp-center
A centralized platform for managing and connecting MCP servers. MCP Center provides a high-performance proxy service that enables seamless communication between MCP clients and multiple MCP servers.
solscan
An MCP server for querying Solana transactions using natural language with Solscan API
your-money-left-the-chat
A Rust + MCP powered financial tracker that knows exactly where your money ghosted you.