affinity-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| screenshotA | Take a screenshot of the whole screen. Coordinates for other tools refer to this image. |
| clickB | Click at (x, y) in the last screenshot. button: left/right/middle; modifiers e.g. ["command"]. |
| double_clickC | Double-click at (x, y) in the last screenshot. |
| dragC | Drag with the left button from (x1, y1) to (x2, y2) in the last screenshot. |
| type_textC | Type text into the focused field (via clipboard, so any language works). press_enter sends it. |
| press_keyC | Press one key, e.g. enter, esc, tab, up, down, backspace. |
| hotkeyC | Press a key combination, e.g. ["command", "n"] for a new document. |
| scrollB | Scroll: positive = up, negative = down. Pass x, y (last screenshot) to scroll over a specific area. |
| set_fieldB | Replace the value of a panel field at (x, y) (X/Y/W/H, colour hex, ...) and commit with Enter. |
| menuA | Choose a menu item by path, e.g. ["Vector", "Geometry", "Add"]. Exact, no clicking. |
| list_menuB | List menu names: [] = menu bar, ["Vector"] = its items, ["Vector", "Geometry"] = submenu. |
| batchA | Run many GUI steps in one call, one screenshot at the end. Stops at the first failing step. Each step: {"action": ..., ...}. Actions: click{x,y,button?,modifiers?}, double_click{x,y}, drag{x1,y1,x2,y2,duration?}, type{text,press_enter?}, key{key}, hotkey{keys}, scroll{amount,x?,y?}, field{x,y,value}, menu{path}, wait{seconds}. Coordinates refer to the last screenshot taken before this call. |
| open_affinityC | Launch or bring the Affinity app to the front. |
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 13 tools
Most tools have clearly distinct purposes: click vs double_click, type_text vs press_key vs hotkey are all separable. The only mild overlaps are between menu and list_menu, and between direct click/drag actions and the batch wrapper, but descriptions make the intended use clear.
Nearly all names follow snake_case with a verb_noun or clear action pattern (type_text, press_key, list_menu, open_affinity). Minor deviations like the bare nouns 'menu' and 'batch' are still readable and consistent in casing.
13 tools is well-scoped for a GUI-automation server, covering input primitives, menu access, screenshotting, and batch execution without bloat. Each tool earns its place.
The surface covers the full input lifecycle (screenshot, click, double-click, drag, type, keys, hotkey, scroll, field, menu, batch, launch). Minor gaps like an explicit hover/move or context-menu helper are workable via click with right button.