@wa008/ui-audit-mcp 1.0.11 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -12
- package/dist/src/device/adapter.d.ts.map +1 -1
- package/dist/src/device/adapter.js.map +1 -1
- package/dist/src/evaluation/checklist.d.ts +4 -12
- package/dist/src/evaluation/checklist.d.ts.map +1 -1
- package/dist/src/evaluation/checklist.js +56 -43
- package/dist/src/evaluation/checklist.js.map +1 -1
- package/dist/src/index.d.ts +8 -13
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +26 -37
- package/dist/src/index.js.map +1 -1
- package/dist/src/logger/audit-log.d.ts +10 -0
- package/dist/src/logger/audit-log.d.ts.map +1 -0
- package/dist/src/logger/audit-log.js +84 -0
- package/dist/src/logger/audit-log.js.map +1 -0
- package/dist/src/tools/get-audit-status.d.ts +15 -0
- package/dist/src/tools/get-audit-status.d.ts.map +1 -0
- package/dist/src/tools/get-audit-status.js +116 -0
- package/dist/src/tools/get-audit-status.js.map +1 -0
- package/dist/src/tools/get-evaluation-criteria.d.ts +15 -0
- package/dist/src/tools/get-evaluation-criteria.d.ts.map +1 -0
- package/dist/src/tools/get-evaluation-criteria.js +29 -0
- package/dist/src/tools/get-evaluation-criteria.js.map +1 -0
- package/dist/src/tools/submit-dimension-score.d.ts +27 -0
- package/dist/src/tools/submit-dimension-score.d.ts.map +1 -0
- package/dist/src/tools/submit-dimension-score.js +35 -0
- package/dist/src/tools/submit-dimension-score.js.map +1 -0
- package/dist/src/tools/swipe.d.ts +18 -6
- package/dist/src/tools/swipe.d.ts.map +1 -1
- package/dist/src/tools/swipe.js +27 -9
- package/dist/src/tools/swipe.js.map +1 -1
- package/dist/src/tools/take-screenshot.d.ts +9 -7
- package/dist/src/tools/take-screenshot.d.ts.map +1 -1
- package/dist/src/tools/take-screenshot.js +8 -8
- package/dist/src/tools/take-screenshot.js.map +1 -1
- package/dist/src/tools/tap.d.ts +18 -6
- package/dist/src/tools/tap.d.ts.map +1 -1
- package/dist/src/tools/tap.js +27 -9
- package/dist/src/tools/tap.js.map +1 -1
- package/dist/src/types.d.ts +14 -59
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/src/evaluation/scorer.d.ts +0 -7
- package/dist/src/evaluation/scorer.d.ts.map +0 -1
- package/dist/src/evaluation/scorer.js +0 -37
- package/dist/src/evaluation/scorer.js.map +0 -1
- package/dist/src/logger/evaluation-logger.d.ts +0 -20
- package/dist/src/logger/evaluation-logger.d.ts.map +0 -1
- package/dist/src/logger/evaluation-logger.js +0 -138
- package/dist/src/logger/evaluation-logger.js.map +0 -1
- package/dist/src/tools/evaluate-style.d.ts +0 -30
- package/dist/src/tools/evaluate-style.d.ts.map +0 -1
- package/dist/src/tools/evaluate-style.js +0 -57
- package/dist/src/tools/evaluate-style.js.map +0 -1
- package/dist/src/tools/get-checklist.d.ts +0 -27
- package/dist/src/tools/get-checklist.d.ts.map +0 -1
- package/dist/src/tools/get-checklist.js +0 -57
- package/dist/src/tools/get-checklist.js.map +0 -1
- package/dist/src/tools/get-log.d.ts +0 -25
- package/dist/src/tools/get-log.d.ts.map +0 -1
- package/dist/src/tools/get-log.js +0 -33
- package/dist/src/tools/get-log.js.map +0 -1
- package/dist/src/tools/list-apps.d.ts +0 -28
- package/dist/src/tools/list-apps.d.ts.map +0 -1
- package/dist/src/tools/list-apps.js +0 -75
- package/dist/src/tools/list-apps.js.map +0 -1
- package/dist/src/tools/submit-evaluation.d.ts +0 -57
- package/dist/src/tools/submit-evaluation.d.ts.map +0 -1
- package/dist/src/tools/submit-evaluation.js +0 -106
- package/dist/src/tools/submit-evaluation.js.map +0 -1
package/README.md
CHANGED
|
@@ -52,20 +52,19 @@ npm install
|
|
|
52
52
|
| Tool | Purpose |
|
|
53
53
|
|---|---|
|
|
54
54
|
| `launch_app` | Launch app by Bundle ID |
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `
|
|
60
|
-
| `evaluate_style_consistency` | Compare multiple screens |
|
|
61
|
-
| `get_evaluation_log` | Review past results |
|
|
55
|
+
| `take_screenshot` | Capture screen & track evaluation step |
|
|
56
|
+
| `tap` / `swipe` | Interact with UI (ratio coordinates), screenshot, and track step |
|
|
57
|
+
| `get_evaluation_criteria` | Get dimensions and scoring rubrics (Prompts) |
|
|
58
|
+
| `submit_dimension_score` | Submit score (1-10) for a single dimension on a tracked step |
|
|
59
|
+
| `get_audit_status` | View missing evaluations dashboard or final markdown report |
|
|
62
60
|
|
|
63
61
|
## Typical Workflow
|
|
64
|
-
1. `
|
|
65
|
-
2. `
|
|
66
|
-
3. `
|
|
67
|
-
4. `
|
|
68
|
-
5.
|
|
62
|
+
1. `launch_app("com.example.app")`
|
|
63
|
+
2. `take_screenshot("MyTestCase", 1, "Verify Initial Screen")` or `tap(0.5, 0.5, "MyTestCase", 2, "Click Login")`
|
|
64
|
+
3. `get_evaluation_criteria("overlap")` → Read the prompt for overlap
|
|
65
|
+
4. Agent analyzes UI → `submit_dimension_score("MyTestCase", 1, "overlap", 9, "No overlap")`
|
|
66
|
+
5. Repeat 3-4 until all dimensions are evaluated for the step
|
|
67
|
+
6. `get_audit_status(["MyTestCase"])` → Output the full markdown report
|
|
69
68
|
|
|
70
69
|
## Data
|
|
71
70
|
Logs: `~/.ui-audit-mcp/logs/`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/device/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+BH,mDAAmD;AACnD,wBAAsB,SAAS,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAa7E;AAID,0DAA0D;AAC1D,wBAAsB,SAAS,CAC3B,KAAK,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ/C;AAED,4DAA4D;AAC5D,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC,CAcD;AAED,4EAA4E;AAC5E,wBAAsB,GAAG,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB/E;AAED,2CAA2C;AAC3C,wBAAsB,KAAK,CACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/device/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+BH,mDAAmD;AACnD,wBAAsB,SAAS,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAa7E;AAID,0DAA0D;AAC1D,wBAAsB,SAAS,CAC3B,KAAK,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ/C;AAED,4DAA4D;AAC5D,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC,CAcD;AAED,4EAA4E;AAC5E,wBAAsB,GAAG,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB/E;AAED,2CAA2C;AAC3C,wBAAsB,KAAK,CACvB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAoB/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/device/adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/device/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Evaluation checklist definitions.
|
|
3
|
-
*
|
|
4
|
-
* Screen evaluation: 4 items (overlap, layout, info clarity, ambiguity)
|
|
5
|
-
* Style consistency: 3 items (color, component, typography)
|
|
6
|
-
*/
|
|
7
1
|
import { ChecklistItem } from "../types.js";
|
|
8
|
-
/**
|
|
9
|
-
export declare const
|
|
10
|
-
|
|
11
|
-
export declare const
|
|
12
|
-
/** Default passing score for each checklist item (on a 0-10 scale). The standard is now higher. */
|
|
13
|
-
export declare const DEFAULT_PASSING_SCORE = 8;
|
|
2
|
+
/** System-wide UI quality audit dimensions */
|
|
3
|
+
export declare const DIMENSIONS: ChecklistItem[];
|
|
4
|
+
export declare const REQUIRED_DIMS: string[];
|
|
5
|
+
export declare const PASSING_SCORE = 8;
|
|
14
6
|
//# sourceMappingURL=checklist.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checklist.d.ts","sourceRoot":"","sources":["../../../src/evaluation/checklist.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"checklist.d.ts","sourceRoot":"","sources":["../../../src/evaluation/checklist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,8CAA8C;AAC9C,eAAO,MAAM,UAAU,EAAE,aAAa,EAyErC,CAAC;AAEF,eAAO,MAAM,aAAa,UAA4B,CAAC;AACvD,eAAO,MAAM,aAAa,IAAI,CAAC"}
|
|
@@ -1,57 +1,70 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Screen evaluation: 4 items (overlap, layout, info clarity, ambiguity)
|
|
5
|
-
* Style consistency: 3 items (color, component, typography)
|
|
6
|
-
*/
|
|
7
|
-
/** Single-screen UI quality checklist */
|
|
8
|
-
export const SCREEN_CHECKLIST = [
|
|
1
|
+
/** System-wide UI quality audit dimensions */
|
|
2
|
+
export const DIMENSIONS = [
|
|
9
3
|
{
|
|
10
4
|
id: "overlap",
|
|
11
5
|
name: "Element Overlap & Safe Areas",
|
|
12
|
-
description: "
|
|
13
|
-
|
|
6
|
+
description: "Focus ONLY on whether UI elements physically cover or obscure each other. " +
|
|
7
|
+
"Examine the following in order:\n" +
|
|
8
|
+
"1. STATUS BAR: Does any app content (header, button, text) intrude into the system status bar area (time, battery, signal icons)? Even 1px overlap is a critical failure.\n" +
|
|
9
|
+
"2. NOTCH / DYNAMIC ISLAND: Is any content hidden behind the notch or Dynamic Island?\n" +
|
|
10
|
+
"3. HOME INDICATOR: Does any bottom content overlap with the home indicator bar?\n" +
|
|
11
|
+
"4. INTER-ELEMENT OVERLAP: Do any buttons, text fields, images, or cards overlap each other within the app content area?\n" +
|
|
12
|
+
"5. MODAL / POPUP: If a modal or popup is present, does it unintentionally cover critical information behind it?\n" +
|
|
13
|
+
"NOTE: Do NOT evaluate spacing aesthetics (that is layout), color choices (that is style), or text readability (that is info_clarity).",
|
|
14
|
+
scoringGuide: "0-3: Critical overlap detected — elements cover system UI or each other, causing functional obstruction.\n" +
|
|
15
|
+
"4-6: Minor overlap exists but does not block core functionality.\n" +
|
|
16
|
+
"7-8: No overlap detected, but margins against safe areas are uncomfortably tight (< 4pt).\n" +
|
|
17
|
+
"9-10: Perfect — all elements are fully within safe areas with comfortable margins, zero overlap.",
|
|
14
18
|
},
|
|
15
19
|
{
|
|
16
20
|
id: "layout",
|
|
17
|
-
name: "Layout &
|
|
18
|
-
description: "
|
|
19
|
-
|
|
21
|
+
name: "Layout & Spatial Balance",
|
|
22
|
+
description: "Focus ONLY on how the screen space is utilized and whether elements are spatially well-arranged. " +
|
|
23
|
+
"Examine the following in order:\n" +
|
|
24
|
+
"1. LETTERBOXING: Does the app appear to run inside a smaller box with large black/empty bars at the top and bottom? This is a critical failure (score 0).\n" +
|
|
25
|
+
"2. SCREEN FILL: Does the content naturally fill the available screen area without feeling cramped or empty?\n" +
|
|
26
|
+
"3. WHITESPACE BALANCE: Is the whitespace distributed evenly? Are there large, unexplained empty gaps on one side while the other side is dense?\n" +
|
|
27
|
+
"4. ALIGNMENT: Are related elements (labels, inputs, buttons) aligned to a consistent vertical or horizontal axis? Look for jagged left edges or uneven column widths.\n" +
|
|
28
|
+
"5. SPACING CONSISTENCY: Are the gaps between similar elements (e.g., list items, card margins) uniform?\n" +
|
|
29
|
+
"NOTE: Do NOT evaluate whether elements cover each other (that is overlap), color or font choices (that is style), or text meaning (that is info_clarity).",
|
|
30
|
+
scoringGuide: "0-3: Letterboxing detected, or layout is severely broken (elements piled up, massive empty areas).\n" +
|
|
31
|
+
"4-6: Layout is functional but has noticeable imbalance — uneven spacing, misaligned elements, or wasted space.\n" +
|
|
32
|
+
"7-8: Generally well-structured, but minor spacing or alignment imperfections exist.\n" +
|
|
33
|
+
"9-10: Perfect — balanced whitespace, consistent spacing, strong alignment, content fills screen naturally.",
|
|
20
34
|
},
|
|
21
35
|
{
|
|
22
36
|
id: "info_clarity",
|
|
23
|
-
name: "Information Clarity",
|
|
24
|
-
description: "
|
|
25
|
-
|
|
37
|
+
name: "Information Clarity & Readability",
|
|
38
|
+
description: "Focus ONLY on whether a user can quickly understand what this screen communicates and what action to take. " +
|
|
39
|
+
"Examine the following in order:\n" +
|
|
40
|
+
"1. PRIMARY CTA: Is there a clear primary call-to-action? Can the user instantly identify what to do next?\n" +
|
|
41
|
+
"2. INFORMATION HIERARCHY: Are headings visually dominant over body text? Is the most important information the most prominent?\n" +
|
|
42
|
+
"3. TEXT TRUNCATION: Is any text cut off with '...' or overflowing its container, losing meaningful content?\n" +
|
|
43
|
+
"4. LABEL AMBIGUITY: Are button labels, icon meanings, or tab names confusing or misleading? Would a first-time user understand what each element does?\n" +
|
|
44
|
+
"5. CONTRAST & READABILITY: Is text legible against its background? Are there low-contrast text areas that are hard to read?\n" +
|
|
45
|
+
"NOTE: Do NOT evaluate spacing or alignment (that is layout), element overlap (that is overlap), or color harmony (that is style).",
|
|
46
|
+
scoringGuide: "0-3: Key information is impossible to find, CTA is absent or hidden, or labels are severely misleading.\n" +
|
|
47
|
+
"4-6: Information is present but requires effort to parse — weak hierarchy, some ambiguous labels, or minor truncation.\n" +
|
|
48
|
+
"7-8: Generally clear with good hierarchy, but 1-2 minor issues (e.g., one slightly ambiguous icon).\n" +
|
|
49
|
+
"9-10: Perfect — immediate clarity, strong hierarchy, unambiguous labels, fully legible text, obvious CTA.",
|
|
26
50
|
},
|
|
27
51
|
{
|
|
28
|
-
id: "
|
|
29
|
-
name: "
|
|
30
|
-
description: "
|
|
31
|
-
|
|
52
|
+
id: "style",
|
|
53
|
+
name: "Visual Style & Consistency",
|
|
54
|
+
description: "Focus ONLY on the visual aesthetics and design consistency of this single screen. " +
|
|
55
|
+
"Examine the following in order:\n" +
|
|
56
|
+
"1. COLOR PALETTE: Are the colors harmonious? Do primary, secondary, and accent colors feel intentional and cohesive, or do they clash?\n" +
|
|
57
|
+
"2. TYPOGRAPHY: Are font sizes, weights, and families consistent across the screen? Do headings, body text, and captions follow a clear typographic scale?\n" +
|
|
58
|
+
"3. COMPONENT CONSISTENCY: Do similar components (buttons, cards, input fields) share the same visual treatment (corner radius, shadow, border style)?\n" +
|
|
59
|
+
"4. ICONOGRAPHY: Do icons share a consistent style (outline vs filled, stroke width, size)?\n" +
|
|
60
|
+
"5. OVERALL POLISH: Does the screen feel professionally designed, or does it look like a rough prototype with placeholder styling?\n" +
|
|
61
|
+
"NOTE: Do NOT evaluate information meaning (that is info_clarity), spatial arrangement (that is layout), or element occlusion (that is overlap).",
|
|
62
|
+
scoringGuide: "0-3: No coherent visual style — clashing colors, mixed icon styles, inconsistent component design.\n" +
|
|
63
|
+
"4-6: A basic style exists but with noticeable inconsistencies (e.g., two different button styles, uneven font weights).\n" +
|
|
64
|
+
"7-8: Mostly consistent and polished, with only minor deviations.\n" +
|
|
65
|
+
"9-10: Perfect — unified color scheme, consistent typography, cohesive component design, professional polish.",
|
|
32
66
|
},
|
|
33
67
|
];
|
|
34
|
-
|
|
35
|
-
export const
|
|
36
|
-
{
|
|
37
|
-
id: "color_consistency",
|
|
38
|
-
name: "Color Scheme Consistency",
|
|
39
|
-
description: "Compare all provided screenshots and check whether the primary colors, accent colors, and background colors are consistent across screens.",
|
|
40
|
-
scoringGuide: "0-3 = completely different styles or clashing colors, 4-6 = noticeable inconsistencies, 7-8 = mostly consistent but minor deviations, 9-10 = perfectly unified color scheme",
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
id: "component_consistency",
|
|
44
|
-
name: "Component Style Consistency",
|
|
45
|
-
description: "Compare buttons, navigation bars, cards, and other reusable components across all screenshots to verify they share the same visual style (corner radius, shadow, spacing, etc.).",
|
|
46
|
-
scoringGuide: "0-3 = every screen looks different or core components vary wildly, 4-6 = noticeable differences in component design, 7-8 = mostly consistent, 9-10 = strict adherence to a unified design system",
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
id: "typography_consistency",
|
|
50
|
-
name: "Typography Consistency",
|
|
51
|
-
description: "Compare heading sizes, body text sizes, font weights, and line spacing across all screenshots to verify consistency.",
|
|
52
|
-
scoringGuide: "0-3 = chaotic typography or mixing incompatible fonts, 4-6 = noticeable differences in scaling or weights, 7-8 = mostly consistent, 9-10 = strictly unified typography system",
|
|
53
|
-
},
|
|
54
|
-
];
|
|
55
|
-
/** Default passing score for each checklist item (on a 0-10 scale). The standard is now higher. */
|
|
56
|
-
export const DEFAULT_PASSING_SCORE = 8;
|
|
68
|
+
export const REQUIRED_DIMS = DIMENSIONS.map(d => d.id);
|
|
69
|
+
export const PASSING_SCORE = 8;
|
|
57
70
|
//# sourceMappingURL=checklist.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checklist.js","sourceRoot":"","sources":["../../../src/evaluation/checklist.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checklist.js","sourceRoot":"","sources":["../../../src/evaluation/checklist.ts"],"names":[],"mappings":"AAEA,8CAA8C;AAC9C,MAAM,CAAC,MAAM,UAAU,GAAoB;IACvC;QACI,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACP,4EAA4E;YAC5E,mCAAmC;YACnC,6KAA6K;YAC7K,wFAAwF;YACxF,mFAAmF;YACnF,2HAA2H;YAC3H,mHAAmH;YACnH,uIAAuI;QAC3I,YAAY,EACR,4GAA4G;YAC5G,oEAAoE;YACpE,6FAA6F;YAC7F,kGAAkG;KACzG;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACP,mGAAmG;YACnG,mCAAmC;YACnC,6JAA6J;YAC7J,+GAA+G;YAC/G,mJAAmJ;YACnJ,yKAAyK;YACzK,2GAA2G;YAC3G,2JAA2J;QAC/J,YAAY,EACR,sGAAsG;YACtG,kHAAkH;YAClH,uFAAuF;YACvF,4GAA4G;KACnH;IACD;QACI,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,mCAAmC;QACzC,WAAW,EACP,6GAA6G;YAC7G,mCAAmC;YACnC,6GAA6G;YAC7G,kIAAkI;YAClI,+GAA+G;YAC/G,0JAA0J;YAC1J,+HAA+H;YAC/H,mIAAmI;QACvI,YAAY,EACR,2GAA2G;YAC3G,0HAA0H;YAC1H,uGAAuG;YACvG,2GAA2G;KAClH;IACD;QACI,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,4BAA4B;QAClC,WAAW,EACP,oFAAoF;YACpF,mCAAmC;YACnC,0IAA0I;YAC1I,6JAA6J;YAC7J,yJAAyJ;YACzJ,8FAA8F;YAC9F,qIAAqI;YACrI,iJAAiJ;QACrJ,YAAY,EACR,sGAAsG;YACtG,2HAA2H;YAC3H,oEAAoE;YACpE,8GAA8G;KACrH;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -4,20 +4,15 @@
|
|
|
4
4
|
*
|
|
5
5
|
* An MCP server for iOS app UI evaluation and testing.
|
|
6
6
|
* Uses idb + xcrun simctl for device operations (launch, screenshot, tap, swipe)
|
|
7
|
-
* and provides a
|
|
7
|
+
* and provides a rule-based, trackable evaluation workflow.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* Evaluation:
|
|
17
|
-
* - get_checklist Get the evaluation checklist and create a session
|
|
18
|
-
* - submit_evaluation Submit scores and get pass/fail result
|
|
19
|
-
* - evaluate_style_consistency Compare multiple screenshots for style consistency
|
|
20
|
-
* - get_evaluation_log Query past evaluation results
|
|
9
|
+
* Evaluation workflow for each step:
|
|
10
|
+
* 1. Perform an action (tap / swipe / take_screenshot) — this auto-takes a screenshot and registers a step.
|
|
11
|
+
* 2. For each required dimension (overlap, layout, info_clarity, style):
|
|
12
|
+
* a. Call get_evaluation_criteria(dimension) to read the scoring rubric.
|
|
13
|
+
* b. Visually inspect the screenshot.
|
|
14
|
+
* c. Call submit_dimension_score to record your score.
|
|
15
|
+
* 3. Call get_audit_status to confirm all dimensions are complete before proceeding to the next action.
|
|
21
16
|
*/
|
|
22
17
|
export {};
|
|
23
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG"}
|
package/dist/src/index.js
CHANGED
|
@@ -4,20 +4,15 @@
|
|
|
4
4
|
*
|
|
5
5
|
* An MCP server for iOS app UI evaluation and testing.
|
|
6
6
|
* Uses idb + xcrun simctl for device operations (launch, screenshot, tap, swipe)
|
|
7
|
-
* and provides a
|
|
7
|
+
* and provides a rule-based, trackable evaluation workflow.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* Evaluation:
|
|
17
|
-
* - get_checklist Get the evaluation checklist and create a session
|
|
18
|
-
* - submit_evaluation Submit scores and get pass/fail result
|
|
19
|
-
* - evaluate_style_consistency Compare multiple screenshots for style consistency
|
|
20
|
-
* - get_evaluation_log Query past evaluation results
|
|
9
|
+
* Evaluation workflow for each step:
|
|
10
|
+
* 1. Perform an action (tap / swipe / take_screenshot) — this auto-takes a screenshot and registers a step.
|
|
11
|
+
* 2. For each required dimension (overlap, layout, info_clarity, style):
|
|
12
|
+
* a. Call get_evaluation_criteria(dimension) to read the scoring rubric.
|
|
13
|
+
* b. Visually inspect the screenshot.
|
|
14
|
+
* c. Call submit_dimension_score to record your score.
|
|
15
|
+
* 3. Call get_audit_status to confirm all dimensions are complete before proceeding to the next action.
|
|
21
16
|
*/
|
|
22
17
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
23
18
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
@@ -25,36 +20,30 @@ import { launchAppSchema, launchApp } from "./tools/launch-app.js";
|
|
|
25
20
|
import { takeScreenshotSchema, takeScreenshot } from "./tools/take-screenshot.js";
|
|
26
21
|
import { tapSchema, tap } from "./tools/tap.js";
|
|
27
22
|
import { swipeSchema, swipe } from "./tools/swipe.js";
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import { getEvaluationLogSchema, getEvaluationLog } from "./tools/get-log.js";
|
|
32
|
-
import { listApps, listAppsSchema } from "./tools/list-apps.js";
|
|
23
|
+
import { getEvaluationCriteriaSchema, getEvaluationCriteria } from "./tools/get-evaluation-criteria.js";
|
|
24
|
+
import { submitDimensionScoreSchema, submitDimensionScore } from "./tools/submit-dimension-score.js";
|
|
25
|
+
import { getAuditStatusSchema, getAuditStatus } from "./tools/get-audit-status.js";
|
|
33
26
|
const server = new McpServer({
|
|
34
27
|
name: "ui-audit-mcp",
|
|
35
|
-
version: "
|
|
28
|
+
version: "2.0.0",
|
|
36
29
|
});
|
|
37
30
|
// ─── Device operation tools ────────────────────────────────
|
|
38
31
|
server.tool("launch_app", "Launch an iOS app on the simulator by its bundle ID.", launchAppSchema.shape, async (args) => launchApp(args));
|
|
39
|
-
server.tool("
|
|
40
|
-
"
|
|
41
|
-
server.tool("
|
|
42
|
-
"
|
|
43
|
-
server.tool("
|
|
44
|
-
"
|
|
45
|
-
server.tool("swipe", "Swipe from one point to another on the screen. " +
|
|
46
|
-
"Uses ratio coordinates (0-1) for both start and end positions.", swipeSchema.shape, async (args) => swipe(args));
|
|
32
|
+
server.tool("take_screenshot", "Capture the current simulator screen and register it as a tracked evaluation step. " +
|
|
33
|
+
"After this call, evaluate the screenshot across all required dimensions before moving to the next action.", takeScreenshotSchema.shape, async (args) => takeScreenshot(args));
|
|
34
|
+
server.tool("tap", "Tap at a position on screen (ratio 0-1). Automatically captures a screenshot and registers a tracked step. " +
|
|
35
|
+
"After this call, evaluate the screenshot across all required dimensions before moving to the next action.", tapSchema.shape, async (args) => tap(args));
|
|
36
|
+
server.tool("swipe", "Swipe on screen (ratio 0-1). Automatically captures a screenshot and registers a tracked step. " +
|
|
37
|
+
"After this call, evaluate the screenshot across all required dimensions before moving to the next action.", swipeSchema.shape, async (args) => swipe(args));
|
|
47
38
|
// ─── Evaluation tools ──────────────────────────────────────
|
|
48
|
-
server.tool("
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
server.tool("
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"
|
|
56
|
-
server.tool("get_evaluation_log", "Query past evaluation results and summary statistics. " +
|
|
57
|
-
"Use to review improvement across attempts or generate a final report.", getEvaluationLogSchema.shape, async (args) => getEvaluationLog(args));
|
|
39
|
+
server.tool("get_evaluation_criteria", "Get UI evaluation dimensions and scoring rubrics. " +
|
|
40
|
+
"Call without arguments to list all dimension IDs. Pass a dimension ID (e.g. 'overlap') to get its detailed prompt and scoring guide. " +
|
|
41
|
+
"Required dimensions for every step: overlap, layout, info_clarity, style.", getEvaluationCriteriaSchema.shape, async (args) => getEvaluationCriteria(args));
|
|
42
|
+
server.tool("submit_dimension_score", "Submit a score (0-10) and reason for one UI dimension on a specific step. " +
|
|
43
|
+
"Every step requires scores for all four dimensions: overlap, layout, info_clarity, style. " +
|
|
44
|
+
"After submitting, continue with the remaining dimensions, then call get_audit_status to confirm completion.", submitDimensionScoreSchema.shape, async (args) => submitDimensionScore(args));
|
|
45
|
+
server.tool("get_audit_status", "Get the current dashboard or test case report. " +
|
|
46
|
+
"Use this to see which dimensions are missing (Pending) or to get the final markdown report if all steps are fully evaluated.", getAuditStatusSchema.shape, async (args) => getAuditStatus(args));
|
|
58
47
|
import { preflight } from "./device/adapter.js";
|
|
59
48
|
// ─── Start server ──────────────────────────────────────────
|
|
60
49
|
async function main() {
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuditLog } from "../types.js";
|
|
2
|
+
export declare function readLog(caseName: string): AuditLog | null;
|
|
3
|
+
export declare function writeLog(log: AuditLog): void;
|
|
4
|
+
export declare function readAllLogs(): AuditLog[];
|
|
5
|
+
export declare function recordStep(caseName: string, stepIndex: number, description: string, actionType: "tap" | "swipe" | "screenshot", screenshotPath: string, coordinates?: {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
}): void;
|
|
9
|
+
export declare function recordScore(caseName: string, stepIndex: number, dimension: string, score: number, reason: string): void;
|
|
10
|
+
//# sourceMappingURL=audit-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../../src/logger/audit-log.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAA8B,MAAM,aAAa,CAAC;AAmBnE,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAMzD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAG5C;AAED,wBAAgB,WAAW,IAAI,QAAQ,EAAE,CAexC;AAED,wBAAgB,UAAU,CACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,KAAK,GAAG,OAAO,GAAG,YAAY,EAC1C,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACvC,IAAI,CAsBN;AAED,wBAAgB,WAAW,CACvB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACf,IAAI,CAiBN"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import os from "os";
|
|
4
|
+
const BASE_DIR = path.join(os.homedir(), ".ui-audit-mcp");
|
|
5
|
+
const LOG_DIR = path.join(BASE_DIR, "logs");
|
|
6
|
+
const SCREENSHOT_DIR = path.join(BASE_DIR, "screenshots");
|
|
7
|
+
// Ensure directories exist
|
|
8
|
+
function ensureDirs() {
|
|
9
|
+
if (!fs.existsSync(BASE_DIR))
|
|
10
|
+
fs.mkdirSync(BASE_DIR, { recursive: true });
|
|
11
|
+
if (!fs.existsSync(LOG_DIR))
|
|
12
|
+
fs.mkdirSync(LOG_DIR, { recursive: true });
|
|
13
|
+
if (!fs.existsSync(SCREENSHOT_DIR))
|
|
14
|
+
fs.mkdirSync(SCREENSHOT_DIR, { recursive: true });
|
|
15
|
+
}
|
|
16
|
+
ensureDirs();
|
|
17
|
+
function getLogPath(caseName) {
|
|
18
|
+
return path.join(LOG_DIR, `${caseName}.json`);
|
|
19
|
+
}
|
|
20
|
+
export function readLog(caseName) {
|
|
21
|
+
const logPath = getLogPath(caseName);
|
|
22
|
+
if (!fs.existsSync(logPath)) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return JSON.parse(fs.readFileSync(logPath, "utf-8"));
|
|
26
|
+
}
|
|
27
|
+
export function writeLog(log) {
|
|
28
|
+
const logPath = getLogPath(log.caseName);
|
|
29
|
+
fs.writeFileSync(logPath, JSON.stringify(log, null, 2), "utf-8");
|
|
30
|
+
}
|
|
31
|
+
export function readAllLogs() {
|
|
32
|
+
const logs = [];
|
|
33
|
+
if (!fs.existsSync(LOG_DIR))
|
|
34
|
+
return logs;
|
|
35
|
+
const files = fs.readdirSync(LOG_DIR);
|
|
36
|
+
for (const file of files) {
|
|
37
|
+
if (file.endsWith(".json")) {
|
|
38
|
+
const content = fs.readFileSync(path.join(LOG_DIR, file), "utf-8");
|
|
39
|
+
try {
|
|
40
|
+
logs.push(JSON.parse(content));
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
console.error(`Failed to parse log file: ${file}`, e);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return logs;
|
|
48
|
+
}
|
|
49
|
+
export function recordStep(caseName, stepIndex, description, actionType, screenshotPath, coordinates) {
|
|
50
|
+
let log = readLog(caseName);
|
|
51
|
+
if (!log) {
|
|
52
|
+
log = {
|
|
53
|
+
caseName,
|
|
54
|
+
steps: {},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const existingStep = log.steps[stepIndex];
|
|
58
|
+
log.steps[stepIndex] = {
|
|
59
|
+
stepIndex,
|
|
60
|
+
description,
|
|
61
|
+
actionType,
|
|
62
|
+
screenshotPath,
|
|
63
|
+
coordinates,
|
|
64
|
+
timestamp: new Date().toISOString(),
|
|
65
|
+
evaluations: existingStep ? existingStep.evaluations : {},
|
|
66
|
+
};
|
|
67
|
+
writeLog(log);
|
|
68
|
+
}
|
|
69
|
+
export function recordScore(caseName, stepIndex, dimension, score, reason) {
|
|
70
|
+
const log = readLog(caseName);
|
|
71
|
+
if (!log) {
|
|
72
|
+
throw new Error(`Test case not found: ${caseName}`);
|
|
73
|
+
}
|
|
74
|
+
const step = log.steps[stepIndex];
|
|
75
|
+
if (!step) {
|
|
76
|
+
throw new Error(`Step ${stepIndex} not found in case ${caseName}`);
|
|
77
|
+
}
|
|
78
|
+
step.evaluations[dimension] = {
|
|
79
|
+
score,
|
|
80
|
+
reason,
|
|
81
|
+
};
|
|
82
|
+
writeLog(log);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=audit-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../../src/logger/audit-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const getAuditStatusSchema: z.ZodObject<{
|
|
3
|
+
caseNames: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
4
|
+
}, "strip", z.ZodTypeAny, {
|
|
5
|
+
caseNames?: string[] | undefined;
|
|
6
|
+
}, {
|
|
7
|
+
caseNames?: string[] | undefined;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function getAuditStatus(input: z.infer<typeof getAuditStatusSchema>): Promise<{
|
|
10
|
+
content: {
|
|
11
|
+
type: "text";
|
|
12
|
+
text: string;
|
|
13
|
+
}[];
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=get-audit-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-audit-status.d.ts","sourceRoot":"","sources":["../../../src/tools/get-audit-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,oBAAoB;;;;;;EAE/B,CAAC;AAoEH,wBAAsB,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;;;;;GAwD/E"}
|