Skip to main content
Glama
SabaCan0141

duet-mcp

by SabaCan0141

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DUET_APPNoThe name of the app to run when using the repository start script (e.g., 'myapp').
DUET_PORTNoOverride the port derived from app.id (default range 8000-8999). Must be the same for the daemon and Vite when overriding.
DUET_ACTORNoThe participant name for MCP sessions. Defaults to 'llm'.llm
DUET_SHOT_ORIGINNoThe 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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 7 tools

Disambiguation3/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues