@demox-site/mcp-server 1.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 ADDED
@@ -0,0 +1,363 @@
1
+ # @demox/mcp-server
2
+
3
+ [![npm version](https://badge.fury.io/js/%40demox%2Fmcp-server.svg)](https://www.npmjs.com/package/@demox/mcp-server)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ > Demox MCP Server - 通过 AI 部署静态网站到 Demox 平台
7
+
8
+ ## 📖 目录
9
+
10
+ - [什么是 MCP?](#什么是-mcp)
11
+ - [功能特性](#功能特性)
12
+ - [快速开始](#快速开始)
13
+ - [配置步骤](#配置步骤)
14
+ - [CLI 工具](#cli-工具)
15
+ - [可用工具](#可用工具)
16
+ - [使用示例](#使用示例)
17
+ - [文档](#文档)
18
+ - [常见问题](#常见问题)
19
+ - [技术支持](#技术支持)
20
+
21
+ ---
22
+
23
+ ## 什么是 MCP?
24
+
25
+ MCP (Model Context Protocol) 是 AI 助手与工具之间的标准化协议,允许 AI 工具(如 Claude Code、Cursor)安全地调用外部服务。
26
+
27
+ ## 功能特性
28
+
29
+ - 🚀 **一键部署**: 部署静态网站到 Demox 平台
30
+ - 📋 **网站管理**: 查看、删除已部署的网站
31
+ - 🔐 **OAuth 认证**: 安全的登录和授权机制
32
+ - 💻 **AI 集成**: 与 Claude Code、Cursor 等工具无缝集成
33
+ - 🛠️ **CLI 工具**: 完整的命令行工具支持
34
+ - 🔄 **自动刷新**: Token 自动续期,无需重复登录
35
+
36
+ ---
37
+
38
+ ## 快速开始
39
+
40
+ ### 安装
41
+
42
+ **方式 1: 使用 npx(推荐)**
43
+ ```bash
44
+ # 无需安装,自动使用最新版本
45
+ npx @demox/mcp-server
46
+ ```
47
+
48
+ **方式 2: 全局安装**
49
+ ```bash
50
+ npm install -g @demox/mcp-server
51
+ ```
52
+
53
+ ### 快速测试
54
+
55
+ ```bash
56
+ # 登录
57
+ demox-mcp login
58
+
59
+ # 测试连接
60
+ demox-mcp test
61
+
62
+ # 查看网站列表
63
+ demox-mcp list
64
+ ```
65
+
66
+ ---
67
+
68
+ ## 配置步骤
69
+
70
+ ### 1. 生成配置文件
71
+
72
+ 访问 [Demox MCP 配置页面](https://demox.site/#/mcp-setup) 下载配置文件。
73
+
74
+ 或使用 CLI 生成:
75
+
76
+ ```bash
77
+ demox-mcp config -o demox-mcp.json
78
+ ```
79
+
80
+ ### 2. 导入配置
81
+
82
+ 根据您使用的 AI 工具,将配置导入到相应位置:
83
+
84
+ #### Claude Desktop
85
+
86
+ **macOS**:
87
+ ```bash
88
+ ~/Library/Application Support/Claude/claude_desktop_config.json
89
+ ```
90
+
91
+ **Windows**:
92
+ ```bash
93
+ %APPDATA%/Claude/claude_desktop_config.json
94
+ ```
95
+
96
+ 配置示例:
97
+ ```json
98
+ {
99
+ "mcpServers": {
100
+ "demox": {
101
+ "command": "npx",
102
+ "args": ["-y", "@demox/mcp-server"],
103
+ "env": {
104
+ "DEMOX_CLIENT_ID": "demox-mcp-client",
105
+ "DEMOX_AUTH_URL": "https://demox.site/mcp/authorize",
106
+ "DEMOX_API_BASE": "https://demox.site",
107
+ "DEMOX_SERVER_ENV": "moyu-3g5pbxld00f4aead"
108
+ }
109
+ }
110
+ }
111
+ }
112
+ ```
113
+
114
+ #### Cursor AI
115
+
116
+ **macOS / Linux**: `~/.cursor/mcp.json`
117
+ **Windows**: `%APPDATA%/Cursor/mcp.json`
118
+
119
+ #### Cline (VS Code 插件)
120
+
121
+ 所有平台: `~/.cline/mcp.json`
122
+
123
+ ### 3. 重启 AI 工具
124
+
125
+ 配置完成后,重启您的 AI 工具。
126
+
127
+ ### 4. 首次使用
128
+
129
+ 首次调用 MCP 工具时,会自动打开浏览器登录。
130
+
131
+ 登录成功后,凭证会保存在本地(`~/.demox/token.json`),有效期 30 天。
132
+
133
+ ---
134
+
135
+ ## CLI 工具
136
+
137
+ 安装 MCP Server 后,可以使用 `demox-mcp` CLI 工具:
138
+
139
+ ```bash
140
+ # 登录
141
+ demox-mcp login
142
+
143
+ # 查看状态
144
+ demox-mcp status
145
+
146
+ # 列出网站
147
+ demox-mcp list
148
+
149
+ # 部署网站(支持自动打包!)
150
+ demox-mcp deploy ./dist # 自动打包目录 ✨
151
+ demox-mcp deploy ./site.zip # 直接上传 ZIP
152
+ demox-mcp deploy ./dist --name "My Site" # 指定名称
153
+ demox-mcp deploy ./dist --id ABC12345 # 更新现有网站
154
+
155
+ # 删除网站
156
+ demox-mcp delete ABC12345
157
+
158
+ # 测试连接
159
+ demox-mcp test
160
+
161
+ # 生成配置文件
162
+ demox-mcp config
163
+
164
+ # 登出
165
+ demox-mcp logout
166
+ ```
167
+
168
+ **✨ 新功能**:`deploy` 命令现在支持直接传入目录路径(如 `./dist`),系统会自动打包并部署!
169
+
170
+ ---
171
+
172
+ ## 可用工具
173
+
174
+ ### deploy_website
175
+
176
+ 部署静态网站到 Demox 平台。
177
+
178
+ **参数**:
179
+ - `zipFile` (string, 必需): ZIP 文件内容(base64 编码或 URL)
180
+ - `fileName` (string, 必需): 网站名称
181
+ - `websiteId` (string, 可选): 网站 ID(更新现有网站)
182
+
183
+ ### list_websites
184
+
185
+ 获取所有网站列表。
186
+
187
+ ### get_website
188
+
189
+ 获取指定网站的详细信息。
190
+
191
+ **参数**:
192
+ - `websiteId` (string, 必需): 网站 ID
193
+
194
+ ### delete_website
195
+
196
+ 删除指定的网站。
197
+
198
+ **参数**:
199
+ - `websiteId` (string, 必需): 网站 ID
200
+
201
+ ---
202
+
203
+ ## 使用示例
204
+
205
+ ### 在 Claude Desktop 中
206
+
207
+ ```
208
+ 用户: 部署 dist 目录到 Demox
209
+
210
+ Claude: 好的,我来帮您部署 dist 目录。
211
+
212
+ [检测到目录,自动打包...]
213
+
214
+ ✅ 网站部署成功!
215
+ 网站名称: dist
216
+ 访问地址: https://demox.site/xxx
217
+ ```
218
+
219
+ ### 在 Cursor 中
220
+
221
+ ```
222
+ # 在 Cursor 的 Chat 中输入
223
+
224
+ 部署当前项目到 Demox
225
+
226
+ # Cursor 会自动:
227
+ # 1. 检测到项目目录(如 ./dist)
228
+ # 2. 自动打包成 ZIP
229
+ # 3. 上传并部署
230
+ # 4. 返回访问链接
231
+ ```
232
+
233
+ ### 使用 CLI
234
+
235
+ ```bash
236
+ # 方式 1: 部署目录(自动打包)✨
237
+ demox-mcp deploy ./dist
238
+
239
+ # 方式 2: 部署 ZIP 文件
240
+ demox-mcp deploy ./site.zip
241
+
242
+ # 方式 3: 指定网站名称
243
+ demox-mcp deploy ./dist --name "My Portfolio"
244
+
245
+ # 方式 4: 更新现有网站
246
+ demox-mcp deploy ./dist --id ABC12345
247
+ ```
248
+
249
+ ### 编程方式
250
+
251
+ ```typescript
252
+ import { DemoxClient, OAuthManager } from "@demox/mcp-server";
253
+
254
+ const oauthManager = new OAuthManager();
255
+ const accessToken = await oauthManager.ensureAuthenticated();
256
+ const client = new DemoxClient(accessToken);
257
+
258
+ // 部署网站
259
+ const result = await client.deployWebsite(
260
+ {
261
+ zipFile: "./site.zip",
262
+ fileName: "My Site",
263
+ },
264
+ accessToken
265
+ );
266
+
267
+ console.log("部署成功:", result.url);
268
+ ```
269
+
270
+ 更多示例请查看 [EXAMPLES.md](EXAMPLES.md)。
271
+
272
+ ---
273
+
274
+ ## 文档
275
+
276
+ - **[使用示例](EXAMPLES.md)**: 详细的使用场景和代码示例
277
+ - **[常见问题](FAQ.md)**: 常见问题和解决方案
278
+ - **[部署指南](../DEPLOYMENT.md)**: 服务器部署指南
279
+
280
+ ---
281
+
282
+ ## 常见问题
283
+
284
+ ### Token 过期怎么办?
285
+
286
+ Token 有效期为 30 天,过期后会自动弹出浏览器重新登录。
287
+
288
+ ### 如何撤销授权?
289
+
290
+ ```bash
291
+ demox-mcp logout
292
+ ```
293
+
294
+ 或删除本地 Token 文件:
295
+ ```bash
296
+ rm ~/.demox/token.json
297
+ ```
298
+
299
+ ### 支持哪些 AI 工具?
300
+
301
+ - Claude Desktop / Claude Code
302
+ - Cursor AI
303
+ - Cline (VS Code 插件)
304
+ - 其他支持 MCP 协议的工具
305
+
306
+ ### 多台设备可以使用吗?
307
+
308
+ 可以。每台设备需要单独登录,互不影响。
309
+
310
+ ### 如何查看调试日志?
311
+
312
+ ```bash
313
+ # 启用调试模式
314
+ DEBUG=demox:* demox-mcp test
315
+ ```
316
+
317
+ 更多问题请查看 [FAQ.md](FAQ.md)。
318
+
319
+ ---
320
+
321
+ ## 技术支持
322
+
323
+ - 📖 **文档**: https://docs.demox.site
324
+ - 🐛 **Issues**: https://github.com/demox/mcp-server/issues
325
+ - 📧 **邮箱**: support@demox.site
326
+
327
+ ---
328
+
329
+ ## 开发
330
+
331
+ ### 本地开发
332
+
333
+ ```bash
334
+ # 克隆项目
335
+ git clone https://github.com/demox/mcp-server.git
336
+ cd mcp-server
337
+
338
+ # 安装依赖
339
+ npm install
340
+
341
+ # 开发模式
342
+ npm run dev
343
+
344
+ # 构建
345
+ npm run build
346
+
347
+ # 运行 CLI
348
+ npm run cli -- --help
349
+ ```
350
+
351
+ ### 贡献
352
+
353
+ 欢迎贡献代码!请查看 [CONTRIBUTING.md](CONTRIBUTING.md)。
354
+
355
+ ---
356
+
357
+ ## 许可证
358
+
359
+ [MIT License](LICENSE)
360
+
361
+ ---
362
+
363
+ Made with ❤️ by Demox Team
@@ -0,0 +1,96 @@
1
+ /**
2
+ * 部署参数
3
+ */
4
+ export interface DeployParams {
5
+ zipFile: string;
6
+ websiteId?: string;
7
+ fileName: string;
8
+ }
9
+ /**
10
+ * 部署结果
11
+ */
12
+ export interface DeployResult {
13
+ url: string;
14
+ websiteId: string;
15
+ path: string;
16
+ }
17
+ /**
18
+ * 网站信息
19
+ */
20
+ export interface Website {
21
+ websiteId: string;
22
+ fileName: string;
23
+ url: string;
24
+ path: string;
25
+ createdAt: string;
26
+ updatedAt: string;
27
+ }
28
+ /**
29
+ * Demox API 客户端
30
+ * 通过 mcp-api 云函数调用其他云函数
31
+ */
32
+ export declare class DemoxClient {
33
+ private cloudFunctionUrl;
34
+ constructor(accessToken?: string);
35
+ /**
36
+ * 调用云函数(通过 mcp-api HTTP 代理)
37
+ */
38
+ private callFunction;
39
+ /**
40
+ * 部署网站
41
+ */
42
+ deployWebsite(params: DeployParams, accessToken: string): Promise<DeployResult>;
43
+ /**
44
+ * 获取路径状态信息
45
+ */
46
+ private getPathStat;
47
+ /**
48
+ * 获取文件大小
49
+ */
50
+ private getFileSize;
51
+ /**
52
+ * 读取文件为 base64
53
+ */
54
+ private readFileAsBase64;
55
+ /**
56
+ * 将目录打包成 ZIP 文件
57
+ */
58
+ private zipDirectoryToFile;
59
+ /**
60
+ * 上传文件到 CloudBase Storage
61
+ */
62
+ private uploadToCloudBaseStorage;
63
+ /**
64
+ * 下载 ZIP 文件并保存为 Buffer
65
+ */
66
+ private downloadZipFileToBuffer;
67
+ /**
68
+ * 保存 Buffer 到临时文件
69
+ */
70
+ private saveBufferToTempFile;
71
+ /**
72
+ * 检查字符串是否是 base64 编码
73
+ */
74
+ private isBase64;
75
+ /**
76
+ * 列出所有网站
77
+ */
78
+ listWebsites(accessToken: string): Promise<Website[]>;
79
+ /**
80
+ * 删除网站
81
+ */
82
+ deleteWebsite(websiteId: string, accessToken: string): Promise<void>;
83
+ /**
84
+ * 获取网站详情
85
+ */
86
+ getWebsite(websiteId: string, accessToken: string): Promise<Website | null>;
87
+ /**
88
+ * 下载 ZIP 文件并转换为 base64
89
+ */
90
+ private downloadZipFile;
91
+ /**
92
+ * 验证 Token 有效性
93
+ */
94
+ verifyToken(accessToken: string): Promise<boolean>;
95
+ }
96
+ //# sourceMappingURL=DemoxClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DemoxClient.d.ts","sourceRoot":"","sources":["../../src/api/DemoxClient.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,gBAAgB,CAAS;gBAErB,WAAW,CAAC,EAAE,MAAM;IAKhC;;OAEG;YACW,YAAY;IA8C1B;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC;IAmFxB;;OAEG;YACW,WAAW;IAiBzB;;OAEG;YACW,WAAW;IAKzB;;OAEG;YACW,gBAAgB;IAa9B;;OAEG;YACW,kBAAkB;IAwBhC;;OAEG;YACW,wBAAwB;IAmCtC;;OAEG;YACW,uBAAuB;IAgBrC;;OAEG;YACW,oBAAoB;IAelC;;OAEG;IACH,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAe3D;;OAEG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAehB;;OAEG;IACG,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAe1B;;OAEG;YACW,eAAe;IAkB7B;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAiBzD"}