Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
Let an AI agent see and use a real Android phone over Wi-Fi, without ADB or root.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Die .mcpb-Datei des Entwicklers herunterladen
Der Link führt zur Datei des Entwicklers selbst; wir hosten sie nicht und verpacken sie nicht neu. Öffne die Datei, dann installiert Claude Desktop sie.
Führe das in deinem Terminal aus
Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 6. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto KnifeLemon bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.1.13) kam vor 3 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du MCPB auf deinem Computer.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, zanadir
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Find what a repository's CI is missing, and which security checks cannot fail the build.
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
Automate real Android phones from your code.
Test your apps, script the tasks you repeat, run a shelf of phones, or let an AI agent use one.
Python, Node.js, the shell or HTTP. No ADB, no USB cable, no root.
Website · Docs · Download · Sponsor · Quick start · Languages · Guides
English · 한국어 · 简体中文
No ADB, no cable Install one app on the phone, turn on its permissions and pair it with a QR code. No developer options, no USB debugging, no root. The same command everywhere touch is touch in Python, Node.js, the CLI, HTTP and as an MCP tool, all generated from one spec. Phones anywhere The phone connects out to your PC, so it works on the same Wi-Fi or on mobile data through a tunnel or a relay you run. Every line is encrypted end to end.
Droidline uses only permissions an ordinary app can get, so a few things are out of reach: see What it cannot do.
Try the same demo in your browser, and pick elements on a simulated screen, on droidline.dev
You need a PC (Windows, macOS or Linux) and an Android phone with Android 9 or later, on the same Wi-Fi for a first try. The installation guide walks through each step with screenshots.
droidline archive for your system from Releases, put droidline on your PATH, and start it. Leave it running. droidline serve
droidline-agent.apk from the same release page and open it. On the app's Setup tab, turn on the accessibility service, the Droidline keyboard, notifications and unrestricted battery use. On Android 13 and later, allow restricted settings for the app first; the app shows where. droidline pair
No camera? Tap Pair on this Wi-Fi in the app and type the 6-digit code it shows: droidline pair 482913.
droidline launch com.android.settings
droidline touch text "Network & internet"
No phone at hand? droidline-fakephone, included in every release, simulates one with a small demo app. The first-script tutorial builds a complete login script against it.
Every interface talks to droidline serve on localhost:8780 and uses the same command names.
Python (pip install droidline, Python 3.9+)
from droidline import connect
d = connect() # the phone paired with this PC d.launch("dev.droidline.demo") if d.exists("text", "Close ad"): # conditions never wait and never fail d.touch("text", "Close ad") d.input("id", "email", "knife") # waits up to 10 s for the element d.touch("text", "Log in") print(d.get_text("id", "greeting"))
Node.js and TypeScript (npm install droidline, Node.js 18+)
import { connect } from "droidline";
const d = await connect(); await d.launch("dev.droidline.demo"); await d.input("id", "email", "knife"); await d.touch("text", "Log in", { timeout: 15 }); console.log(await d.getText("id", "greeting"));
C# and .NET (dotnet add package Droidline, .NET 8+ or .NET Framework 4.6.2+)
using Droidline;
await using var d = await DroidlineClient.ConnectAsync(); await d.LaunchAsync("dev.droidline.demo"); await d.InputAsync("id", "email", "knife"); await d.TouchAsync("text", "Log in", timeout: 15); Console.WriteLine(await d.GetTextAsync("id", "greeting"));
Command line (comes with the server)
droidline touch text "Log in"
droidline which text="Log in" id=main_tab --timeout 15 droidline screenshot shot.png
HTTP (any language, any tool)
curl -s -X POST localhost:8780/devices/_/touch \
-H 'content-type: application/json' -d '{"by":"text","value":"Log in"}'
AI agents over MCP (Claude, Cursor, VS Code and others)
{ "mcpServers": { "droidline": { "command": "droidline", "args": ["mcp"] } } }
With Claude Code: claude mcp add droidline -- droidline mcp. In Claude Desktop you can instead open droidline.mcpb from Releases, which carries its own droidline; it is also listed in the MCP Registry as io.github.KnifeLemon/droidline. To give an agent fewer tools, add --tools dump,screenshot,touch or --read-only to the args; see Limit what an agent can use. Other languages can open a TCP socket and send one JSON line per command; see Other languages for Go, Java and PHP.
dump() returns the screen as a tree with text, id and desc for every element. Commands take the field and the value: touch("id", "login"). When an element refuses a click, Droidline taps its parent or the center of its bounds by itself.touch, input and wait wait for their element, 10 seconds by default. Conditions such as exists, checked and which answer at once and never throw for a missing element.NOT_FOUND: Could not find text 'Log in' within 10s. Current screen: com.example / .MainActivity.batch sent with cuts_network keeps running on the phone while it is offline, so airplane mode on, wait, off works as one call. intent opens the Settings page first; the recipes show it step by step.touch({"class": "android.widget.Switch", "row": {"text": "Wi-Fi"}}). find hands back elements you can click and search inside, and wait_idle waits until the screen stops changing.droidline inspect shows the screen and its elements, suggests selectors with code, and records a script while you use the phone. droidline webdriver lets Appium clients and scripts drive your phones. There is also a pytest plugin, leases for sharing phones between scripts, and picture and text matching for screens without elements.Setup: each permission with a button to its settings screen Pair: scan the QR code or use a 6-digit code Status: connection, route and permissions
The phone always opens the connection, so it needs no open port. Pick the route that fits your network; the phone tries them in order and returns to Wi-Fi when it can.
| Route | You need | How it works |
|---|---|---|
| Same Wi-Fi | Nothing | The phone finds the PC with a UDP broadcast and connects directly. |
| Port forward | One forwarded port | The phone connects to your public address over TLS, pinned to the PC's certificate. |
| Tunnel | cloudflared, ngrok or similar | Your PC keeps a tunnel open; the phone reaches it through the tunnel's address. |
| Your relay | Cloudflare Workers or a VPS | PC and phone both connect out to a relay you deploy. It forwards lines it cannot read. |
Past the two-line handshake every line is encrypted with keys only your PC and phone hold (P-256 and AES-256-GCM), so a tunnel or relay only carries ciphertext. The remote connection guides cover each route step by step.
Droidline only uses permissions an ordinary app can get, so some things are out of reach. Better to know before you start:
launch opens the start screen instead.Nur der Anfang wird gezeigt; den Rest findest du im Repo