MCP server giving Claude senses on a Pixel over KDE Connect. Provides camera capture, notifications, SMS, remote typing, file transfer, battery/connectivity status, and media control over a persistent KDE Connect link.
18 tools with clear action verbs and generally good descriptions (avg 150 chars). All tools have input schemas with types. However, parameter descriptions are sparse or missing for many tools (e.g., kde_media_control lacks 'player' description detail). Output schemas are undocumented, LLMs cannot predict return structure. Error handling is absent: no guidance on retryability, user-fixable vs fatal errors, or recovery paths. Security concerns: kde_rm is destructive but lacks confirmation pattern; kde_send_sms and kde_send_text are write operations without dry-run. Composition is strong (single responsibility per tool, good chaining via IDs), but missing pagination for kde_photos and kde_ls.
Send the desktop clipboard to the phone's clipboard.
Pull ANY file off the phone by path (relative to internal storage, e.g. "Download/report.pdf") to the host (~/Pictures/pixel). Generalizes kde_pull beyond the camera roll. Returns the saved host path; Read it to view.
List a directory on the phone over SFTP. `remote_path` is relative to internal storage (e.g. "Download", "DCIM/Camera"); default = storage root. Each entry: name, dir?, size, modified.
HANDS: control phone media playback. `action` is one of play, pause, playpause, next, previous, stop. Optionally target a specific `player` (from kde_now_playing's player list); default is the current player.
List the media players currently available to control on the phone.
EARS: list the phone's active notifications (texts, app alerts, alarms) as text. Use to see what just arrived on the phone.
Output schemas undocumented. LLMs cannot predict return structure for any tool. E.g., kde_photos returns 'name, size, modified' but this is buried in description text, not in a formal schema. kde_notifications returns 'texts, app alerts, alarms as text' but format is unspecified.
Destructive operation kde_rm lacks confirmation pattern. Deletes files irreversibly with no dry-run or confirmation step. Agents can accidentally destroy data.
No error handling guidance. Tools provide no recovery hints, retryability classification, or actionable error messages. E.g., kde_send_sms fails silently if destination is invalid; no guidance on what to try next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
EARS: what's playing on the phone now — player, title/artist/album, playing?, position/length, and the list of available players.
EYES, on demand: open the phone's camera, wait for the user to shoot, transfer the photo to the host (~/Pictures/pixel), and return it as an image to view directly. Blocks until the photo is taken (or `timeout` s). This is the "take a snap now" move — a fresh capture over the stable link. Tell the user the camera is open and to take the shot.
Newest-first list of camera photos on the phone (name, size, modified), read over the SFTP link. Use to pick a file for kde_pull, or to see what the user just shot.
Buzz the phone with a notification ping (optional message) — a quick "are you there / look at me" nudge to the user.
EYES: pull a photo the user already shot to the host (~/Pictures/pixel) and return it as an image to view directly. No name = the newest photo — the common "took a snap" case. This is the reliable camera path (over SFTP); kde_photo (live capture) needs the phone's camera permission granted.
Push a local file to a path on the phone (relative to internal storage). If `remote_path` is an existing directory, the file lands inside it; parent dirs are created as needed.
Ring the phone loudly to locate it (findmyphone), even if silenced.
Delete a file (or empty directory) on the phone by path (relative to internal storage). Irreversible — there is no trash.
VOICE: send an SMS from the phone to `destination` (a phone number). The message goes out over the phone's real cellular line.
HANDS: type `text` into whatever field is focused on the phone (KDE Connect remote keyboard). Use to fill inputs or drive on-screen typing.
Push a local file path or a URL to the phone (opens/saves it there).
Snapshot over KDE Connect: target device, paired?, reachable?, battery charge + charging, and cellular connectivity. Read this first for context. Same content as the pixel://status resource. If it reports not paired/reachable, the phone needs KDE Connect open on the home Wi-Fi (and a one-time pair). Queries only.
Parameter descriptions incomplete. kde_media_control 'player' param lacks detail on valid values or how to obtain them. kde_clipboard has no description of what it sends or expects.
No pagination for list tools. kde_photos and kde_ls accept 'n' and 'remote_path' but lack limit/offset or cursor-based pagination. Large directories could blow context window.