@leeguoo/yapi-mcp 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/README.md +2 -0
- package/dist/skill/install.js +54 -532
- package/dist/skill/install.js.map +1 -1
- package/package.json +3 -2
- package/skill-template/SKILL.md +35 -0
package/README.md
CHANGED
package/dist/skill/install.js
CHANGED
|
@@ -12,518 +12,48 @@ const yargs_1 = __importDefault(require("yargs"));
|
|
|
12
12
|
const SKILL_NAME = "yapi";
|
|
13
13
|
const PLACEHOLDER_EMAIL = "YOUR_EMAIL";
|
|
14
14
|
const PLACEHOLDER_PASSWORD = "YOUR_PASSWORD";
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
""
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
""
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
"",
|
|
56
|
-
|
|
57
|
-
const REQUEST_SCRIPT = [
|
|
58
|
-
"#!/usr/bin/env node",
|
|
59
|
-
'"use strict";',
|
|
60
|
-
"",
|
|
61
|
-
'const fs = require("fs");',
|
|
62
|
-
'const os = require("os");',
|
|
63
|
-
'const path = require("path");',
|
|
64
|
-
'const readline = require("readline");',
|
|
65
|
-
"",
|
|
66
|
-
"function parseKeyValue(raw) {",
|
|
67
|
-
' if (!raw || !raw.includes("=")) throw new Error("expected key=value");',
|
|
68
|
-
' const idx = raw.indexOf("=");',
|
|
69
|
-
" return [raw.slice(0, idx), raw.slice(idx + 1)];",
|
|
70
|
-
"}",
|
|
71
|
-
"",
|
|
72
|
-
"function parseHeader(raw) {",
|
|
73
|
-
' if (!raw || !raw.includes(":")) throw new Error("expected Header:Value");',
|
|
74
|
-
' const idx = raw.indexOf(":");',
|
|
75
|
-
" return [raw.slice(0, idx).trim(), raw.slice(idx + 1).trim()];",
|
|
76
|
-
"}",
|
|
77
|
-
"",
|
|
78
|
-
"function joinUrl(baseUrl, endpoint) {",
|
|
79
|
-
" if (!baseUrl) return endpoint;",
|
|
80
|
-
' if (baseUrl.endsWith("/") && endpoint.startsWith("/")) return baseUrl.slice(0, -1) + endpoint;',
|
|
81
|
-
' if (!baseUrl.endsWith("/") && !endpoint.startsWith("/")) return baseUrl + "/" + endpoint;',
|
|
82
|
-
" return baseUrl + endpoint;",
|
|
83
|
-
"}",
|
|
84
|
-
"",
|
|
85
|
-
"function globalConfigPath() {",
|
|
86
|
-
' const yapiHome = process.env.YAPI_HOME || path.join(os.homedir(), ".yapi");',
|
|
87
|
-
' return path.join(yapiHome, "config.toml");',
|
|
88
|
-
"}",
|
|
89
|
-
"",
|
|
90
|
-
"function localConfigPath() {",
|
|
91
|
-
' return path.resolve(__dirname, "..", "config.toml");',
|
|
92
|
-
"}",
|
|
93
|
-
"",
|
|
94
|
-
"function ensureDir(dirPath) {",
|
|
95
|
-
" try {",
|
|
96
|
-
" fs.mkdirSync(dirPath, { recursive: true });",
|
|
97
|
-
" } catch {",
|
|
98
|
-
" // ignore",
|
|
99
|
-
" }",
|
|
100
|
-
"}",
|
|
101
|
-
"",
|
|
102
|
-
"function escapeTomlValue(value) {",
|
|
103
|
-
' return String(value || "").replace(/\\\\/g, "\\\\\\\\").replace(/\\"/g, "\\\\\\"");',
|
|
104
|
-
"}",
|
|
105
|
-
"",
|
|
106
|
-
"function formatToml(config) {",
|
|
107
|
-
' const orderedKeys = ["base_url", "auth_mode", "email", "password", "token", "project_id"];',
|
|
108
|
-
' const lines = ["# YApi CLI config"];',
|
|
109
|
-
" for (const key of orderedKeys) {",
|
|
110
|
-
' const value = config[key] || "";',
|
|
111
|
-
' lines.push(`${key} = \\"${escapeTomlValue(value)}\\"`);',
|
|
112
|
-
" }",
|
|
113
|
-
' return lines.join("\\n") + "\\n";',
|
|
114
|
-
"}",
|
|
115
|
-
"",
|
|
116
|
-
"function writeConfig(filePath, config) {",
|
|
117
|
-
" ensureDir(path.dirname(filePath));",
|
|
118
|
-
' fs.writeFileSync(filePath, formatToml(config), "utf8");',
|
|
119
|
-
"}",
|
|
120
|
-
"",
|
|
121
|
-
"function promptText(question) {",
|
|
122
|
-
" const rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal: true });",
|
|
123
|
-
" return new Promise((resolve) => {",
|
|
124
|
-
" rl.question(question, (answer) => {",
|
|
125
|
-
" rl.close();",
|
|
126
|
-
" resolve(answer);",
|
|
127
|
-
" });",
|
|
128
|
-
" });",
|
|
129
|
-
"}",
|
|
130
|
-
"",
|
|
131
|
-
"function promptHidden(question) {",
|
|
132
|
-
" const rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal: true });",
|
|
133
|
-
" const originalWrite = rl._writeToOutput;",
|
|
134
|
-
" rl._writeToOutput = function writeToOutput(stringToWrite) {",
|
|
135
|
-
" if (rl.stdoutMuted) return;",
|
|
136
|
-
' if (typeof originalWrite === "function") {',
|
|
137
|
-
" originalWrite.call(this, stringToWrite);",
|
|
138
|
-
" } else {",
|
|
139
|
-
" rl.output.write(stringToWrite);",
|
|
140
|
-
" }",
|
|
141
|
-
" };",
|
|
142
|
-
" rl.stdoutMuted = true;",
|
|
143
|
-
" return new Promise((resolve) => {",
|
|
144
|
-
" rl.question(question, (answer) => {",
|
|
145
|
-
" rl.stdoutMuted = false;",
|
|
146
|
-
" rl.close();",
|
|
147
|
-
" resolve(answer);",
|
|
148
|
-
" });",
|
|
149
|
-
" });",
|
|
150
|
-
"}",
|
|
151
|
-
"",
|
|
152
|
-
"async function promptRequired(question, hidden) {",
|
|
153
|
-
" while (true) {",
|
|
154
|
-
" const answer = hidden ? await promptHidden(question) : await promptText(question);",
|
|
155
|
-
' const trimmed = String(answer || "").trim();',
|
|
156
|
-
" if (trimmed) return trimmed;",
|
|
157
|
-
" }",
|
|
158
|
-
"}",
|
|
159
|
-
"",
|
|
160
|
-
"async function initConfigIfMissing(options) {",
|
|
161
|
-
" const hasBaseUrl = Boolean(options.baseUrl);",
|
|
162
|
-
" const hasEmail = Boolean(options.email);",
|
|
163
|
-
" const hasPassword = Boolean(options.password);",
|
|
164
|
-
" if (!hasBaseUrl || !hasEmail || !hasPassword) {",
|
|
165
|
-
" if (!process.stdin.isTTY || !process.stdout.isTTY) return null;",
|
|
166
|
-
" }",
|
|
167
|
-
' const baseUrl = hasBaseUrl ? options.baseUrl : await promptRequired("YApi base URL: ", false);',
|
|
168
|
-
' const email = hasEmail ? options.email : await promptRequired("YApi email: ", false);',
|
|
169
|
-
' const password = hasPassword ? options.password : await promptRequired("YApi password: ", true);',
|
|
170
|
-
" const config = {",
|
|
171
|
-
" base_url: baseUrl,",
|
|
172
|
-
' auth_mode: "global",',
|
|
173
|
-
" email,",
|
|
174
|
-
" password,",
|
|
175
|
-
' token: options.token || "",',
|
|
176
|
-
' project_id: options.projectId || "",',
|
|
177
|
-
" };",
|
|
178
|
-
" const configPath = globalConfigPath();",
|
|
179
|
-
" writeConfig(configPath, config);",
|
|
180
|
-
" return { configPath, config };",
|
|
181
|
-
"}",
|
|
182
|
-
"",
|
|
183
|
-
"function parseSimpleToml(text) {",
|
|
184
|
-
" const data = {};",
|
|
185
|
-
' const lines = String(text || "").split(/\\r?\\n/);',
|
|
186
|
-
" for (const rawLine of lines) {",
|
|
187
|
-
' const line = rawLine.split("#", 1)[0].split(";", 1)[0].trim();',
|
|
188
|
-
' if (!line || line.startsWith("[")) continue;',
|
|
189
|
-
' const idx = line.indexOf("=");',
|
|
190
|
-
" if (idx === -1) continue;",
|
|
191
|
-
" const key = line.slice(0, idx).trim();",
|
|
192
|
-
" let value = line.slice(idx + 1).trim();",
|
|
193
|
-
" if (!key) continue;",
|
|
194
|
-
" if ((value.startsWith('\"') && value.endsWith('\"')) || (value.startsWith(\"'\") && value.endsWith(\"'\"))) {",
|
|
195
|
-
" value = value.slice(1, -1);",
|
|
196
|
-
" }",
|
|
197
|
-
" data[key] = value;",
|
|
198
|
-
" }",
|
|
199
|
-
" return data;",
|
|
200
|
-
"}",
|
|
201
|
-
"",
|
|
202
|
-
"function resolveToken(tokenValue, projectId) {",
|
|
203
|
-
' if (!tokenValue) return "";',
|
|
204
|
-
' if (tokenValue.includes(",") || tokenValue.includes(":")) {',
|
|
205
|
-
' let defaultToken = "";',
|
|
206
|
-
" const mapping = {};",
|
|
207
|
-
' tokenValue.split(",").forEach((rawPair) => {',
|
|
208
|
-
" const pair = rawPair.trim();",
|
|
209
|
-
" if (!pair) return;",
|
|
210
|
-
' const idx = pair.indexOf(":");',
|
|
211
|
-
" if (idx === -1) {",
|
|
212
|
-
" defaultToken = pair;",
|
|
213
|
-
" return;",
|
|
214
|
-
" }",
|
|
215
|
-
" const pid = pair.slice(0, idx).trim();",
|
|
216
|
-
" const token = pair.slice(idx + 1).trim();",
|
|
217
|
-
" if (pid && token) mapping[pid] = token;",
|
|
218
|
-
" });",
|
|
219
|
-
" if (projectId && mapping[projectId]) return mapping[projectId];",
|
|
220
|
-
" if (defaultToken) return defaultToken;",
|
|
221
|
-
" const keys = Object.keys(mapping);",
|
|
222
|
-
" if (keys.length) return mapping[keys[0]];",
|
|
223
|
-
" }",
|
|
224
|
-
" return tokenValue;",
|
|
225
|
-
"}",
|
|
226
|
-
"",
|
|
227
|
-
"function getSetCookie(headers) {",
|
|
228
|
-
" if (!headers) return [];",
|
|
229
|
-
' if (typeof headers.getSetCookie === "function") return headers.getSetCookie();',
|
|
230
|
-
' const value = headers.get("set-cookie");',
|
|
231
|
-
" return value ? [value] : [];",
|
|
232
|
-
"}",
|
|
233
|
-
"",
|
|
234
|
-
"function extractCookieValue(setCookies, name) {",
|
|
235
|
-
' if (!setCookies || !setCookies.length) return "";',
|
|
236
|
-
" for (const entry of setCookies) {",
|
|
237
|
-
' const parts = String(entry || "").split(";");',
|
|
238
|
-
" for (const part of parts) {",
|
|
239
|
-
" const item = part.trim();",
|
|
240
|
-
' if (item.startsWith(name + "=")) return item.split("=").slice(1).join("=");',
|
|
241
|
-
" }",
|
|
242
|
-
" }",
|
|
243
|
-
' return "";',
|
|
244
|
-
"}",
|
|
245
|
-
"",
|
|
246
|
-
"async function fetchWithTimeout(url, options, timeoutMs) {",
|
|
247
|
-
" const controller = new AbortController();",
|
|
248
|
-
" const timer = setTimeout(() => controller.abort(), timeoutMs);",
|
|
249
|
-
" try {",
|
|
250
|
-
" return await fetch(url, { ...options, signal: controller.signal });",
|
|
251
|
-
" } finally {",
|
|
252
|
-
" clearTimeout(timer);",
|
|
253
|
-
" }",
|
|
254
|
-
"}",
|
|
255
|
-
"",
|
|
256
|
-
"async function loginGetCookie(baseUrl, email, password, timeoutMs) {",
|
|
257
|
-
' const url = joinUrl(baseUrl, "/api/user/login");',
|
|
258
|
-
" const payload = JSON.stringify({ email, password });",
|
|
259
|
-
" const response = await fetchWithTimeout(url, {",
|
|
260
|
-
' method: "POST",',
|
|
261
|
-
' headers: { "Content-Type": "application/json;charset=UTF-8" },',
|
|
262
|
-
" body: payload,",
|
|
263
|
-
" }, timeoutMs);",
|
|
264
|
-
" const bodyText = await response.text();",
|
|
265
|
-
" const setCookies = getSetCookie(response.headers);",
|
|
266
|
-
' const yapiToken = extractCookieValue(setCookies, "_yapi_token");',
|
|
267
|
-
' const yapiUid = extractCookieValue(setCookies, "_yapi_uid");',
|
|
268
|
-
" if (!yapiToken) {",
|
|
269
|
-
' let message = "login failed: missing _yapi_token cookie";',
|
|
270
|
-
" try {",
|
|
271
|
-
" const payload = JSON.parse(bodyText);",
|
|
272
|
-
' if (payload && typeof payload === "object" && payload.errmsg) message = payload.errmsg;',
|
|
273
|
-
" } catch {",
|
|
274
|
-
" // ignore",
|
|
275
|
-
" }",
|
|
276
|
-
" throw new Error(message);",
|
|
277
|
-
" }",
|
|
278
|
-
" let cookie = `_yapi_token=${yapiToken}`;",
|
|
279
|
-
" if (yapiUid) cookie = `${cookie}; _yapi_uid=${yapiUid}`;",
|
|
280
|
-
" return cookie;",
|
|
281
|
-
"}",
|
|
282
|
-
"",
|
|
283
|
-
"function buildUrl(baseUrl, endpoint, queryItems, token, tokenParam) {",
|
|
284
|
-
" const url = baseUrl ? joinUrl(baseUrl, endpoint) : endpoint;",
|
|
285
|
-
" const parsed = new URL(url);",
|
|
286
|
-
" if (Array.isArray(queryItems)) {",
|
|
287
|
-
" for (const [key, value] of queryItems) {",
|
|
288
|
-
' if (key) parsed.searchParams.append(key, value ?? "");',
|
|
289
|
-
" }",
|
|
290
|
-
" }",
|
|
291
|
-
" if (token) {",
|
|
292
|
-
" if (!parsed.searchParams.has(tokenParam)) {",
|
|
293
|
-
" parsed.searchParams.append(tokenParam, token);",
|
|
294
|
-
" }",
|
|
295
|
-
" }",
|
|
296
|
-
" return parsed.toString();",
|
|
297
|
-
"}",
|
|
298
|
-
"",
|
|
299
|
-
"function parseArgs(argv) {",
|
|
300
|
-
" const options = {",
|
|
301
|
-
" query: [],",
|
|
302
|
-
" header: [],",
|
|
303
|
-
' method: "GET",',
|
|
304
|
-
' tokenParam: "token",',
|
|
305
|
-
" timeout: 30000,",
|
|
306
|
-
" };",
|
|
307
|
-
" for (let i = 0; i < argv.length; i += 1) {",
|
|
308
|
-
" const arg = argv[i];",
|
|
309
|
-
" if (!arg) continue;",
|
|
310
|
-
' if (arg === "--config") { options.config = argv[++i]; continue; }',
|
|
311
|
-
' if (arg.startsWith("--config=")) { options.config = arg.slice(9); continue; }',
|
|
312
|
-
' if (arg === "--base-url") { options.baseUrl = argv[++i]; continue; }',
|
|
313
|
-
' if (arg.startsWith("--base-url=")) { options.baseUrl = arg.slice(11); continue; }',
|
|
314
|
-
' if (arg === "--token") { options.token = argv[++i]; continue; }',
|
|
315
|
-
' if (arg.startsWith("--token=")) { options.token = arg.slice(8); continue; }',
|
|
316
|
-
' if (arg === "--project-id") { options.projectId = argv[++i]; continue; }',
|
|
317
|
-
' if (arg.startsWith("--project-id=")) { options.projectId = arg.slice(13); continue; }',
|
|
318
|
-
' if (arg === "--auth-mode") { options.authMode = argv[++i]; continue; }',
|
|
319
|
-
' if (arg.startsWith("--auth-mode=")) { options.authMode = arg.slice(12); continue; }',
|
|
320
|
-
' if (arg === "--email") { options.email = argv[++i]; continue; }',
|
|
321
|
-
' if (arg.startsWith("--email=")) { options.email = arg.slice(8); continue; }',
|
|
322
|
-
' if (arg === "--password") { options.password = argv[++i]; continue; }',
|
|
323
|
-
' if (arg.startsWith("--password=")) { options.password = arg.slice(11); continue; }',
|
|
324
|
-
' if (arg === "--cookie") { options.cookie = argv[++i]; continue; }',
|
|
325
|
-
' if (arg.startsWith("--cookie=")) { options.cookie = arg.slice(9); continue; }',
|
|
326
|
-
' if (arg === "--token-param") { options.tokenParam = argv[++i]; continue; }',
|
|
327
|
-
' if (arg.startsWith("--token-param=")) { options.tokenParam = arg.slice(14); continue; }',
|
|
328
|
-
' if (arg === "--method") { options.method = argv[++i]; continue; }',
|
|
329
|
-
' if (arg.startsWith("--method=")) { options.method = arg.slice(9); continue; }',
|
|
330
|
-
' if (arg === "--path") { options.path = argv[++i]; continue; }',
|
|
331
|
-
' if (arg.startsWith("--path=")) { options.path = arg.slice(7); continue; }',
|
|
332
|
-
' if (arg === "--url") { options.url = argv[++i]; continue; }',
|
|
333
|
-
' if (arg.startsWith("--url=")) { options.url = arg.slice(6); continue; }',
|
|
334
|
-
' if (arg === "--query") { options.query.push(argv[++i]); continue; }',
|
|
335
|
-
' if (arg.startsWith("--query=")) { options.query.push(arg.slice(8)); continue; }',
|
|
336
|
-
' if (arg === "--header") { options.header.push(argv[++i]); continue; }',
|
|
337
|
-
' if (arg.startsWith("--header=")) { options.header.push(arg.slice(9)); continue; }',
|
|
338
|
-
' if (arg === "--data") { options.data = argv[++i]; continue; }',
|
|
339
|
-
' if (arg.startsWith("--data=")) { options.data = arg.slice(7); continue; }',
|
|
340
|
-
' if (arg === "--data-file") { options.dataFile = argv[++i]; continue; }',
|
|
341
|
-
' if (arg.startsWith("--data-file=")) { options.dataFile = arg.slice(12); continue; }',
|
|
342
|
-
' if (arg === "--timeout") { options.timeout = Number(argv[++i]); continue; }',
|
|
343
|
-
' if (arg.startsWith("--timeout=")) { options.timeout = Number(arg.slice(10)); continue; }',
|
|
344
|
-
' if (arg === "--no-pretty") { options.noPretty = true; continue; }',
|
|
345
|
-
' if (arg === "--help" || arg === "-h") { options.help = true; continue; }',
|
|
346
|
-
" }",
|
|
347
|
-
" return options;",
|
|
348
|
-
"}",
|
|
349
|
-
"",
|
|
350
|
-
"function usage() {",
|
|
351
|
-
" return [",
|
|
352
|
-
' "Usage:",',
|
|
353
|
-
' " node yapi_request.js --path /api/interface/get --query id=123",',
|
|
354
|
-
' "Options:",',
|
|
355
|
-
' " --config <path> config file path (default: ~/.yapi/config.toml)",',
|
|
356
|
-
' " --base-url <url> YApi base URL",',
|
|
357
|
-
' " --token <token> project token (supports projectId:token)",',
|
|
358
|
-
' " --project-id <id> select token for project",',
|
|
359
|
-
' " --auth-mode <mode> token or global",',
|
|
360
|
-
' " --email <email> login email for global mode",',
|
|
361
|
-
' " --password <pwd> login password for global mode",',
|
|
362
|
-
' " --path <path> API path (e.g., /api/interface/get)",',
|
|
363
|
-
' " --url <url> full URL (overrides base-url/path)",',
|
|
364
|
-
' " --query key=value query param (repeatable)",',
|
|
365
|
-
' " --header Header:Value request header (repeatable)",',
|
|
366
|
-
' " --method <method> HTTP method",',
|
|
367
|
-
' " --data <payload> request body (JSON or text)",',
|
|
368
|
-
' " --data-file <file> request body file",',
|
|
369
|
-
' " --timeout <ms> request timeout in ms",',
|
|
370
|
-
' " --no-pretty print raw response",',
|
|
371
|
-
' ].join("\\n");',
|
|
372
|
-
"}",
|
|
373
|
-
"",
|
|
374
|
-
"async function main() {",
|
|
375
|
-
" const options = parseArgs(process.argv.slice(2));",
|
|
376
|
-
" if (options.help) {",
|
|
377
|
-
" console.log(usage());",
|
|
378
|
-
" return 0;",
|
|
379
|
-
" }",
|
|
380
|
-
"",
|
|
381
|
-
" if (options.url && options.path) {",
|
|
382
|
-
' console.error("use --url or --path, not both");',
|
|
383
|
-
" return 2;",
|
|
384
|
-
" }",
|
|
385
|
-
"",
|
|
386
|
-
" if (!options.url && !options.path) {",
|
|
387
|
-
' console.error("missing --path or --url");',
|
|
388
|
-
" console.error(usage());",
|
|
389
|
-
" return 2;",
|
|
390
|
-
" }",
|
|
391
|
-
"",
|
|
392
|
-
" let config = {};",
|
|
393
|
-
' let configPath = options.config || "";',
|
|
394
|
-
" if (options.config) {",
|
|
395
|
-
" if (fs.existsSync(configPath)) {",
|
|
396
|
-
' config = parseSimpleToml(fs.readFileSync(configPath, "utf8"));',
|
|
397
|
-
" } else {",
|
|
398
|
-
" const init = await initConfigIfMissing(options);",
|
|
399
|
-
" if (init) {",
|
|
400
|
-
" config = init.config;",
|
|
401
|
-
" configPath = init.configPath;",
|
|
402
|
-
" } else {",
|
|
403
|
-
" console.error(`missing config file: ${configPath}`);",
|
|
404
|
-
" return 2;",
|
|
405
|
-
" }",
|
|
406
|
-
" }",
|
|
407
|
-
" } else {",
|
|
408
|
-
" const globalPath = globalConfigPath();",
|
|
409
|
-
" const localPath = localConfigPath();",
|
|
410
|
-
" if (fs.existsSync(globalPath)) {",
|
|
411
|
-
" configPath = globalPath;",
|
|
412
|
-
' config = parseSimpleToml(fs.readFileSync(globalPath, "utf8"));',
|
|
413
|
-
" } else if (fs.existsSync(localPath)) {",
|
|
414
|
-
" configPath = localPath;",
|
|
415
|
-
' config = parseSimpleToml(fs.readFileSync(localPath, "utf8"));',
|
|
416
|
-
" } else {",
|
|
417
|
-
" const init = await initConfigIfMissing(options);",
|
|
418
|
-
" if (init) {",
|
|
419
|
-
" config = init.config;",
|
|
420
|
-
" configPath = init.configPath;",
|
|
421
|
-
" } else {",
|
|
422
|
-
' console.error("missing config: create ~/.yapi/config.toml or pass --config");',
|
|
423
|
-
" return 2;",
|
|
424
|
-
" }",
|
|
425
|
-
" }",
|
|
426
|
-
" }",
|
|
427
|
-
"",
|
|
428
|
-
' const baseUrl = options.url ? null : (options.baseUrl || config.base_url || "");',
|
|
429
|
-
" const endpoint = options.url || options.path;",
|
|
430
|
-
" if (!options.url && !baseUrl) {",
|
|
431
|
-
' console.error("missing --base-url or config base_url");',
|
|
432
|
-
" return 2;",
|
|
433
|
-
" }",
|
|
434
|
-
"",
|
|
435
|
-
' const projectId = options.projectId || config.project_id || "";',
|
|
436
|
-
' const rawToken = options.token || config.token || "";',
|
|
437
|
-
" const token = resolveToken(rawToken, projectId);",
|
|
438
|
-
"",
|
|
439
|
-
' let authMode = (options.authMode || config.auth_mode || "").trim().toLowerCase();',
|
|
440
|
-
" if (!authMode) {",
|
|
441
|
-
' authMode = token ? "token" : (options.email || options.password || config.email || config.password) ? "global" : "token";',
|
|
442
|
-
" }",
|
|
443
|
-
' if (authMode !== "token" && authMode !== "global") {',
|
|
444
|
-
' console.error("invalid --auth-mode (use token or global)");',
|
|
445
|
-
" return 2;",
|
|
446
|
-
" }",
|
|
447
|
-
"",
|
|
448
|
-
" const headers = {};",
|
|
449
|
-
" for (const header of options.header || []) {",
|
|
450
|
-
" const [key, value] = parseHeader(header);",
|
|
451
|
-
" headers[key] = value;",
|
|
452
|
-
" }",
|
|
453
|
-
"",
|
|
454
|
-
" if (options.cookie) {",
|
|
455
|
-
" headers.Cookie = options.cookie;",
|
|
456
|
-
' } else if (authMode === "global") {',
|
|
457
|
-
" const email = options.email || config.email;",
|
|
458
|
-
" const password = options.password || config.password;",
|
|
459
|
-
" if (!email || !password) {",
|
|
460
|
-
' console.error("missing email/password for global auth");',
|
|
461
|
-
" return 2;",
|
|
462
|
-
" }",
|
|
463
|
-
" try {",
|
|
464
|
-
" headers.Cookie = await loginGetCookie(baseUrl, email, password, options.timeout);",
|
|
465
|
-
" } catch (error) {",
|
|
466
|
-
" console.error(error && error.message ? error.message : String(error));",
|
|
467
|
-
" return 2;",
|
|
468
|
-
" }",
|
|
469
|
-
" }",
|
|
470
|
-
"",
|
|
471
|
-
" const queryItems = [];",
|
|
472
|
-
" for (const query of options.query || []) {",
|
|
473
|
-
" queryItems.push(parseKeyValue(query));",
|
|
474
|
-
" }",
|
|
475
|
-
' const url = buildUrl(baseUrl, endpoint, queryItems, authMode === "token" ? token : "", options.tokenParam);',
|
|
476
|
-
"",
|
|
477
|
-
" let dataRaw = null;",
|
|
478
|
-
" if (options.dataFile) {",
|
|
479
|
-
' dataRaw = fs.readFileSync(options.dataFile, "utf8");',
|
|
480
|
-
" } else if (options.data !== undefined) {",
|
|
481
|
-
" dataRaw = options.data;",
|
|
482
|
-
" }",
|
|
483
|
-
"",
|
|
484
|
-
" let body;",
|
|
485
|
-
' if (dataRaw !== null && options.method.toUpperCase() !== "GET" && options.method.toUpperCase() !== "HEAD") {',
|
|
486
|
-
" try {",
|
|
487
|
-
" const parsed = JSON.parse(dataRaw);",
|
|
488
|
-
" body = JSON.stringify(parsed);",
|
|
489
|
-
' if (!headers["Content-Type"]) headers["Content-Type"] = "application/json";',
|
|
490
|
-
" } catch {",
|
|
491
|
-
" body = String(dataRaw);",
|
|
492
|
-
' if (!headers["Content-Type"]) headers["Content-Type"] = "text/plain";',
|
|
493
|
-
" }",
|
|
494
|
-
" }",
|
|
495
|
-
"",
|
|
496
|
-
" let response;",
|
|
497
|
-
" try {",
|
|
498
|
-
" response = await fetchWithTimeout(url, {",
|
|
499
|
-
" method: options.method.toUpperCase(),",
|
|
500
|
-
" headers,",
|
|
501
|
-
" body,",
|
|
502
|
-
" }, options.timeout);",
|
|
503
|
-
" } catch (error) {",
|
|
504
|
-
' console.error("request failed: " + (error && error.message ? error.message : String(error)));',
|
|
505
|
-
" return 2;",
|
|
506
|
-
" }",
|
|
507
|
-
"",
|
|
508
|
-
" const text = await response.text();",
|
|
509
|
-
" if (options.noPretty) {",
|
|
510
|
-
" console.log(text);",
|
|
511
|
-
" return 0;",
|
|
512
|
-
" }",
|
|
513
|
-
" try {",
|
|
514
|
-
" const payload = JSON.parse(text);",
|
|
515
|
-
" console.log(JSON.stringify(payload, null, 2));",
|
|
516
|
-
" } catch {",
|
|
517
|
-
" console.log(text);",
|
|
518
|
-
" }",
|
|
519
|
-
" return 0;",
|
|
520
|
-
"}",
|
|
521
|
-
"",
|
|
522
|
-
"main().then((code) => {",
|
|
523
|
-
" process.exitCode = code;",
|
|
524
|
-
"});",
|
|
525
|
-
"",
|
|
526
|
-
].join("\n");
|
|
15
|
+
const SKILL_TEMPLATE_DIR = "skill-template";
|
|
16
|
+
const SKILL_TEMPLATE_FILE = "SKILL.md";
|
|
17
|
+
function detectPackageManager() {
|
|
18
|
+
const userAgent = process.env.npm_config_user_agent || "";
|
|
19
|
+
if (userAgent.includes("pnpm"))
|
|
20
|
+
return "pnpm";
|
|
21
|
+
if (userAgent.includes("yarn"))
|
|
22
|
+
return "yarn";
|
|
23
|
+
if (userAgent.includes("npm"))
|
|
24
|
+
return "npm";
|
|
25
|
+
const execPath = process.env.npm_execpath || "";
|
|
26
|
+
if (execPath.includes("pnpm"))
|
|
27
|
+
return "pnpm";
|
|
28
|
+
if (execPath.includes("yarn"))
|
|
29
|
+
return "yarn";
|
|
30
|
+
if (execPath.includes("npm"))
|
|
31
|
+
return "npm";
|
|
32
|
+
return "unknown";
|
|
33
|
+
}
|
|
34
|
+
function resolvePackageRoot(startDir) {
|
|
35
|
+
let current = path_1.default.resolve(startDir);
|
|
36
|
+
const { root } = path_1.default.parse(current);
|
|
37
|
+
while (true) {
|
|
38
|
+
const candidate = path_1.default.join(current, "package.json");
|
|
39
|
+
if (fs_1.default.existsSync(candidate)) {
|
|
40
|
+
let pkgName;
|
|
41
|
+
try {
|
|
42
|
+
const pkg = JSON.parse(fs_1.default.readFileSync(candidate, "utf8"));
|
|
43
|
+
pkgName = pkg.name;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
pkgName = undefined;
|
|
47
|
+
}
|
|
48
|
+
if (pkgName === "@leeguoo/yapi-mcp")
|
|
49
|
+
return current;
|
|
50
|
+
}
|
|
51
|
+
if (current === root)
|
|
52
|
+
break;
|
|
53
|
+
current = path_1.default.dirname(current);
|
|
54
|
+
}
|
|
55
|
+
return path_1.default.resolve(__dirname, "..", "..");
|
|
56
|
+
}
|
|
527
57
|
function parseSimpleToml(text) {
|
|
528
58
|
const data = {};
|
|
529
59
|
for (const rawLine of text.split(/\r?\n/)) {
|
|
@@ -564,19 +94,6 @@ function formatToml(config) {
|
|
|
564
94
|
}
|
|
565
95
|
return `${lines.join("\n")}\n`;
|
|
566
96
|
}
|
|
567
|
-
function writeFileIfNeeded(filePath, contents, force) {
|
|
568
|
-
if (!force && fs_1.default.existsSync(filePath))
|
|
569
|
-
return false;
|
|
570
|
-
fs_1.default.writeFileSync(filePath, contents, "utf8");
|
|
571
|
-
return true;
|
|
572
|
-
}
|
|
573
|
-
function ensureExecutable(filePath) {
|
|
574
|
-
try {
|
|
575
|
-
fs_1.default.chmodSync(filePath, 0o755);
|
|
576
|
-
}
|
|
577
|
-
catch {
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
97
|
function ensurePrivate(filePath) {
|
|
581
98
|
try {
|
|
582
99
|
fs_1.default.chmodSync(filePath, 0o600);
|
|
@@ -728,6 +245,13 @@ async function runInstallSkill(rawArgs) {
|
|
|
728
245
|
}
|
|
729
246
|
}
|
|
730
247
|
merged.password = password;
|
|
248
|
+
const packageRoot = resolvePackageRoot(__dirname);
|
|
249
|
+
const templatePath = path_1.default.join(packageRoot, SKILL_TEMPLATE_DIR, SKILL_TEMPLATE_FILE);
|
|
250
|
+
if (!fs_1.default.existsSync(templatePath)) {
|
|
251
|
+
const manager = detectPackageManager();
|
|
252
|
+
throw new Error(`Missing skill template: ${templatePath} (package root: ${packageRoot}, manager: ${manager})`);
|
|
253
|
+
}
|
|
254
|
+
const skillTemplate = fs_1.default.readFileSync(templatePath, "utf8");
|
|
731
255
|
const installedRoots = [];
|
|
732
256
|
const configPaths = [];
|
|
733
257
|
fs_1.default.mkdirSync(yapiHome, { recursive: true });
|
|
@@ -735,15 +259,13 @@ async function runInstallSkill(rawArgs) {
|
|
|
735
259
|
ensurePrivate(globalConfigPath);
|
|
736
260
|
configPaths.push(globalConfigPath);
|
|
737
261
|
for (const target of uniqueTargets) {
|
|
738
|
-
|
|
262
|
+
if (fs_1.default.existsSync(target.root)) {
|
|
263
|
+
fs_1.default.rmSync(target.root, { recursive: true, force: true });
|
|
264
|
+
}
|
|
265
|
+
fs_1.default.mkdirSync(target.root, { recursive: true });
|
|
739
266
|
const configPath = path_1.default.join(target.root, "config.toml");
|
|
740
267
|
const skillPath = path_1.default.join(target.root, "SKILL.md");
|
|
741
|
-
|
|
742
|
-
fs_1.default.mkdirSync(scriptsDir, { recursive: true });
|
|
743
|
-
writeFileIfNeeded(skillPath, SKILL_MD, argv.force ?? false);
|
|
744
|
-
const scriptWritten = writeFileIfNeeded(scriptPath, REQUEST_SCRIPT, argv.force ?? false);
|
|
745
|
-
if (scriptWritten)
|
|
746
|
-
ensureExecutable(scriptPath);
|
|
268
|
+
fs_1.default.writeFileSync(skillPath, skillTemplate, "utf8");
|
|
747
269
|
fs_1.default.writeFileSync(configPath, formatToml(merged), "utf8");
|
|
748
270
|
ensurePrivate(configPath);
|
|
749
271
|
installedRoots.push(`${target.label}: ${target.root}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/skill/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/skill/install.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leeguoo/yapi-mcp",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.11",
|
|
4
4
|
"description": "YApi Auto MCP Server - Model Context Protocol server for YApi integration, enables AI tools like Cursor to interact with YApi API documentation",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|
|
13
|
-
"README.md"
|
|
13
|
+
"README.md",
|
|
14
|
+
"skill-template"
|
|
14
15
|
],
|
|
15
16
|
"scripts": {
|
|
16
17
|
"build": "tsc && tsc-alias",
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: yapi
|
|
3
|
+
description: Query and sync YApi interface documentation. Use when user mentions "yapi 接口文档", YAPI docs, asks for request/response details, or needs docs sync.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# YApi interface docs
|
|
7
|
+
|
|
8
|
+
## Workflow
|
|
9
|
+
1. Load config from `~/.yapi/config.toml` (base_url, auth_mode, email/password or token, optional project_id).
|
|
10
|
+
2. Identify the target interface by id or keyword; ask for project/category ids if needed.
|
|
11
|
+
3. Call YApi endpoints with the CLI (see examples below) to fetch raw JSON.
|
|
12
|
+
4. Summarize method, path, headers, query/body schema, response schema, and examples.
|
|
13
|
+
|
|
14
|
+
## CLI
|
|
15
|
+
- Install & run: `npx -y @leeguoo/yapi-mcp yapi -h` (or install globally and use `yapi`).
|
|
16
|
+
- Use the same config as the skill: `~/.yapi/config.toml`.
|
|
17
|
+
- Examples:
|
|
18
|
+
- `yapi --path /api/interface/get --query id=123`
|
|
19
|
+
- `yapi search --q keyword`
|
|
20
|
+
- `yapi whoami`
|
|
21
|
+
|
|
22
|
+
## Docs sync
|
|
23
|
+
- Bind local docs to YApi category with `yapi docs-sync bind add --name <binding> --dir <path> --project-id <id> --catid <id>` (stored in `.yapi/docs-sync.json`).
|
|
24
|
+
- Sync with `yapi docs-sync --binding <binding>` or run all bindings with `yapi docs-sync`.
|
|
25
|
+
- Default syncs only changed files; use `--force` to sync everything.
|
|
26
|
+
- Mermaid rendering depends on `mmdc` (auto-installed if possible; failures do not block sync).
|
|
27
|
+
- For full Markdown render, install `pandoc` (manual install required).
|
|
28
|
+
- Extra mappings (generated after docs-sync run in binding mode):
|
|
29
|
+
- `.yapi/docs-sync.links.json`: local docs to YApi doc URLs.
|
|
30
|
+
- `.yapi/docs-sync.projects.json`: cached project metadata/envs.
|
|
31
|
+
- `.yapi/docs-sync.deployments.json`: local docs to deployed URLs.
|
|
32
|
+
|
|
33
|
+
## Interface creation tips
|
|
34
|
+
- When adding interfaces, always set `req_body_type` (use `json` if unsure) and provide `res_body` (prefer JSON Schema). Empty values can make `/api/interface/add` fail.
|
|
35
|
+
- Keep request/response structures in `req_*` / `res_body` instead of stuffing them into `desc` or `markdown`.
|