@unclick/mcp-server 0.3.10 → 0.3.11
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/dist/tool-wiring.d.ts +4 -4
- package/dist/tool-wiring.js +4 -4
- package/dist/tool-wiring.js.map +1 -1
- package/dist/uxpass-tool.d.ts +9 -13
- package/dist/uxpass-tool.d.ts.map +1 -1
- package/dist/uxpass-tool.js +87 -66
- package/dist/uxpass-tool.js.map +1 -1
- package/package.json +1 -1
package/dist/uxpass-tool.d.ts
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* uxpass-tool - MCP handlers for UXPass
|
|
2
|
+
* uxpass-tool - MCP handlers for UXPass.
|
|
3
3
|
*
|
|
4
|
-
* UXPass is the UI/UX sister to TestPass.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* testable before the backend lands.
|
|
4
|
+
* UXPass is the UI/UX sister to TestPass. uxpass_run, uxpass_status, and
|
|
5
|
+
* the three uxpass_report_* tools call back into the UnClick Vercel API at
|
|
6
|
+
* /api/uxpass using the caller's UNCLICK_API_KEY as a Bearer token (same
|
|
7
|
+
* pattern as the testpass tool). The API resolves the key to a user id and
|
|
8
|
+
* persists run + finding rows under that user.
|
|
10
9
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* standalone to npm. The check here is intentionally shallow (parse YAML,
|
|
15
|
-
* confirm the required top-level keys exist). Full validation runs server
|
|
16
|
-
* side when the UXPass API ships in a later chunk.
|
|
10
|
+
* uxpass_register_pack still validates and persists packs to a local file
|
|
11
|
+
* under packs/registered/. The full server-side packs table lands in a
|
|
12
|
+
* later chunk; until then the local persistence keeps the wiring testable.
|
|
17
13
|
*/
|
|
18
14
|
export declare function uxpassRun(args: Record<string, unknown>): Promise<unknown>;
|
|
19
15
|
export declare function uxpassStatus(args: Record<string, unknown>): Promise<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uxpass-tool.d.ts","sourceRoot":"","sources":["../src/uxpass-tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"uxpass-tool.d.ts","sourceRoot":"","sources":["../src/uxpass-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAqEH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA8B/E;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAIlF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAetF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAKtF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAQpF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA4CxF"}
|
package/dist/uxpass-tool.js
CHANGED
|
@@ -1,25 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* uxpass-tool - MCP handlers for UXPass
|
|
2
|
+
* uxpass-tool - MCP handlers for UXPass.
|
|
3
3
|
*
|
|
4
|
-
* UXPass is the UI/UX sister to TestPass.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* testable before the backend lands.
|
|
4
|
+
* UXPass is the UI/UX sister to TestPass. uxpass_run, uxpass_status, and
|
|
5
|
+
* the three uxpass_report_* tools call back into the UnClick Vercel API at
|
|
6
|
+
* /api/uxpass using the caller's UNCLICK_API_KEY as a Bearer token (same
|
|
7
|
+
* pattern as the testpass tool). The API resolves the key to a user id and
|
|
8
|
+
* persists run + finding rows under that user.
|
|
10
9
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* standalone to npm. The check here is intentionally shallow (parse YAML,
|
|
15
|
-
* confirm the required top-level keys exist). Full validation runs server
|
|
16
|
-
* side when the UXPass API ships in a later chunk.
|
|
10
|
+
* uxpass_register_pack still validates and persists packs to a local file
|
|
11
|
+
* under packs/registered/. The full server-side packs table lands in a
|
|
12
|
+
* later chunk; until then the local persistence keeps the wiring testable.
|
|
17
13
|
*/
|
|
18
14
|
import * as fs from "node:fs";
|
|
19
15
|
import * as path from "node:path";
|
|
20
16
|
import * as crypto from "node:crypto";
|
|
21
17
|
import yaml from "js-yaml";
|
|
22
|
-
const
|
|
18
|
+
const API_BASE = (process.env.UNCLICK_API_URL ?? "https://unclick.world").replace(/\/$/, "");
|
|
23
19
|
const PACKS_DIR = path.resolve(process.env.UXPASS_PACKS_DIR ??
|
|
24
20
|
path.join(process.cwd(), "packages", "uxpass", "packs", "registered"));
|
|
25
21
|
const REQUIRED_PACK_KEYS = [
|
|
@@ -32,6 +28,35 @@ const REQUIRED_PACK_KEYS = [
|
|
|
32
28
|
"budgets",
|
|
33
29
|
"remediation",
|
|
34
30
|
];
|
|
31
|
+
function getApiKey() {
|
|
32
|
+
const key = process.env.UNCLICK_API_KEY?.trim();
|
|
33
|
+
if (!key) {
|
|
34
|
+
throw new Error("UNCLICK_API_KEY env var is not set. Get your install config at https://unclick.world");
|
|
35
|
+
}
|
|
36
|
+
return key;
|
|
37
|
+
}
|
|
38
|
+
async function callApi(pathAndQuery, init = {}) {
|
|
39
|
+
const apiKey = getApiKey();
|
|
40
|
+
const res = await fetch(`${API_BASE}/api/uxpass${pathAndQuery}`, {
|
|
41
|
+
method: init.method ?? "GET",
|
|
42
|
+
headers: {
|
|
43
|
+
"Content-Type": "application/json",
|
|
44
|
+
Authorization: `Bearer ${apiKey}`,
|
|
45
|
+
},
|
|
46
|
+
body: init.body !== undefined ? JSON.stringify(init.body) : undefined,
|
|
47
|
+
});
|
|
48
|
+
const text = await res.text();
|
|
49
|
+
let body = text;
|
|
50
|
+
try {
|
|
51
|
+
body = text ? JSON.parse(text) : null;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
/* keep text */
|
|
55
|
+
}
|
|
56
|
+
if (!res.ok)
|
|
57
|
+
return { error: `uxpass API failed (HTTP ${res.status})`, body };
|
|
58
|
+
return body;
|
|
59
|
+
}
|
|
35
60
|
function ensurePacksDir() {
|
|
36
61
|
try {
|
|
37
62
|
fs.mkdirSync(PACKS_DIR, { recursive: true });
|
|
@@ -44,79 +69,75 @@ function safeFilename(name) {
|
|
|
44
69
|
return name.replace(/[^a-zA-Z0-9._-]+/g, "-").slice(0, 120);
|
|
45
70
|
}
|
|
46
71
|
export async function uxpassRun(args) {
|
|
47
|
-
const packName = typeof args.pack_name === "string" ? args.pack_name : undefined;
|
|
48
72
|
const url = typeof args.url === "string" ? args.url : undefined;
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
:
|
|
52
|
-
if (!packName && !url) {
|
|
53
|
-
return { error: "Either pack_name or url is required" };
|
|
73
|
+
const packName = typeof args.pack_name === "string" ? args.pack_name : undefined;
|
|
74
|
+
if (!url && !packName) {
|
|
75
|
+
return { error: "Either url or pack_name is required" };
|
|
54
76
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
77
|
+
// pack_name still resolves locally because pack persistence is file-based
|
|
78
|
+
// until the server-side packs table lands. We resolve it to the pack's
|
|
79
|
+
// declared url and submit a run for that.
|
|
80
|
+
let targetUrl = url;
|
|
81
|
+
if (!targetUrl && packName) {
|
|
82
|
+
try {
|
|
83
|
+
ensurePacksDir();
|
|
84
|
+
const candidate = fs.readdirSync(PACKS_DIR).find((f) => f.startsWith(`${safeFilename(packName)}-`));
|
|
85
|
+
if (!candidate)
|
|
86
|
+
return { error: `No registered pack found for name '${packName}'` };
|
|
87
|
+
const packYaml = fs.readFileSync(path.join(PACKS_DIR, candidate), "utf8");
|
|
88
|
+
const parsed = yaml.load(packYaml);
|
|
89
|
+
if (!parsed?.url)
|
|
90
|
+
return { error: `Pack '${packName}' has no url field` };
|
|
91
|
+
targetUrl = parsed.url;
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
return { error: `failed to read pack '${packName}': ${err.message}` };
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return callApi("?action=start_run", {
|
|
98
|
+
method: "POST",
|
|
99
|
+
body: { target_url: targetUrl, pack_slug: "uxpass-core" },
|
|
100
|
+
});
|
|
64
101
|
}
|
|
65
102
|
export async function uxpassStatus(args) {
|
|
66
103
|
const runId = typeof args.run_id === "string" ? args.run_id : "";
|
|
67
104
|
if (!runId)
|
|
68
105
|
return { error: "run_id is required" };
|
|
69
|
-
return {
|
|
70
|
-
run_id: runId,
|
|
71
|
-
status: "queued",
|
|
72
|
-
ux_score: null,
|
|
73
|
-
summary: STUB_NOTE,
|
|
74
|
-
};
|
|
106
|
+
return callApi(`?action=status&run_id=${encodeURIComponent(runId)}`);
|
|
75
107
|
}
|
|
76
108
|
export async function uxpassReportHtml(args) {
|
|
77
109
|
const runId = typeof args.run_id === "string" ? args.run_id : "";
|
|
78
110
|
if (!runId)
|
|
79
111
|
return { error: "run_id is required" };
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
112
|
+
const apiKey = getApiKey();
|
|
113
|
+
const res = await fetch(`${API_BASE}/api/uxpass?action=report_html&run_id=${encodeURIComponent(runId)}`, { headers: { Authorization: `Bearer ${apiKey}` } });
|
|
114
|
+
const text = await res.text();
|
|
115
|
+
if (!res.ok) {
|
|
116
|
+
let body = text;
|
|
117
|
+
try {
|
|
118
|
+
body = text ? JSON.parse(text) : null;
|
|
119
|
+
}
|
|
120
|
+
catch { /* keep text */ }
|
|
121
|
+
return { error: `uxpass report_html failed (HTTP ${res.status})`, body };
|
|
122
|
+
}
|
|
123
|
+
return { run_id: runId, format: "html", body: text };
|
|
90
124
|
}
|
|
91
125
|
export async function uxpassReportJson(args) {
|
|
92
126
|
const runId = typeof args.run_id === "string" ? args.run_id : "";
|
|
93
127
|
if (!runId)
|
|
94
128
|
return { error: "run_id is required" };
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
format: "json",
|
|
98
|
-
body: {
|
|
99
|
-
run_id: runId,
|
|
100
|
-
status: "queued",
|
|
101
|
-
ux_score: null,
|
|
102
|
-
hat_verdicts: [],
|
|
103
|
-
note: STUB_NOTE,
|
|
104
|
-
},
|
|
105
|
-
};
|
|
129
|
+
const data = await callApi(`?action=report_json&run_id=${encodeURIComponent(runId)}`);
|
|
130
|
+
return { run_id: runId, format: "json", body: data };
|
|
106
131
|
}
|
|
107
132
|
export async function uxpassReportMd(args) {
|
|
108
133
|
const runId = typeof args.run_id === "string" ? args.run_id : "";
|
|
109
134
|
if (!runId)
|
|
110
135
|
return { error: "run_id is required" };
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
"",
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
STUB_NOTE,
|
|
117
|
-
"",
|
|
118
|
-
].join("\n");
|
|
119
|
-
return { run_id: runId, format: "md", body: md };
|
|
136
|
+
const data = await callApi(`?action=report_md&run_id=${encodeURIComponent(runId)}`);
|
|
137
|
+
if (data && typeof data === "object" && "markdown" in data) {
|
|
138
|
+
return { run_id: runId, format: "md", body: data.markdown };
|
|
139
|
+
}
|
|
140
|
+
return data;
|
|
120
141
|
}
|
|
121
142
|
export async function uxpassRegisterPack(args) {
|
|
122
143
|
const packYaml = typeof args.pack_yaml === "string" ? args.pack_yaml : "";
|
|
@@ -159,7 +180,7 @@ export async function uxpassRegisterPack(args) {
|
|
|
159
180
|
pack_id: packId,
|
|
160
181
|
name,
|
|
161
182
|
file: filePath,
|
|
162
|
-
note: "Persisted to local file. Database-backed persistence
|
|
183
|
+
note: "Persisted to local file. Database-backed pack persistence lands in a later chunk; uxpass_run currently resolves pack_name to its declared url and submits a deterministic run.",
|
|
163
184
|
};
|
|
164
185
|
}
|
|
165
186
|
//# sourceMappingURL=uxpass-tool.js.map
|
package/dist/uxpass-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uxpass-tool.js","sourceRoot":"","sources":["../src/uxpass-tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"uxpass-tool.js","sourceRoot":"","sources":["../src/uxpass-tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unclick/mcp-server",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.11",
|
|
4
4
|
"mcpName": "io.github.malamutemayhem/unclick-mcp-server",
|
|
5
5
|
"description": "MCP server for the UnClick tool marketplace — lets AI agents discover and use every UnClick tool",
|
|
6
6
|
"type": "module",
|