Skip to main content
Glama
README.md
# Termux MCP Server (Ubuntu PRoot Distro) 📱🤖

This is a Model Context Protocol (MCP) server designed to run inside **Ubuntu (PRoot Distro)** on Termux. 

Using Ubuntu inside Termux allows you to use standard pre-compiled binary packages (wheels), meaning **no long build wait times or compiling errors** (like the `rpds-py` Rust compiler error) while still retaining full access to Termux API commands to control your Android device.

---

## Quick One-Line Installation

Open the **Termux** app on your phone and run this single command to clone the repo, install Ubuntu, set up a virtual environment, and configure everything automatically:

```bash
curl -sSL https://raw.githubusercontent.com/AbuZar-Ansarii/Termux-MCP-Server/main/setup.sh -o setup.sh && chmod +x setup.sh && ./setup.sh
```

---

## 5-Step Setup Guide

### Step 1: Install Termux & Termux:API on Android
1. Download **Termux** and the **Termux:API** app.
   - *Important*: Do **NOT** install them from the Google Play Store (they are outdated and broken). Download them from [F-Droid](https://f-droid.org/packages/com.termux/) or [GitHub Releases](https://github.com/termux/termux-app).
2. Install both apps on your phone.

---

### Step 2: Grant Android Permissions
1. Go to your Android Settings -> **Apps** -> **Termux:API**.
2. Grant the following permissions to let the AI control your device:
   - **Camera** (for photos)
   - **Location** (for GPS coordinates)
   - **SMS** (for messages)
   - **Notifications** (for popups)

---

### Step 3: Run the Auto-Installer inside Termux
Run the one-line installer in Termux:
```bash
curl -sSL https://raw.githubusercontent.com/AbuZar-Ansarii/Termux-MCP-Server/main/setup.sh -o setup.sh && chmod +x setup.sh && ./setup.sh
```
*This will automatically update Termux, install `proot-distro` Ubuntu, set up a python virtual environment (`venv`) inside it, and install all dependencies instantly.*

---

### Step 4: Configure Passwordless SSH Access
The AI client runs non-interactively on your PC and needs to log into Termux automatically.

1. **In Termux**, set a password and start the SSH server:
   ```bash
   passwd
   sshd
   whoami     # Check your username (e.g. u0_a123)
   ifconfig   # Check your phone's IP address (e.g. 192.168.1.50)
   ```
2. **On your PC**, copy your SSH public key over to your phone:
   - **Windows PowerShell**:
     ```powershell
     cat ~/.ssh/id_rsa.pub | ssh -p 8022 u0_a123@192.168.1.50 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
     ```
   - **macOS/Linux Terminal**:
     ```bash
     ssh-copy-id -p 8022 u0_a123@192.168.1.50
     ```
3. Verify passwordless access from your PC:
   ```bash
   ssh -p 8022 u0_a123@192.168.1.50
   ```
   If it logs in without asking for a password, you are ready!

---

### Step 5: Connect Claude Desktop on your PC
Update your PC's Claude Desktop config file to launch the server inside the Ubuntu virtual environment.

1. Open your Claude Desktop config file:
   - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
   - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
2. Add the server configuration under `mcpServers` (replace the username and IP address with yours):
   ```json
   {
     "mcpServers": {
       "termux": {
         "command": "ssh",
         "args": [
           "-p", "8022",
           "-o", "StrictHostKeyChecking=accept-new",
           "u0_a123@192.168.1.50",
           "proot-distro login ubuntu -- env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/data/data/com.termux/files/usr/bin /root/venv/bin/python3 /root/termux_mcp.py"
         ]
       }
     }
   }
   ```
3. Restart Claude Desktop. The AI can now command your phone!

---

## Alternative: Connecting via HTTP / SSE (Remote Server)
If you want to run the server as a standalone web application instead of launching it over SSH stdio:

1. **In Termux**, run the server inside Ubuntu in SSE mode:
   ```bash
   proot-distro login ubuntu -- env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/data/data/com.termux/files/usr/bin /root/venv/bin/python3 /root/termux_mcp.py sse --port 8000
   ```
2. **On your PC**, configure your Claude Desktop config to point directly to your phone's IP:
   ```json
   {
     "mcpServers": {
       "termux-remote": {
         "url": "http://your_phone_ip:8000/sse"
       }
     }
   }
   ```