termux-mcp@1.0.0
CAUTIONPublisher claims: "Enables MCP clients running on the same Android device to drive Termux over localhost, covering command execution, persistent tmux interactive terminals, background tasks, file management, and Termux:API features like clipboard, notifications, and TTS." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Server started and answered tools/list.- Tested
- MCP initialize and tools/list · every tool description, for hidden instructions · every file read, file written and host contacted by what ran
- Not tested
- what the tools do when called with real credentials
Before you give it your token
- It will ask for
- no credential variables read in the code
- Where it talks to
- no vendor host named in the codeAlso termux.dev, f-droid.org — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- what the tools do when called with real credentials
Connect it under the guard; read the third-party hosts first. The code names termux.dev, f-droid.org as well as its own vendor. The guard pins the network to the hosts the honeypot saw.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (2 scenarios) on 2026-11-14 and scored it 78/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 25 s · 2 scenariosStatic findings
if kill -0 "$PID" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.if ! kill -0 "$PID" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod +x "$BOOT_FILE"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.if [ -z "${PID:-}" ] || ! kill -0 "$PID" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill "$PID" 2>/dev/null || trueFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.kill "$PID" 2>/dev/null || trueFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.if [ -n "${PID:-}" ] && kill -0 "$PID" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 600 "$LOG_FILE" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.chmod 700 "$STATE_DIR" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.if [ -n "${OLD_LOCK_PID:-}" ] && kill -0 "$OLD_LOCK_PID" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.echo " - Disable Android battery optimization for Termux, otherwise Android may kill it."Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.echo " - Android 12+ may kill phantom processes; see the README troubleshooting section."Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.if ! kill -0 "$PID" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.if [ -n "${PID:-}" ] && kill -0 "$PID" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 700 "$STATE_DIR" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.chmod 700 "$STATE_DIR" 2>/dev/null || trueFix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.if [ -f "$STATE_DIR/server.pid" ] && kill -0 "$(cat "$STATE_DIR/server.pid" 2>/dev/null)" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.if [ -n "${PID:-}" ] && kill -0 "$PID" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.chmod 700 "$MOTD_FILE"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.if [ -n "${OLD_PID:-}" ] && kill -0 "$OLD_PID" 2>/dev/null; thenFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.const mcp = createMcpServer({ config, logger, transport: 'http', audit });Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.// Ignore filesystems without chmod support.Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.if (!result.ok) throw new PolicyError(`Failed to kill session: ${result.stderr.trim()}`);Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.const mcp = createMcpServer({ config, logger, transport: 'sse', audit });Fix: Namespace tool names and keep tool descriptions literal; no instructions to the agent inside them.// Ignore filesystems without chmod support.Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.kill -9 "$PID" 2>/dev/null || trueFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.// Ignore filesystems without chmod support.Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
2 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Reads credential files≈ +27 on the totalThe sandbox saw reads under ~/.ssh, ~/.aws, ~/.npmrc, ~/.config or similar. Read only files inside the project, and only the ones the task needs. Seen: ~/.config/termux-mcp/config.json.tmp-2238-1794618269558.
- Unclaimed publisher≈ +8 on the totalClaim leemwood: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Touches files outside the project≈ +7 on the totalKeep reads and writes inside the working directory, or declare the exact paths in `filesystem:` and explain why in the README.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.
- MCP server using network transport (SSE/HTTP)≈ +2 on the totalNamespace tool names and keep tool descriptions literal; no instructions to the agent inside them.