@szc-ft/mcp-szcd-client 0.28.1 → 0.29.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/agents/szcd-component-expert.qoder.md +1 -0
- package/opencode-extension/skills/local-browser-test/SKILL.md +189 -53
- package/opencode-extension/skills/local-browser-test/lib/ant-adapter.js +735 -0
- package/opencode-extension/skills/local-browser-test/lib/browser-engine.js +2427 -0
- package/opencode-extension/skills/local-browser-test/lib/chrome-finder.js +125 -0
- package/opencode-extension/skills/local-browser-test/lib/expect.js +392 -0
- package/opencode-extension/skills/local-browser-test/lib/shared-deps.js +137 -0
- package/opencode-extension/skills/local-browser-test/lib/test-plan.js +48 -0
- package/opencode-extension/skills/local-browser-test/lib/visual-compare.js +192 -0
- package/opencode-extension/skills/local-browser-test/local-browser-executor.js +735 -0
- package/opencode-extension/skills/local-browser-test/package.json +1 -0
- package/opencode-extension/skills/szcd-upload-zip/SKILL.md +122 -0
- package/package.json +1 -1
- package/qwen-extension/qwen-extension.json +1 -1
- package/qwen-extension/skills/local-browser-test/SKILL.md +189 -53
- package/qwen-extension/skills/local-browser-test/lib/ant-adapter.js +735 -0
- package/qwen-extension/skills/local-browser-test/lib/browser-engine.js +2427 -0
- package/qwen-extension/skills/local-browser-test/lib/chrome-finder.js +125 -0
- package/qwen-extension/skills/local-browser-test/lib/expect.js +392 -0
- package/qwen-extension/skills/local-browser-test/lib/shared-deps.js +137 -0
- package/qwen-extension/skills/local-browser-test/lib/test-plan.js +48 -0
- package/qwen-extension/skills/local-browser-test/lib/visual-compare.js +192 -0
- package/qwen-extension/skills/local-browser-test/local-browser-executor.js +735 -0
- package/qwen-extension/skills/local-browser-test/package.json +1 -0
- package/qwen-extension/skills/szcd-upload-zip/SKILL.md +122 -0
- package/standard-skill/local-browser-test/SKILL.md +189 -53
- package/standard-skill/local-browser-test/lib/ant-adapter.js +735 -0
- package/standard-skill/local-browser-test/lib/browser-engine.js +2427 -0
- package/standard-skill/local-browser-test/lib/chrome-finder.js +125 -0
- package/standard-skill/local-browser-test/lib/expect.js +392 -0
- package/standard-skill/local-browser-test/lib/shared-deps.js +137 -0
- package/standard-skill/local-browser-test/lib/test-plan.js +48 -0
- package/standard-skill/local-browser-test/lib/visual-compare.js +192 -0
- package/standard-skill/local-browser-test/local-browser-executor.js +735 -0
- package/standard-skill/local-browser-test/package.json +1 -0
- package/standard-skill/szcd-upload-zip/SKILL.md +122 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "module"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: szcd-upload-zip
|
|
3
|
+
description: |
|
|
4
|
+
本地 ZIP 文件上传与解压工具。将用户本地的 zip 压缩包通过 `upload-zip` REST 端点上传到 szcd-mcp-server,
|
|
5
|
+
自动解压到服务器的 `uploads/<zip包名>/` 目录,并返回解压后的文件列表。
|
|
6
|
+
上传后解压的文件可通过文件下载接口按路径获取或供其他流程使用。
|
|
7
|
+
compatibility:
|
|
8
|
+
tools:
|
|
9
|
+
- run_command
|
|
10
|
+
runtime:
|
|
11
|
+
- node >= 18(读取配置用,仅 `cat ~/.szcd-mcp-config.json` 场景)
|
|
12
|
+
- curl(文件上传所需)
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# ZIP 上传与解压工具(szcd-upload-zip)
|
|
16
|
+
|
|
17
|
+
## 概述
|
|
18
|
+
|
|
19
|
+
当 AI 需要将用户本地的 ZIP 压缩包上传到 szcd-mcp-server 时,使用此技能。
|
|
20
|
+
上传后服务器自动解压,开发者或 AI 可通过下载 API 访问解压后的文件。
|
|
21
|
+
|
|
22
|
+
## 适用场景
|
|
23
|
+
|
|
24
|
+
- 用户有一个本地 zip 包需要上传到服务器存储
|
|
25
|
+
- zipped 源码/资源包需要上传到服务器供后续流程使用
|
|
26
|
+
- 需要在服务器端解压 zip 并取用其中的文件
|
|
27
|
+
|
|
28
|
+
## 工作流
|
|
29
|
+
|
|
30
|
+
### 第 0 步:探测运行时
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
node --version 2>/dev/null && echo "NODE_OK"; \
|
|
34
|
+
curl --version 2>/dev/null | head -1 && echo "CURL_OK"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### 第 1 步:读取配置获取服务器地址和 API Key
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
cat ~/.szcd-mcp-config.json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
配置示例:
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"MCP_SERVER_URL": "http://localhost:3456",
|
|
47
|
+
"MCP_TIMEOUT": 30000,
|
|
48
|
+
"MCP_API_KEY": "your-api-key"
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
- 若 `MCP_API_KEY` 为空字符串,则上传时不带 `X-API-Key` header
|
|
53
|
+
- 若 `MCP_SERVER_URL` 未配置,默认使用 `http://localhost:3456`
|
|
54
|
+
|
|
55
|
+
### 第 2 步:上传 ZIP 文件
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# 从 ~/.szcd-mcp-config.json 取 URL 和 API Key
|
|
59
|
+
MCP_URL=$(node -e "const c=require('fs').readFileSync(require('os').homedir()+'/.szcd-mcp-config.json','utf8');const j=JSON.parse(c);console.log(j.MCP_SERVER_URL||'http://localhost:3456')")
|
|
60
|
+
MCP_KEY=$(node -e "const c=require('fs').readFileSync(require('os').homedir()+'/.szcd-mcp-config.json','utf8');const j=JSON.parse(c);console.log(j.MCP_API_KEY||'')")
|
|
61
|
+
|
|
62
|
+
# 上传 zip 文件
|
|
63
|
+
if [ -n "$MCP_KEY" ]; then
|
|
64
|
+
curl -s -X POST "$MCP_URL/upload-zip" -H "X-API-Key: $MCP_KEY" -F "file=@<zip文件路径>"
|
|
65
|
+
else
|
|
66
|
+
curl -s -X POST "$MCP_URL/upload-zip" -F "file=@<zip文件路径>"
|
|
67
|
+
fi
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
其中 `<zip文件路径>` 替换为实际 zip 文件的绝对路径。
|
|
71
|
+
|
|
72
|
+
**响应示例:**
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"ok": true,
|
|
76
|
+
"dir_name": "my-package",
|
|
77
|
+
"extract_dir": "/scity/zengzhijie/mcp/uploads/my-package",
|
|
78
|
+
"file_count": 5,
|
|
79
|
+
"files": [
|
|
80
|
+
{ "path": "index.html", "size": 2048 },
|
|
81
|
+
{ "path": "js/app.js", "size": 15360 },
|
|
82
|
+
{ "path": "css/style.css", "size": 4096 },
|
|
83
|
+
{ "path": "images/logo.png", "size": 819200 },
|
|
84
|
+
{ "path": "data/config.json", "size": 512 }
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 第 3 步:查看解压后的文件
|
|
90
|
+
|
|
91
|
+
上传成功后,可通过下载 API 查看解压后的文件或取单个文件内容:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# 列出解压目录
|
|
95
|
+
curl -s "$MCP_URL/api/download/list?dir=/scity/zengzhijie/mcp/uploads/my-package" \
|
|
96
|
+
${MCP_KEY:+-H "X-API-Key: $MCP_KEY"}
|
|
97
|
+
|
|
98
|
+
# 下载单个文件
|
|
99
|
+
curl -s "$MCP_URL/api/download?path=/scity/zengzhijie/mcp/uploads/my-package/data/config.json" \
|
|
100
|
+
${MCP_KEY:+-H "X-API-Key: $MCP_KEY"}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 限制说明
|
|
104
|
+
|
|
105
|
+
- 仅支持真正的 ZIP 格式(magic number `PK\x03\x04` 校验),改扩展名无用
|
|
106
|
+
- 单文件大小上限 100MB
|
|
107
|
+
- 同名 zip 包名会覆盖服务器上已有的目录
|
|
108
|
+
- 解压后文件持久存储,无自动过期
|
|
109
|
+
- 上传路径始终为 `/upload-zip`(不含 `/api/` 前缀)
|
|
110
|
+
|
|
111
|
+
## 完整命令示例(一步完成)
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# 读取配置
|
|
115
|
+
MCP_URL=$(node -e "try{const c=require('fs').readFileSync(require('os').homedir()+'/.szcd-mcp-config.json','utf8');const j=JSON.parse(c);console.log(j.MCP_SERVER_URL||'http://localhost:3456')}catch{console.log('http://localhost:3456')}")
|
|
116
|
+
MCP_KEY=$(node -e "try{const c=require('fs').readFileSync(require('os').homedir()+'/.szcd-mcp-config.json','utf8');const j=JSON.parse(c);console.log(j.MCP_API_KEY||'')}catch{console.log('')}")
|
|
117
|
+
|
|
118
|
+
# 上传
|
|
119
|
+
curl -s -X POST "$MCP_URL/upload-zip" \
|
|
120
|
+
${MCP_KEY:+-H "X-API-Key: $MCP_KEY"} \
|
|
121
|
+
-F "file=@/path/to/archive.zip" | python3 -m json.tool
|
|
122
|
+
```
|