duet-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DUET_APP | No | The name of the app to run when using the repository start script (e.g., 'myapp'). | |
| DUET_PORT | No | Override the port derived from app.id (default range 8000-8999). Must be the same for the daemon and Vite when overriding. | |
| DUET_ACTOR | No | The participant name for MCP sessions. Defaults to 'llm'. | llm |
| DUET_SHOT_ORIGIN | No | The origin of the development GUI server to use when capturing screenshots. Defaults to the built GUI served from webDist. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| set_textA | Replace the shared note text. baseRevision は意図を決めるために観測した revision(文字列)をそのまま渡す。版が変わっていたら handler を実行せず conflict と最新 doc を返す。最新 doc を見て意図を見直すこと。同じ引数を新しい版で自動再送しない。通信エラーは適用結果が不明な場合がある。まず await_change で現在の状態を確認する。 |
| set_settingsA | Set the canvas heading, notes, visibility, grid, style, color, and opacity. baseRevision は意図を決めるために観測した revision(文字列)をそのまま渡す。版が変わっていたら handler を実行せず conflict と最新 doc を返す。最新 doc を見て意図を見直すこと。同じ引数を新しい版で自動再送しない。通信エラーは適用結果が不明な場合がある。まず await_change で現在の状態を確認する。 |
| set_boxA | Move or resize the box within a 720×480 canvas. The minimum size is 64×64. baseRevision は意図を決めるために観測した revision(文字列)をそのまま渡す。版が変わっていたら handler を実行せず conflict と最新 doc を返す。最新 doc を見て意図を見直すこと。同じ引数を新しい版で自動再送しない。通信エラーは適用結果が不明な場合がある。まず await_change で現在の状態を確認する。 |
| gui_urlA | 人が操作する GUI の URL を返す。ポートは app.id から導出されるので、人に「どこで開いているか」を聞かれたらこれで答えること。 |
| await_changeA | 省略すると現在の doc と revision を即時取得する。sinceRevision は観測した文字列をそのまま渡す。その版以後のコミットを待ち、既に変更があれば即返す。until は待つ op 名を絞る。全応答に doc が載る。truncated は差分を説明できないという意味。doc を確認すること。再起動や履歴の保持範囲外でも最新 doc を即返す。timedOut の場合も doc と revision を組で読む。changes は対象 op の変更説明で、連続した同じ参加者の同じ op は count にまとまる。activity は最終活動からの経過ミリ秒で、編集完了や優先権は保証しない。activity 自体では起床しない。 |
| render_screenshotA | 同じ文書を GUI の別セッションで描画した PNG を返す。人間の下書きやスクロール位置は共有しない。path を渡すとその画面へ移動してから撮る(GUI が解釈する URL をそのまま書く)。 |
| read_blobB | blob を読む。画像なら画像として返す。id は doc から得る。 |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
set_text and set_settings overlap somewhat because set_settings can update 'notes', which could be confused with the note text set_text replaces. The other tools are clearly distinct, but this boundary ambiguity makes mis-selection possible.
Most tools follow a clean verb_noun pattern: set_text, set_settings, set_box, await_change, render_screenshot, and read_blob. gui_url is the outlier and would be clearer as get_gui_url, but the overall convention is still predictable.
Seven tools is well-scoped for this collaborative canvas server. Each tool serves a distinct role: mutating text/settings/box, observing changes, rendering views, and reading blobs.
The surface covers the main observe-modify-render workflow: await_change provides current state and revision, set_* tools make changes, and render_screenshot/read_blob provide outputs. Minor gaps exist around explicit create/delete operations for boxes or blob uploads, but they may not be required by the intended domain.