# Aster > Aster connects any Android device to AI assistants over the Model Context Protocol (MCP). Use it as your AI copilot on mobile, or dedicate a spare Android to your AI and let it call, text, watch notifications and act on its own. 49 MCP tools, open source (MIT), self-hosted: no account, no telemetry, no vendor relay. Aster here is the open-source Model Context Protocol server and Android companion app for AI-driven phone control, published on npm as aster-mcp. It is unrelated to Aster DM Healthcare, Aster Data Systems or the ASTER instrument on NASA’s Terra satellite. Aster is two pieces: a self-hosted Node.js MCP server (npm `aster-mcp`) and an Android companion app (no root, Android 8.0+ (API 26)). The phone holds a WebSocket to the server; AI clients speak MCP over HTTP to the server. The app can also run standalone via an on-device MCP server (Ktor) or Android Binder IPC for same-device agents. Built by Matterward Labs. OpenAlly is a separate app, not a parent platform: it runs on the same phone and drives Aster over Binder IPC, which makes it a consumer of Aster like any other MCP client. IMPORTANT — tool namespace: every tool the MCP server registers carries the `aster_` prefix. The callable name is `aster_take_screenshot`, not `take_screenshot`. Tool sets differ per connection mode; see "Tools" below. ## Pages - [Aster — AI copilot for Android, or give your AI its own phone](https://aster.matterwardlabs.com/): Aster connects any Android to Claude, OpenClaw or MoltBot over MCP. 49 MCP tools, open source, self-hosted — your AI copilot on mobile, or its own phone. Plain text: https://aster.matterwardlabs.com/index.md - [Use cases — what people actually ask their AI to do](https://aster.matterwardlabs.com/use-cases/): Real prompts people give Aster: free up storage, find duplicate photos, read notifications, call someone and speak a message, auto-reply while driving. Plain text: https://aster.matterwardlabs.com/use-cases.md - [Give your AI its own phone](https://aster.matterwardlabs.com/ai-phone/): Plug a spare Android into a charger and give your AI its own number. It watches notifications, calls you, texts you and acts without being asked. Plain text: https://aster.matterwardlabs.com/ai-phone.md - [All 49 Aster MCP tools, with arguments](https://aster.matterwardlabs.com/tools/): All 49 aster_* MCP tools with their exact names and arguments, plus the separate catalogue of 77 unprefixed actions the Android app dispatches on-device. Plain text: https://aster.matterwardlabs.com/tools.md - [Architecture — how a command reaches the phone](https://aster.matterwardlabs.com/architecture/): How one command travels from your AI to the phone, and the three transports Aster speaks: remote WebSocket, on-device Ktor MCP server, and Binder IPC. Plain text: https://aster.matterwardlabs.com/architecture.md - [Is Aster safe? No root, self-hosted, zero telemetry](https://aster.matterwardlabs.com/security/): Self-hosted with zero telemetry and no root: device approval gate, screen-control kill switch, banking apps blocked, and where the link is not encrypted. Plain text: https://aster.matterwardlabs.com/security.md - [Set up Aster — MCP server, Android app, AI client](https://aster.matterwardlabs.com/setup/): Install aster-mcp from npm, run aster start, sideload the Android app, approve the device and point Claude Code at http://localhost:5988/mcp. Plain text: https://aster.matterwardlabs.com/setup.md - [FAQ and troubleshooting](https://aster.matterwardlabs.com/faq/): Device stuck on pending, ws:// versus wss://, which ports to open, no audio on a voice call, why Aster has no chat screen, and how it compares to scrcpy. Plain text: https://aster.matterwardlabs.com/faq.md ## Install - Server: `npm install -g aster-mcp`, then `aster start` - Android app: install the APK from [GitHub Releases](https://github.com/satyajiit/aster-mcp/releases), open it, enter the server address (`ws://:5987`), then approve the device in the dashboard - MCP clients (Claude Code, Claude Desktop, AnythingLLM, any MCP client): Streamable-HTTP endpoint at `http://localhost:5988/mcp` - OpenClaw / MoltBot / ClawdBot: `clawhub install aster` — [skill on ClawHub](https://clawhub.ai/satyajit/aster) ## Tools Tool counts are surface-specific. Do not state a single number without naming the surface. Both catalogues, with a one-line description each, are in the /tools twin. - [MCP server — 49 tools, every name `aster_`-prefixed](https://aster.matterwardlabs.com/tools.md): what an MCP client over HTTP sees, in 8 categories. - [On-device catalogue — 77 unprefixed actions](https://aster.matterwardlabs.com/tools.md): what the on-device Ktor MCP server and Binder IPC expose, in 12 categories. - The two overlap without either containing the other: 48 names appear in both; 29 on-device actions have no `aster_` tool (screen observation, the companion overlay, the screen_* control verbs, the host-directory files.* pair); exactly 1 server tool has no on-device action behind it, `aster_list_devices`, because brokering between phones is meaningless on the phone itself. - `aster_click_by_id` is a rename, not an extra capability: it dispatches the device action `click_by_view_id`. ## Key facts - **What it is**: An MCP server plus an Android companion app that lets an AI assistant see and control a phone. - **Server**: npm `aster-mcp`, Node.js >= 20 - **Phone**: Android 8.0+ (API 26), no root required - **Tools**: 49 MCP tools, all namespaced `aster_*` - **Clients**: Any MCP client: Claude Code, Claude Desktop, AnythingLLM, and the open-source agent clients OpenClaw, MoltBot and ClawdBot - **Ports**: 5987 device websocket, 5988 api + mcp http, 5989 web dashboard - **Licence**: MIT, free and open source - **Hosting**: Self-hosted on your own machine. No account, no telemetry, no vendor relay. ## Connection modes - **Remote WebSocket** (Default) — The phone holds a WebSocket to the Node server on your machine; your AI client speaks MCP over HTTP to that same server. Tools: aster_* (49 tools) - **On-device MCP server** (Standalone) — The app runs its own Streamable-HTTP MCP server (Ktor, default port 8080) on the phone. No desktop server involved. Tools: unprefixed actions (77 in the on-device catalog) - **Binder IPC** (Same device) — An agent running on the same phone — such as OpenAlly — calls Aster directly over Android Binder IPC, with no network hop. Tools: unprefixed actions (77 in the on-device catalog) ## Ports - `5987` — Device WebSocket. The Android companion connects here. - `5988` — API + MCP HTTP. Streamable-HTTP MCP endpoint at /mcp; REST API at /api. - `5989` — Web dashboard. Device registry, approvals, live screen control, logs. ## Links - Website: https://aster.matterwardlabs.com - GitHub: https://github.com/satyajiit/aster-mcp - npm: https://www.npmjs.com/package/aster-mcp - Releases (APK): https://github.com/satyajiit/aster-mcp/releases - ClawHub skill: https://clawhub.ai/satyajit/aster - OpenAlly: https://openally.ai - Model Context Protocol: https://modelcontextprotocol.io/ ## Optional - Full text of every page in one file: https://aster.matterwardlabs.com/llms-full.txt - Sitemap: https://aster.matterwardlabs.com/sitemap.xml - Python runtime manifest (used by the Android app): https://aster.matterwardlabs.com/runtimes/python/index.json - Whisper model manifest (used by the Android app): https://aster.matterwardlabs.com/runtimes/whisper/index.json