Dittu

io.github.BorisGujvin由 GitHub 帳號 BorisGujvin 發布v1.0.0更新於 Oct 24, 2026

Turns a phone into a camera+Bluetooth remote so AI assistants can see and control any PC.

已驗證Streamable HTTP可網頁執行瀏覽器自動化開發者工具

概覽

AI 產生的概覽

Dittu 讓 AI 助理透過手機鏡頭看到電腦螢幕,並用藍牙滑鼠與鍵盤控制這台電腦。

可以做什麼
透過手機鏡頭拍攝螢幕畫面,提供一般、疊加格線、局部放大附十字準星以及未處理的原始畫面,用來定位目標與排查對位問題。依正規化螢幕座標移動游標、單擊、雙擊與捲動。透過配對的藍牙鍵盤輸入文字並送出按鍵組合。讀取與更新四角校正,把鏡頭畫面對應到螢幕。
適用情境
適合需要讓助理操作無法安裝軟體的電腦,或沒有遠端桌面環境、但可以把手機架在螢幕前的情況。適用於重複性桌面工作與實際螢幕操作,而不只是描述。
執行需求
遠端 streamable-HTTP 端點;在 Dittu Android 應用程式註冊裝置後取得的 API 金鑰;一支架在三腳架上、朝向螢幕的 Android 手機,並與目標電腦完成藍牙配對。需要網路連線。
安裝前請注意
端點需要 Bearer API 金鑰,應妥善保密。助理可以在目標電腦上點擊、輸入、送出快速鍵與修改校正,可能造成非預期操作,執行前宜先用截圖確認目標。螢幕的鏡頭畫面會傳送到 Dittu 服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Dittu,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.BorisGujvin%2Fdittu/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "dittu": {
      "type": "http",
      "url": "https://app.dittu.org/mcp"
    }
  }
}

README

Dittu MCP Server

Dittu turns a phone into the eyes and hands of an AI assistant. Stand the phone on a tripod facing a monitor — the camera reads the screen, Bluetooth pairs as a real mouse and keyboard. No software to install on the target computer, no remote-desktop setup.

Tools

ToolWhat it doesOutputWhen to use
take_screenshotCaptures what the phone's camera currently sees on the monitorImageBefore any action, to check current screen state
take_screenshot_with_gridSame as take_screenshot but overlays a coordinate gridImageTo locate exact click targets by coordinate
take_screenshot_with_crosshair(nx, ny)Zoomed crop around a point with a crosshair marking the targetImageTo verify the cursor will land exactly where intended, before clicking a small/important target
get_raw_screenshotUnprocessed camera frame, no corner-mapping appliedImageDebugging camera alignment issues
move_mouse(nx, ny)Moves the cursor to a normalized screen coordinate without clickingConfirmationPositioning the cursor before a verified click
click(nx, ny)Left-clicks at a normalized screen coordinateConfirmationStandard click actions
double_click(nx, ny)Double left-clicks at a normalized screen coordinateConfirmationOpening files/apps, other double-click actions
scrollScrolls the screen in a given directionConfirmationNavigating long pages or lists
keySends a keyboard key or shortcutConfirmationShortcuts, Enter, Escape, arrow keys, etc.
type_textTypes a string of text via the Bluetooth keyboardConfirmationFilling in text fields, search boxes, documents
get_cornersReads the current four-corner monitor calibrationCoordinatesDiagnosing why clicks land off-target
set_cornersSets the four-corner monitor calibrationConfirmationFixing calibration when the camera view is misaligned or cropped

Why a camera instead of screen-sharing?

Because it works on any computer — no software to install, no permissions to configure, no remote-desktop setup. If the monitor is in front of the phone, an AI assistant can see it and control it.

Built for

  • Automating repetitive desktop tasks
  • Controlling a computer you can't install anything on
  • Letting an AI assistant actually do things on-screen, not just describe them

來源:README.md,提交 faa17eb

工具

12

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_grid

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.

輸入參數step

take_screenshot_with_crosshair

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).

輸入參數nx必填ny必填zoom

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.

無需輸入參數。

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.

無需輸入參數。

set_corners

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.

輸入參數bl必填br必填tl必填tr必填

move_mouse

Move mouse cursor to normalized coordinates WITHOUT clicking. nx, ny: float 0.0000–1.0000.

輸入參數nx必填ny必填

click

Click at normalized screen coordinates. nx, ny: float 0.0000–1.0000 where (0,0) = top-left, (1,1) = bottom-right.

輸入參數nx必填ny必填

double_click

Double-click at normalized screen coordinates.

輸入參數nx必填ny必填

type_text

Type text on the computer keyboard.

輸入參數text必填

key

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])

輸入參數keycodes必填modifiers必填

scroll

Scroll the mouse wheel. delta: number of ticks. Positive = scroll down, negative = scroll up.

輸入參數delta必填

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。