Glasswarp

Eyes and hands on real Windows PCs — observe, click, type via Glasswarp API.

使うべきか

品質と安全性

A
説明の品質
99%
スキーマの完全性
95%
命名の品質
50%
ポイズニングのリスク
100%
権限の一致
100%
プロトコルへの準拠
100%

検出事項(16)

  • LOWTool 'demos.list' doesn't follow camelCase/snake_casedemos.list 内
  • LOWTool 'demos.get' doesn't follow camelCase/snake_casedemos.get 内
  • LOWTool 'rigs.list' doesn't follow camelCase/snake_caserigs.list 内
  • LOWTool 'session.start' doesn't follow camelCase/snake_casesession.start 内
  • LOWTool 'session.end' doesn't follow camelCase/snake_casesession.end 内
  • LOWTool 'screen.observe' doesn't follow camelCase/snake_casescreen.observe 内
  • LOWTool 'input.click_target' doesn't follow camelCase/snake_caseinput.click_target 内
  • LOWTool 'input.click_xy' doesn't follow camelCase/snake_caseinput.click_xy 内
  • LOWTool 'input.type_text' doesn't follow camelCase/snake_caseinput.type_text 内
  • LOWTool 'input.send_keys' doesn't follow camelCase/snake_caseinput.send_keys 内

ツール定義とプロトコルへの準拠に関する自動分析に基づいています。

コンテキストコスト

~4,533トークン数(ツール定義)
~2.3 KB一般的なレスポンスサイズ
注意への影響は大きい(128k コンテキストの 3.54%)

これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。

インストール

ワンクリックインストール

これを `claude_desktop_config.json` ファイルに追加してください:

{
  "mcpServers": {
    "mcp-server": {
      "url": "https://mcp.glasswarp.com/mcp"
    }
  }
}

リモートエンドポイント

https://mcp.glasswarp.com/mcpstreamable-http

できること

ツール一覧

ツール(16)

🟢 読み取り専用🟡 書き込み🔴 削除⚪ 不明
🟢demos.list(format)

List showcase run contracts (id, title, install, command). Read-only catalog — does NOT start a session, touch a rig, or run solvers. Use when the user asks for Minesweeper/Mona Lisa/Paint demos or you need the glasswarp-demo command. Prefer demos.get for one full card. For ad-hoc UI work use rigs.list → session.start → screen.observe instead.

入力スキーマ

{
  "type": "object",
  "properties": {
    "format": {
      "description": "Response format: markdown (default) or json",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢demos.get(demo_id, format)

Return one showcase run contract (install, command, needs, framing). Does NOT execute the demo or control a PC. Call after demos.list when you know the demo_id. If the client can run shell, offer the command; if chat-only, show the card. Do not replace this with a slow MCP click loop for solver demos.

入力スキーマ

{
  "type": "object",
  "properties": {
    "demo_id": {
      "type": "string",
      "enum": [
        "minesweeper",
        "mona-lisa",
        "paint",
        "notepad"
      ],
      "description": "Showcase id from demos.list"
    },
    "format": {
      "description": "Response format: markdown (default) or json",
      "type": "string",
      "enum": [
        "markdown",
        "json"
      ]
    }
  },
  "required": [
    "demo_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢rigs.list

List Windows machines (rigs) paired to this API key: id, name, online, api_access_enabled, and USABLE flag. Read-only — does not start a session. Call first before start_session. A rig is USABLE only when online AND the owner enabled API access. If none are USABLE, tell the user to install the host agent, pair in Console → Rigs, and enable API access — never ask for OS passwords.

入力スキーマ

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴session.start(rig_id)

Start a metered desktop session on a USABLE rig from rigs.list. Side effects: begins wall-clock billing, shows an on-screen “API session active” indicator, enables observe/input until session.end. Idle sessions auto-end after ~15 minutes. Always call session.end when done or abandoning. Do not call if no USABLE rig exists. Returns session_id and Live View URL (owner console login required).

入力スキーマ

{
  "type": "object",
  "properties": {
    "rig_id": {
      "type": "string",
      "description": "Rig id from rigs.list (must be online with api_access_enabled)"
    }
  },
  "required": [
    "rig_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴session.end(session_id)

End an active session. Side effects: stops billing, runs host safety_restore, closes apps launched via app.launch. Always call when finished or abandoning — do not leave sessions open. Safe to call once; further observe/input on that session_id will fail.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Session id returned by session.start"
    }
  },
  "required": [
    "session_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢screen.observe(session_id, max_width, quality, image, mark)

Read the current screen: UIA targets (numbered ids + native coords) and a text summary. Does not move mouse/keyboard. Default image=false (no JPEG) for speed; set image=true only when you must judge pixels visually (then max_width≈960, quality≈60). If changed=false, JPEG is omitted even when requested — do not re-analyze; wait or act differently. If dirty is null, assume changed. Prefer input.send_actions for multi-step UI; observe after meaningful steps, not after every click. Target ids are valid only until the next UI change.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Active session id from session.start"
    },
    "max_width": {
      "description": "JPEG max width when image=true (default 960). Clicks always use native coords, not JPEG pixels.",
      "type": "integer",
      "minimum": 320,
      "maximum": 3840
    },
    "quality": {
      "description": "JPEG quality 40–100 when image=true (default 60)",
      "type": "integer",
      "minimum": 40,
      "maximum": 100
    },
    "image": {
      "description": "Include JPEG (default false). True only to visually read/judge the screen.",
      "type": "boolean"
    },
    "mark": {
      "description": "Overlay numbered targets on JPEG when image=true (default true; ignored if image=false)",
      "type": "boolean"
    }
  },
  "required": [
    "session_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable observe summary / targets"
    },
    "changed": {
      "description": "Whether the frame changed since last observe; null if unknown",
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "has_image": {
      "description": "True when a JPEG was included in the MCP content",
      "type": "boolean"
    },
    "native_width": {
      "description": "Native capture width",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "native_height": {
      "description": "Native capture height",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴input.click_target(session_id, target_id, button, double)

Left/right/middle-click a UIA target by id from the latest screen.observe (uses native center coords). Prefer over input.click_xy. Side effect: real mouse click on the remote Windows desktop. Do not reuse target_id after the screen may have changed — re-observe first. For click→type→keys sequences, use input.send_actions (one turn) instead of chaining this tool.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Active session id"
    },
    "target_id": {
      "type": "string",
      "description": "Target id from the most recent screen.observe (e.g. uia-… )"
    },
    "button": {
      "description": "Mouse button (default left)",
      "type": "string",
      "enum": [
        "left",
        "right",
        "middle"
      ]
    },
    "double": {
      "description": "If true, double-click (two clicks)",
      "type": "boolean"
    }
  },
  "required": [
    "session_id",
    "target_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴input.click_xy(session_id, x, y, button, double)

Click at native screen coordinates (0…native_width-1, 0…native_height-1 from screen.observe). Last resort when no suitable UIA target exists — prefer input.click_target. Never use JPEG/downscaled pixel coords. Side effect: real mouse click on the remote desktop.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Active session id"
    },
    "x": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Native X (0…native_width-1)"
    },
    "y": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Native Y (0…native_height-1)"
    },
    "button": {
      "description": "Mouse button (default left)",
      "type": "string",
      "enum": [
        "left",
        "right",
        "middle"
      ]
    },
    "double": {
      "description": "If true, double-click",
      "type": "boolean"
    }
  },
  "required": [
    "session_id",
    "x",
    "y"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴input.type_text(session_id, text)

Type a Unicode string into the currently focused control via native input. Does not click first — focus the field (input.click_target / input.send_actions) before calling. Side effect: keystrokes on the remote desktop. For form fills (click → type → tab/enter), prefer input.send_actions in one call.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Active session id"
    },
    "text": {
      "type": "string",
      "description": "Literal text to type (not a key combo)"
    }
  },
  "required": [
    "session_id",
    "text"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴input.send_keys(session_id, keys)

Send a key or chord to the focused window (e.g. enter, tab, ctrl+s, alt+f4, win). Side effect: real key events on the remote desktop. Prefer bundling into input.send_actions when the shortcut follows a click/type in the same planned sequence. Use input.type_text for literal strings, not this tool.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Active session id"
    },
    "keys": {
      "type": "string",
      "description": "Key or combo, e.g. enter, tab, ctrl+s, alt+f4, win"
    }
  },
  "required": [
    "session_id",
    "keys"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴input.drag(session_id, from_x, from_y, to_x, to_y, ...)

Press-move-release mouse drag in native capture coordinates. Use for drawing, sliders, selection boxes, and drag-and-drop. Side effect: mouse_down → moves → mouse_up on the remote desktop. Prefer input.send_actions if the drag is one step in a longer predictable sequence.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Active session id"
    },
    "from_x": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Native start X"
    },
    "from_y": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Native start Y"
    },
    "to_x": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Native end X"
    },
    "to_y": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Native end Y"
    },
    "duration_ms": {
      "description": "Approx drag duration in ms; more steps when larger (default ~200)",
      "type": "integer",
      "minimum": 0,
      "maximum": 5000
    }
  },
  "required": [
    "session_id",
    "from_x",
    "from_y",
    "to_x",
    "to_y"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴input.scroll(session_id, x, y, delta)

Move the cursor to native (x,y) then apply a vertical mouse-wheel delta. Side effect: scroll on whatever is under that point. Negative delta scrolls toward the bottom of the page. Prefer input.send_actions when scroll is part of a multi-step sequence. Re-observe after scrolling lists/pages before clicking targets.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Active session id"
    },
    "x": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Native X to hover before scrolling"
    },
    "y": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Native Y to hover before scrolling"
    },
    "delta": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Vertical wheel delta (negative = toward bottom of page)"
    }
  },
  "required": [
    "session_id",
    "x",
    "y",
    "delta"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴input.send_actions(session_id, actions, observe_after, observe_image)

PREFERRED multi-step tool: run 1–10 predictable UI actions in one call (input.click_target, input.click_xy, input.type_text, input.send_keys, input.drag, input.scroll). Side effects: all actions execute on the remote desktop; fails fast before sending if any action is invalid. observe_after defaults true (verification observe: text+targets; set observe_image=true for JPEG). Do not batch across unpredictable waits (page loads, installers, modals) — single-step those. Prefer this over chaining solo click/type/keys tools.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Active session id"
    },
    "actions": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "click_target",
              "click_xy",
              "type_text",
              "send_keys",
              "drag",
              "scroll"
            ]
          },
          "target_id": {
            "type": "string"
          },
          "x": {
            "type": "number"
          },
          "y": {
            "type": "number"
          },
          "to_x": {
            "type": "number"
          },
          "to_y": {
            "type": "number"
          },
          "button": {
            "type": "string",
            "enum": [
              "left",
              "right",
              "middle"
            ]
          },
          "double": {
            "type": "boolean"
          },
          "text": {
            "type": "string"
          },
          "keys": {
            "type": "string"
          },
          "delta": {
            "type": "number"
          },
          "delay_ms": {
            "description": "Optional settle delay after this action (0–2000 ms)",
            "type": "integer",
            "minimum": 0,
            "maximum": 2000
          }
        },
        "required": [
          "type"
        ]
      },
      "description": "Ordered actions (max 10); input.click_target needs target_id from latest screen.observe"
    },
    "observe_after": {
      "description": "Default true. When true, return a verification observe in the same result",
      "type": "boolean"
    },
    "observe_image": {
      "description": "Default false. When true with observe_after, include verification JPEG unless changed=false",
      "type": "boolean"
    }
  },
  "required": [
    "session_id",
    "actions"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable observe summary / targets"
    },
    "changed": {
      "description": "Whether the frame changed since last observe; null if unknown",
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ]
    },
    "has_image": {
      "description": "True when a JPEG was included in the MCP content",
      "type": "boolean"
    },
    "native_width": {
      "description": "Native capture width",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "native_height": {
      "description": "Native capture height",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🔴app.launch(session_id, path_or_name, args)

Launch an executable on the remote Windows rig (name on PATH or absolute path), optional args. Side effects: starts a process; Glasswarp tracks it and closes it on session.end. Use for notepad.exe, mspaint.exe, chrome with URL args, etc. Wait/re-observe after launch before clicking — do not assume the window is focused immediately.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Active session id"
    },
    "path_or_name": {
      "type": "string",
      "description": "Executable name (e.g. notepad.exe) or absolute path"
    },
    "args": {
      "description": "Process args, e.g. [\"--new-window\", \"https://example.com\"]",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "session_id",
    "path_or_name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢session.live_view(session_id)

Return the console Live View URL (≈60fps) for the rig owner to watch and intervene. Read-only for the agent — does not grant the API key console access. Offer on long or sensitive tasks. Owner must be signed into Glasswarp; API keys alone cannot open the player.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Active session id"
    }
  },
  "required": [
    "session_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢session.status(session_id)

Fetch session metadata: status, host, mode, created_at, action_count, billed_minutes. Read-only — no input side effects. Use to tell the user about metered time or confirm the session is still active before more actions.

入力スキーマ

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "Session id from session.start"
    }
  },
  "required": [
    "session_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

出力スキーマ

{
  "type": "object",
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "False when the tool failed"
    },
    "message": {
      "type": "string",
      "description": "Human-readable result for the agent"
    }
  },
  "required": [
    "ok",
    "message"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

コミュニティ

このサーバーを評価する

エビデンス

最近の観測

検証済みバージョンは記録されていませんツール 16 件
検証済みバージョンは記録されていませんツール 16 件