@leeguoo/yapi-mcp 0.2.4 → 0.3.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 +16 -10
- package/dist/config.d.ts +4 -0
- package/dist/config.js +48 -4
- package/dist/config.js.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +5 -0
- package/dist/server.js +262 -221
- package/dist/server.js.map +1 -1
- package/dist/services/yapi/api.d.ts +9 -1
- package/dist/services/yapi/api.js +55 -13
- package/dist/services/yapi/api.js.map +1 -1
- package/dist/services/yapi/auth.d.ts +13 -1
- package/dist/services/yapi/auth.js +42 -6
- package/dist/services/yapi/auth.js.map +1 -1
- package/dist/services/yapi/authCache.js +49 -4
- package/dist/services/yapi/authCache.js.map +1 -1
- package/dist/services/yapi/cache.d.ts +4 -1
- package/dist/services/yapi/cache.js +104 -15
- package/dist/services/yapi/cache.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ Yapi Auto MCP Server 是一个基于 [Model Context Protocol](https://modelconte
|
|
|
28
28
|
- **yapi_project_get**: 获取项目详情(对应 `/api/project/get`)
|
|
29
29
|
- **yapi_get_categories**: 获取项目下的接口分类和接口列表(支持只返回分类/或包含接口列表)
|
|
30
30
|
- **yapi_interface_get_cat_menu**: 获取分类菜单(对应 `/api/interface/getCatMenu`)
|
|
31
|
-
- **yapi_update_token**:
|
|
31
|
+
- **yapi_update_token**: 全局模式登录并刷新本地登录态 Cookie(可选刷新项目/分类缓存)
|
|
32
32
|
|
|
33
33
|
### ✏️ 接口管理
|
|
34
34
|
|
|
@@ -57,7 +57,7 @@ Yapi Auto MCP Server 是一个基于 [Model Context Protocol](https://modelconte
|
|
|
57
57
|
如果你日常就在浏览器里使用 YApi,推荐安装 Chrome 扩展 [cross-request-master](https://github.com/leeguooooo/cross-request-master)。它会在 YApi 接口详情页(基本信息区域右上角)提供 **「当前项目 MCP 配置」** / **「所有项目 MCP 配置」** 按钮,可一键生成并复制配置:
|
|
58
58
|
|
|
59
59
|
- 当前项目:使用 `--yapi-token=projectId:token`
|
|
60
|
-
- 所有项目(全局模式):使用 `--yapi-auth-mode=global
|
|
60
|
+
- 所有项目(全局模式):使用 `--yapi-auth-mode=global`(账号密码),启动后调用一次 `yapi_update_token` 刷新登录态 Cookie(并可选刷新项目缓存)
|
|
61
61
|
|
|
62
62
|
### 手动方式:使用 npx(无需安装)
|
|
63
63
|
|
|
@@ -82,7 +82,7 @@ Yapi Auto MCP Server 是一个基于 [Model Context Protocol](https://modelconte
|
|
|
82
82
|
}
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
2)
|
|
85
|
+
2) **全局模式**(只配置一次账号密码,使用登录态 Cookie 调用页面同款接口)
|
|
86
86
|
|
|
87
87
|
```json
|
|
88
88
|
{
|
|
@@ -96,16 +96,17 @@ Yapi Auto MCP Server 是一个基于 [Model Context Protocol](https://modelconte
|
|
|
96
96
|
"--yapi-base-url=https://your-yapi-domain.com",
|
|
97
97
|
"--yapi-auth-mode=global",
|
|
98
98
|
"--yapi-email=your_email@example.com",
|
|
99
|
-
"--yapi-password=your_password"
|
|
99
|
+
"--yapi-password=your_password",
|
|
100
|
+
"--yapi-toolset=basic"
|
|
100
101
|
]
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
104
|
}
|
|
104
105
|
```
|
|
105
106
|
|
|
106
|
-
启动后先在对话里调用一次 `yapi_update_token
|
|
107
|
+
启动后先在对话里调用一次 `yapi_update_token`,会把登录态 Cookie 缓存到本地 `~/.yapi-mcp/auth-*.json`,并把项目信息缓存到 `~/.yapi-mcp/project-info-*.json`(已尽量使用 `0600` 权限落盘),请不要提交到仓库或分享给他人。
|
|
107
108
|
|
|
108
|
-
提示:stdio 模式下为了加快 MCP 启动(避免超时),本项目不会在启动阶段做任何“全量缓存预热请求”。如需更快的工具响应,建议先调用一次 `yapi_update_token`。
|
|
109
|
+
提示:stdio 模式下为了加快 MCP 启动(避免超时),本项目不会在启动阶段做任何“全量缓存预热请求”。如需更快的工具响应,建议先调用一次 `yapi_update_token`。如 MCP 客户端仍提示启动超时,可在客户端配置中提高 `startup_timeout_sec`。
|
|
109
110
|
|
|
110
111
|
## 安装配置
|
|
111
112
|
|
|
@@ -151,7 +152,8 @@ Yapi Auto MCP Server 是一个基于 [Model Context Protocol](https://modelconte
|
|
|
151
152
|
"YAPI_TOKEN": "projectId:token1,projectId2:token2",
|
|
152
153
|
"YAPI_AUTH_MODE": "token",
|
|
153
154
|
"YAPI_CACHE_TTL": "10",
|
|
154
|
-
"YAPI_LOG_LEVEL": "info"
|
|
155
|
+
"YAPI_LOG_LEVEL": "info",
|
|
156
|
+
"YAPI_HTTP_TIMEOUT_MS": "15000"
|
|
155
157
|
}
|
|
156
158
|
}
|
|
157
159
|
}
|
|
@@ -170,7 +172,8 @@ Yapi Auto MCP Server 是一个基于 [Model Context Protocol](https://modelconte
|
|
|
170
172
|
"YAPI_BASE_URL": "https://yapi.example.com",
|
|
171
173
|
"YAPI_AUTH_MODE": "global",
|
|
172
174
|
"YAPI_EMAIL": "your_email@example.com",
|
|
173
|
-
"YAPI_PASSWORD": "your_password"
|
|
175
|
+
"YAPI_PASSWORD": "your_password",
|
|
176
|
+
"YAPI_HTTP_TIMEOUT_MS": "15000"
|
|
174
177
|
}
|
|
175
178
|
}
|
|
176
179
|
}
|
|
@@ -202,6 +205,7 @@ PORT=3388
|
|
|
202
205
|
# 可选配置
|
|
203
206
|
YAPI_CACHE_TTL=10
|
|
204
207
|
YAPI_LOG_LEVEL=info
|
|
208
|
+
YAPI_HTTP_TIMEOUT_MS=15000
|
|
205
209
|
```
|
|
206
210
|
|
|
207
211
|
3. **启动服务**:
|
|
@@ -235,7 +239,7 @@ node dist/cli.js --stdio
|
|
|
235
239
|
|
|
236
240
|
### 获取 YApi Token
|
|
237
241
|
|
|
238
|
-
如果你使用的是 **全局模式**(`--yapi-auth-mode=global` / `YAPI_AUTH_MODE=global`),可以不手动找项目 token:启动后在对话里调用一次 `yapi_update_token
|
|
242
|
+
如果你使用的是 **全局模式**(`--yapi-auth-mode=global` / `YAPI_AUTH_MODE=global`),可以不手动找项目 token:启动后在对话里调用一次 `yapi_update_token`,会自动登录并刷新登录态 Cookie(后续请求会走页面同款接口)。
|
|
239
243
|
|
|
240
244
|
1. 登录你的 YApi 平台
|
|
241
245
|
2. 进入项目设置页面
|
|
@@ -284,6 +288,7 @@ Token 格式说明:
|
|
|
284
288
|
| `--yapi-auth-mode` | 鉴权模式:`token` 或 `global` | `--yapi-auth-mode=global` | token |
|
|
285
289
|
| `--yapi-email` | 全局模式登录邮箱 | `--yapi-email=a@b.com` | - |
|
|
286
290
|
| `--yapi-password` | 全局模式登录密码 | `--yapi-password=******` | - |
|
|
291
|
+
| `--yapi-toolset` | 工具集:`basic` 或 `full` | `--yapi-toolset=basic` | basic |
|
|
287
292
|
| `--yapi-cache-ttl` | 缓存时效(分钟) | `--yapi-cache-ttl=10` | 10 |
|
|
288
293
|
| `--yapi-log-level` | 日志级别 | `--yapi-log-level=info` | info |
|
|
289
294
|
| `--port` | HTTP 服务端口(SSE 模式) | `--port=3388` | 3388 |
|
|
@@ -301,10 +306,11 @@ YAPI_BASE_URL=https://your-yapi-domain.com
|
|
|
301
306
|
YAPI_AUTH_MODE=token
|
|
302
307
|
YAPI_TOKEN=projectId:your_token_here
|
|
303
308
|
|
|
304
|
-
# 模式二:全局模式(只配置一次账号密码,启动后调用 yapi_update_token
|
|
309
|
+
# 模式二:全局模式(只配置一次账号密码,启动后调用 yapi_update_token 刷新登录态 Cookie)
|
|
305
310
|
# YAPI_AUTH_MODE=global
|
|
306
311
|
# YAPI_EMAIL=your_email@example.com
|
|
307
312
|
# YAPI_PASSWORD=your_password
|
|
313
|
+
# YAPI_TOOLSET=basic
|
|
308
314
|
|
|
309
315
|
# 可选配置
|
|
310
316
|
PORT=3388 # HTTP 服务端口
|
package/dist/config.d.ts
CHANGED
|
@@ -4,18 +4,22 @@ interface ServerConfig {
|
|
|
4
4
|
yapiAuthMode: "token" | "global";
|
|
5
5
|
yapiEmail: string;
|
|
6
6
|
yapiPassword: string;
|
|
7
|
+
yapiToolset: "basic" | "full";
|
|
7
8
|
port: number;
|
|
8
9
|
yapiCacheTTL: number;
|
|
9
10
|
yapiLogLevel: string;
|
|
11
|
+
yapiHttpTimeoutMs: number;
|
|
10
12
|
configSources: {
|
|
11
13
|
yapiBaseUrl: "cli" | "env" | "default";
|
|
12
14
|
yapiToken: "cli" | "env" | "default";
|
|
13
15
|
yapiAuthMode: "cli" | "env" | "default";
|
|
14
16
|
yapiEmail: "cli" | "env" | "default";
|
|
15
17
|
yapiPassword: "cli" | "env" | "default";
|
|
18
|
+
yapiToolset: "cli" | "env" | "default";
|
|
16
19
|
port: "cli" | "env" | "default";
|
|
17
20
|
yapiCacheTTL: "cli" | "env" | "default";
|
|
18
21
|
yapiLogLevel: "cli" | "env" | "default";
|
|
22
|
+
yapiHttpTimeoutMs: "cli" | "env" | "default";
|
|
19
23
|
};
|
|
20
24
|
}
|
|
21
25
|
export declare function getServerConfig(): ServerConfig;
|
package/dist/config.js
CHANGED
|
@@ -4,11 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getServerConfig = getServerConfig;
|
|
7
|
-
const dotenv_1 = require("dotenv");
|
|
8
7
|
const yargs_1 = __importDefault(require("yargs"));
|
|
9
8
|
const helpers_1 = require("yargs/helpers");
|
|
10
9
|
const logger_1 = require("./services/yapi/logger");
|
|
11
|
-
(0, dotenv_1.config)();
|
|
12
10
|
function maskApiKey(key) {
|
|
13
11
|
if (key.length <= 4)
|
|
14
12
|
return "****";
|
|
@@ -21,6 +19,15 @@ function maskSecret(value) {
|
|
|
21
19
|
return "**";
|
|
22
20
|
return `${value[0]}***${value[value.length - 1]}`;
|
|
23
21
|
}
|
|
22
|
+
function maskEmail(email) {
|
|
23
|
+
const v = String(email || "").trim();
|
|
24
|
+
if (!v)
|
|
25
|
+
return "";
|
|
26
|
+
const at = v.indexOf("@");
|
|
27
|
+
if (at <= 1)
|
|
28
|
+
return "***";
|
|
29
|
+
return `${v[0]}***${v.slice(at)}`;
|
|
30
|
+
}
|
|
24
31
|
function getServerConfig() {
|
|
25
32
|
const argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv))
|
|
26
33
|
.options({
|
|
@@ -34,7 +41,7 @@ function getServerConfig() {
|
|
|
34
41
|
},
|
|
35
42
|
"yapi-auth-mode": {
|
|
36
43
|
type: "string",
|
|
37
|
-
description: "鉴权模式:token=项目 token;global
|
|
44
|
+
description: "鉴权模式:token=项目 token;global=用户名/密码登录(Cookie 登录态)",
|
|
38
45
|
choices: ["token", "global"],
|
|
39
46
|
},
|
|
40
47
|
"yapi-email": {
|
|
@@ -45,6 +52,11 @@ function getServerConfig() {
|
|
|
45
52
|
type: "string",
|
|
46
53
|
description: "全局模式登录密码(/api/user/login 的 password 字段)",
|
|
47
54
|
},
|
|
55
|
+
"yapi-toolset": {
|
|
56
|
+
type: "string",
|
|
57
|
+
description: "工具集:basic=常用精简;full=完整(包含底层接口封装工具)",
|
|
58
|
+
choices: ["basic", "full"],
|
|
59
|
+
},
|
|
48
60
|
port: {
|
|
49
61
|
type: "number",
|
|
50
62
|
description: "Port to run the server on",
|
|
@@ -58,6 +70,10 @@ function getServerConfig() {
|
|
|
58
70
|
description: "YApi日志级别 (debug, info, warn, error)",
|
|
59
71
|
choices: ["debug", "info", "warn", "error"],
|
|
60
72
|
},
|
|
73
|
+
"yapi-http-timeout-ms": {
|
|
74
|
+
type: "number",
|
|
75
|
+
description: "YApi HTTP 请求超时(毫秒),默认 15000",
|
|
76
|
+
},
|
|
61
77
|
})
|
|
62
78
|
.help()
|
|
63
79
|
.parseSync();
|
|
@@ -67,18 +83,22 @@ function getServerConfig() {
|
|
|
67
83
|
yapiAuthMode: "token",
|
|
68
84
|
yapiEmail: "",
|
|
69
85
|
yapiPassword: "",
|
|
86
|
+
yapiToolset: "basic",
|
|
70
87
|
port: 3388,
|
|
71
88
|
yapiCacheTTL: 10,
|
|
72
89
|
yapiLogLevel: "info",
|
|
90
|
+
yapiHttpTimeoutMs: 15_000,
|
|
73
91
|
configSources: {
|
|
74
92
|
yapiBaseUrl: "default",
|
|
75
93
|
yapiToken: "default",
|
|
76
94
|
yapiAuthMode: "default",
|
|
77
95
|
yapiEmail: "default",
|
|
78
96
|
yapiPassword: "default",
|
|
97
|
+
yapiToolset: "default",
|
|
79
98
|
port: "default",
|
|
80
99
|
yapiCacheTTL: "default",
|
|
81
100
|
yapiLogLevel: "default",
|
|
101
|
+
yapiHttpTimeoutMs: "default",
|
|
82
102
|
},
|
|
83
103
|
};
|
|
84
104
|
if (argv["yapi-base-url"]) {
|
|
@@ -127,6 +147,17 @@ function getServerConfig() {
|
|
|
127
147
|
else {
|
|
128
148
|
config.yapiAuthMode = config.yapiToken ? "token" : config.yapiEmail && config.yapiPassword ? "global" : "token";
|
|
129
149
|
}
|
|
150
|
+
if (argv["yapi-toolset"]) {
|
|
151
|
+
config.yapiToolset = argv["yapi-toolset"];
|
|
152
|
+
config.configSources.yapiToolset = "cli";
|
|
153
|
+
}
|
|
154
|
+
else if (process.env.YAPI_TOOLSET) {
|
|
155
|
+
const set = process.env.YAPI_TOOLSET.toLowerCase();
|
|
156
|
+
if (set === "basic" || set === "full") {
|
|
157
|
+
config.yapiToolset = set;
|
|
158
|
+
config.configSources.yapiToolset = "env";
|
|
159
|
+
}
|
|
160
|
+
}
|
|
130
161
|
if (argv.port) {
|
|
131
162
|
config.port = argv.port;
|
|
132
163
|
config.configSources.port = "cli";
|
|
@@ -158,16 +189,29 @@ function getServerConfig() {
|
|
|
158
189
|
config.configSources.yapiLogLevel = "env";
|
|
159
190
|
}
|
|
160
191
|
}
|
|
192
|
+
if (argv["yapi-http-timeout-ms"]) {
|
|
193
|
+
config.yapiHttpTimeoutMs = argv["yapi-http-timeout-ms"];
|
|
194
|
+
config.configSources.yapiHttpTimeoutMs = "cli";
|
|
195
|
+
}
|
|
196
|
+
else if (process.env.YAPI_HTTP_TIMEOUT_MS) {
|
|
197
|
+
const ms = parseInt(process.env.YAPI_HTTP_TIMEOUT_MS, 10);
|
|
198
|
+
if (!isNaN(ms)) {
|
|
199
|
+
config.yapiHttpTimeoutMs = ms;
|
|
200
|
+
config.configSources.yapiHttpTimeoutMs = "env";
|
|
201
|
+
}
|
|
202
|
+
}
|
|
161
203
|
const logger = new logger_1.Logger("Config", config.yapiLogLevel);
|
|
162
204
|
logger.info("\nConfiguration:");
|
|
163
205
|
logger.info(`- YAPI_BASE_URL: ${config.yapiBaseUrl} (source: ${config.configSources.yapiBaseUrl})`);
|
|
164
206
|
logger.info(`- YAPI_TOKEN: ${config.yapiToken ? maskApiKey(config.yapiToken) : "未配置"} (source: ${config.configSources.yapiToken})`);
|
|
165
207
|
logger.info(`- YAPI_AUTH_MODE: ${config.yapiAuthMode} (source: ${config.configSources.yapiAuthMode})`);
|
|
166
|
-
logger.info(`- YAPI_EMAIL: ${config.yapiEmail
|
|
208
|
+
logger.info(`- YAPI_EMAIL: ${config.yapiEmail ? maskEmail(config.yapiEmail) : "未配置"} (source: ${config.configSources.yapiEmail})`);
|
|
167
209
|
logger.info(`- YAPI_PASSWORD: ${config.yapiPassword ? maskSecret(config.yapiPassword) : "未配置"} (source: ${config.configSources.yapiPassword})`);
|
|
210
|
+
logger.info(`- YAPI_TOOLSET: ${config.yapiToolset} (source: ${config.configSources.yapiToolset})`);
|
|
168
211
|
logger.info(`- PORT: ${config.port} (source: ${config.configSources.port})`);
|
|
169
212
|
logger.info(`- YAPI_CACHE_TTL: ${config.yapiCacheTTL} 分钟 (source: ${config.configSources.yapiCacheTTL})`);
|
|
170
213
|
logger.info(`- YAPI_LOG_LEVEL: ${config.yapiLogLevel} (source: ${config.configSources.yapiLogLevel})`);
|
|
214
|
+
logger.info(`- YAPI_HTTP_TIMEOUT_MS: ${config.yapiHttpTimeoutMs} (source: ${config.configSources.yapiHttpTimeoutMs})`);
|
|
171
215
|
logger.info("");
|
|
172
216
|
return config;
|
|
173
217
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -30,7 +30,7 @@ async function startServer() {
|
|
|
30
30
|
mode: config.yapiAuthMode,
|
|
31
31
|
email: config.yapiEmail,
|
|
32
32
|
password: config.yapiPassword,
|
|
33
|
-
});
|
|
33
|
+
}, { timeoutMs: config.yapiHttpTimeoutMs }, { toolset: config.yapiToolset });
|
|
34
34
|
const isStdioMode = process.env.NODE_ENV === "cli" || process.argv.includes("--stdio");
|
|
35
35
|
if (isStdioMode) {
|
|
36
36
|
logger.info("Initializing Yapi MCP Server in stdio mode...");
|
|
@@ -47,9 +47,16 @@ async function startServer() {
|
|
|
47
47
|
logger.info("- yapi_search_apis: 搜索YApi接口");
|
|
48
48
|
logger.info("- yapi_list_projects: 列出YApi的项目ID和项目名称");
|
|
49
49
|
logger.info("- yapi_get_categories: 获取YApi项目下的接口分类列表");
|
|
50
|
-
logger.info("- yapi_update_token:
|
|
50
|
+
logger.info("- yapi_update_token: 全局模式登录并刷新本地登录态 Cookie");
|
|
51
51
|
}
|
|
52
52
|
if (require.main === module) {
|
|
53
|
+
try {
|
|
54
|
+
const { resolve } = require("path");
|
|
55
|
+
const { config } = require("dotenv");
|
|
56
|
+
config({ path: resolve(process.cwd(), ".env") });
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
}
|
|
53
60
|
startServer().catch((error) => {
|
|
54
61
|
console.error("Failed to start server:", error);
|
|
55
62
|
process.exit(1);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAWA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAWA,kCAwCC;AAnDD,wEAAiF;AACjF,qCAAyC;AACzC,qCAA2C;AAC3C,mDAAgD;AAGhD,wDAAsC;AACtC,sDAAoC;AACpC,wDAAsC;AACtC,yDAAuC;AAEhC,KAAK,UAAU,WAAW;IAC/B,MAAM,MAAM,GAAG,IAAA,wBAAe,GAAE,CAAC;IAGjC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAG9D,MAAM,MAAM,GAAG,IAAI,sBAAa,CAC9B,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,YAAY,EACnB;QACE,IAAI,EAAE,MAAM,CAAC,YAAY;QACzB,KAAK,EAAE,MAAM,CAAC,SAAS;QACvB,QAAQ,EAAE,MAAM,CAAC,YAAY;KAC9B,EACD,EAAE,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE,EACvC,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,CAChC,CAAC;IAGF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEvF,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,qDAAqD,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC;QACnF,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvB,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5C,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACtD,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACvD,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;AAC5D,CAAC;AAGD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAE5B,IAAI,CAAC;QAEH,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IACD,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5B,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -6,12 +6,17 @@ export declare class YapiMcpServer {
|
|
|
6
6
|
private readonly logger;
|
|
7
7
|
private readonly authService;
|
|
8
8
|
private readonly authMode;
|
|
9
|
+
private readonly toolset;
|
|
9
10
|
private sseTransport;
|
|
10
11
|
private readonly isStdioMode;
|
|
11
12
|
constructor(yapiBaseUrl: string, yapiToken: string, yapiLogLevel?: string, yapiCacheTTL?: number, auth?: {
|
|
12
13
|
mode?: "token" | "global";
|
|
13
14
|
email?: string;
|
|
14
15
|
password?: string;
|
|
16
|
+
}, http?: {
|
|
17
|
+
timeoutMs?: number;
|
|
18
|
+
}, tools?: {
|
|
19
|
+
toolset?: "basic" | "full";
|
|
15
20
|
});
|
|
16
21
|
private loadCacheFromDiskOnly;
|
|
17
22
|
private initializeCache;
|