mcp server
dittu
Turns a phone into a camera+Bluetooth remote so AI assistants can see and control any PC.
Description as published by the maintainer. Source
- version 1.0.0
- active
active — Most recent push to the repository was 2026-07-09.
What this server can do
12 functions, named and described by the server itself. Parameter names are shown because they say more about what a function does than its name usually does.
click(nx, ny)- Click at normalized screen coordinates. nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right. Required: nx, ny.
double_click(nx, ny)- Double-click at normalized screen coordinates. Required: nx, ny.
get_corners- Get the phone's current screen-corner calibration. Returns {"tl": [nx,ny], "tr": [nx,ny], "br": [nx,ny], "bl": [nx,ny]} — each corner is a normalized point (0.0–1.0) in the RAW camera frame, defining the perspective warp that maps the camera view onto a flat rectangle representing the monitor. These four points are an arbitrary quadrilateral (trapezoid), not a bounding box — adjust one corner at a time without assuming the others move symmetrically.
get_raw_screenshot- Capture the RAW camera frame — no perspective warp, no crop to the calibrated screen quad. Use this to see exactly what the camera sees before any correction, e.g. when troubleshooting why take_screenshot looks wrong, or before adjusting corners with get_corners/set_corners.
key(keycodes, modifiers)- Press a key combination. modifiers bitmask: LCtrl=1, LShift=2, LAlt=4, LWin=8 Common keycodes: Enter=40, Escape=41, Tab=43, Space=44, F4=61, PageDown=78, PageUp=75, Win=227 Examples: Alt+F4 → key(4, [61]) Ctrl+W → key(1, [26]) Required: modifiers, keycodes.
move_mouse(nx, ny)- Move mouse cursor to normalized coordinates WITHOUT clicking. nx, ny: float 0.0000–1.0000. Required: nx, ny.
scroll(delta)- Scroll the mouse wheel. delta: number of ticks. Positive = scroll down, negative = scroll up. Required: delta.
set_corners(bl, br, tl, tr)- Update the phone's screen-corner calibration. Each corner is [nx, ny] normalized 0.0–1.0 in the raw camera frame. tl/tr/br/bl = top-left/top-right/bottom-right/bottom-left of the monitor as seen by the camera (an arbitrary trapezoid due to perspective — not a rectangle). Call get_corners() first to read the current values before nudging one of them. Required: tl, tr, br, bl.
take_screenshot- Capture the current screen via the Dittu phone camera. Returns a JPEG image. Call this to see what's on screen before acting.
take_screenshot_with_crosshair(nx, ny, zoom)- Capture the screen, crop tightly around (nx, ny), zoom in, and draw a crosshair at exactly that expected position. Use this for screen-corner calibration: move_mouse(nx, ny) near a screen edge, then call this to see whether the actual cursor lines up with the crosshair (where it SHOULD be if calibration is perfect). If the cursor is offset from the crosshair, or missing entirely (edge is cropped out of frame), corners need adjusting — see get_corners/set_corners. nx, ny: the same coordinates you passed to move_mouse. zoom: magnification factor for the cropped region (default 4x). Required: nx, ny.
take_screenshot_with_grid(step)- Capture the screen and overlay a coordinate grid. step: grid spacing (default 0.1, use 0.05 for finer grid on small UI elements). Returns a JPEG image with grid drawn on top.
type_text(text)- Type text on the computer keyboard. Required: text.
Last successful function declaration observed on . Source: https://app.dittu.org/mcp. We list what the server declared; we do not call any of these functions.
Endpoint status observed on . Source: https://app.dittu.org/mcp.
Signals
These are separate measurements of different things. They are deliberately not combined into one score, because a popularity number that mixes website traffic with saves and stars cannot be checked or acted on.
| Signal | Value | What it measures | Window | Observed | Source |
|---|---|---|---|---|---|
| GitHub stars | 0 | Number of GitHub accounts that bookmarked this repository since it was created. It is a bookmark count, not installs, not active users and not quality. | cumulative, all time | GitHub | |
| Last commit | 2026-07-09 | Date of the most recent push to any branch. This is the strongest cheap indicator of whether the project is still maintained. | point in time | GitHub | |
| Open issues | 0 | Open issues plus open pull requests, as GitHub counts them together. A high number can mean an active project or an abandoned one. | as of fetch | GitHub | |
| Latest published version | 1.0.0 | Latest version string the maintainer published to the registry. | as of fetch | Model Context Protocol | |
| Registry record last updated | 2026-07-09 | When the registry record was last updated by its maintainer. | point in time | Model Context Protocol | |
| First listed in the MCP Registry | 2026-07-09 | Date this server was first published to the official MCP Registry. Not a usage or quality measure. | point in time | Model Context Protocol | |
| repository status | active | The repository exists on GitHub and is not archived. This says nothing about how recently it was worked on. | as of fetch | GitHub | |
| mcp tools declared | 12 tools | Number of functions the server itself declared when asked to list them. This is what the server offers an agent, not a measure of how well any of them work. | as of probe | app.dittu.org | |
| mcp endpoint status | ok | The server listed 12 functions when asked. | as of probe | app.dittu.org |
Where to get it
Related, by what their authors tagged them
-
aden-hive-hive-browser-edge-cases
— last commit 2026-05-29, shares automation
SOP for debugging browser automation failures on complex websites. Use when browser tools fail on specific sites like L…
-
aden-hive-hive-hive-browser-automation
— last commit 2026-05-29, shares automation
Required before any browser_* tool call. Teaches the screenshot + browser_click_coordinate workflow that reaches shadow…
-
aden-hive-hive-hive-chart-creation-foundations
— last commit 2026-05-29, shares automation
Required reading whenever any chart_* tool is available. Teaches the one-tool embedding contract (call chart_render → l…
-
aden-hive-hive-hive-colony-progress-tracker
— last commit 2026-05-29, shares automation
Claim tasks, record step progress, and verify SOP gates in the colony SQLite queue. Applies when your spawn message inc…
-
aden-hive-hive-hive-context-preservation
— last commit 2026-05-29, shares automation
Proactively extract critical values from tool results into working notes before automatic context pruning destroys them.
-
aden-hive-hive-hive-error-recovery
— last commit 2026-05-29, shares automation
Follow a structured recovery decision tree when tool calls fail instead of blindly retrying or giving up.
-
aden-hive-hive-hive-linkedin-automation
— last commit 2026-05-29, shares automation
Read before automating LinkedIn with browser_* tools. LinkedIn combines shadow DOM (#interop-outlet), strict Trusted Ty…
-
aden-hive-hive-hive-note-taking
— last commit 2026-05-29, shares automation
Maintain a free-form scratchpad of decisions, extracted values, and open questions so context pruning doesn't lose anyt…
-
aden-hive-hive-hive-quality-monitor
— last commit 2026-05-29, shares automation
Periodically self-assess output quality to catch degradation before the judge does.
-
aden-hive-hive-hive-terminal-tools-foundations
— last commit 2026-05-29, shares automation
Required reading whenever any shell_* tool is available. Teaches the foreground/background dichotomy (terminal_exec aut…
These share tags the maintainers applied themselves, such as automation. Common tags like "mcp" or "ai" are ignored for this: agreeing with six hundred other projects is not a similarity.
This is not a recommendation and not a test result. It is a map of what the authors said their work is about.
How the author describes it
Topics the maintainer set on GitHub: ai-agent, automation, claude, mcp, mcp-server, model-context-protocol, remote-control.
This record as data
Every field on this page, with its source and observation date, is in the catalog JSON. Fetch the whole kind at once instead of parsing this HTML.
GET /api/v1/entries/mcp_server.json