@visualization-hub/dev-mcp 1.0.8 → 1.0.10

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 CHANGED
@@ -91,3 +91,327 @@
91
91
  }
92
92
  ```
93
93
 
94
+ ---
95
+
96
+ ## 🛠️ 命令行工具使用
97
+
98
+ ### 安装与别名
99
+
100
+ 安装后,您可以使用以下两个命令之一启动开发者 MCP 服务器:
101
+
102
+ - **`viz-dev-mcp`**:原始命令名
103
+ - **`dkhub`**:简短别名(推荐)
104
+
105
+ ```bash
106
+ # 通过 npx 直接使用
107
+ npx -y @visualization-hub/dev-mcp
108
+
109
+ # 或使用 dkhub 别名
110
+ npx -y @visualization-hub/dev-mcp dkhub
111
+ ```
112
+
113
+ ### 本地开发使用
114
+
115
+ 在本地开发环境中,可以直接使用以下命令:
116
+
117
+ ```bash
118
+ # 使用原始命令
119
+ ./bin/viz-dev-mcp.js
120
+
121
+ # 或使用 dkhub 别名(需在 package.json 中配置)
122
+ dkhub
123
+ ```
124
+
125
+ ### 配置示例
126
+
127
+ 在 AI Agent 客户端配置中,您可以使用 `dkhub` 作为命令名:
128
+
129
+ ```json
130
+ {
131
+ "mcpServers": {
132
+ "visualization-dev-mcp": {
133
+ "command": "dkhub",
134
+ "env": {
135
+ "VIZ_BASE_URL": "http://localhost:3000",
136
+ "VIZ_API_KEY": "ak_live_xxxxxxxxxxxxxxxxxxxx"
137
+ }
138
+ }
139
+ }
140
+ }
141
+ ```
142
+
143
+ > **注意**:`dkhub` 别名需要在全局安装或使用 npx 时才可用。本地开发时,建议使用 `./bin/viz-dev-mcp.js` 直接启动。
144
+
145
+ ### 🔀 两种运行模式
146
+
147
+ | 模式 | 触发方式 | 说明 |
148
+ | :--- | :--- | :--- |
149
+ | **CLI 命令模式** | `dkhub <命令> [参数]` | 在终端直接传参执行,立即返回 JSON 结果(本文后续示例均为此模式) |
150
+ | **MCP 服务器模式** | `dkhub`(不带参数) | 以 stdio 启动 MCP 服务器,供 Cursor / Claude 等 AI Agent 连接调用 |
151
+
152
+ ```bash
153
+ # CLI 命令模式:终端直接传参,立即执行
154
+ dkhub create_component_project --projectName my-comp --pageType cesium --title "我的组件"
155
+
156
+ # MCP 服务器模式:不带任何参数,常驻进程供 AI Agent 调用
157
+ dkhub
158
+ ```
159
+
160
+ ### ✍️ 参数传递语法(怎么传参)
161
+
162
+ 在 CLI 命令模式下,参数以 `--参数名 值` 的形式传递,支持三种写法:
163
+
164
+ ```bash
165
+ # 写法 1:空格分隔(推荐)
166
+ dkhub build_component_project --projectDir ./my-comp
167
+
168
+ # 写法 2:等号分隔
169
+ dkhub build_component_project --projectDir=./my-comp
170
+
171
+ # 写法 3:布尔开关(省略值,写上即为 true)
172
+ dkhub upload_component_project --projectDir ./my-comp --skipPreflight
173
+ ```
174
+
175
+ **参数对照示例**(以 `create_component_project` 为例):
176
+
177
+ ```bash
178
+ dkhub create_component_project --projectName my-cesium-component --pageType cesium --title "三维量测组件"
179
+ │ │ │ │
180
+ │ │ │ └─ 值:中文标题(含空格需加引号)
181
+ │ │ └─ 参数名 --pageType,值 cesium
182
+ │ └─ 参数名 --projectName,值 my-cesium-component
183
+ └─ 命令名
184
+ ```
185
+
186
+ **数组参数**(`keywords` / `libraries` / `tags`)支持逗号或空格分隔:
187
+
188
+ ```bash
189
+ dkhub create_component_project --libraries turf,tween.js ...
190
+ dkhub search_projects --keywords 无人机,三维
191
+ ```
192
+
193
+ > **Shell 提示**:部分 Shell(如 PowerShell)在未加引号时会将逗号转为空格。`dkhub` 已同时兼容逗号与空格分隔,两种写法均可正确解析为数组。含空格或中文的参数值建议用双引号包裹。
194
+
195
+ ---
196
+
197
+ ### 📋 dkhub 命令全清单
198
+
199
+ `dkhub` 提供以下 **18 个命令**,支持在终端直接传参调用(CLI 模式),也可由 AI Agent 通过 MCP 协议调用(服务器模式)。命令名可省略 `dkhub_` 前缀。
200
+
201
+ #### 1. 引导与规范类命令
202
+
203
+ | 命令 | 说明 | 关键参数 |
204
+ | :--- | :--- | :--- |
205
+ | `dkhub get_developer_guide` | 获取全生命周期研发阶段指引(各阶段前置依赖、必调工具、红线禁忌与准出检查项) | `stage`:`init` / `scaffold` / `coding` / `build` / `compliance` / `upload` / `all`(默认 `all`) |
206
+ | `dkhub get_project_rule` | 获取组件开发规范、13 项沙箱约束与 4 大红线禁忌 | `section`(可选,指定章节) |
207
+ | `dkhub get_development_workflow` | 获取 10 步标准化研发流程 | 无 |
208
+ | `dkhub get_global_packages` | 查询平台预置引擎版本(Cesium / Three / ECharts 等)及可选扩展库清单(`/static/libs`) | `page_type`(可选) |
209
+ | `dkhub get_project_url` | 获取指定组件版本在平台沙箱中的真实在线预览 URL | `project_name`(必需)、`version`(可选) |
210
+
211
+ #### 2. 资产检索与源码查阅类命令
212
+
213
+ | 命令 | 说明 | 关键参数 |
214
+ | :--- | :--- | :--- |
215
+ | `dkhub search_projects` | 多关键词全文检索知识库平台已有组件资产 | `keywords`(数组)、`page_type`、`page`、`page_size` |
216
+ | `dkhub list_categories` | 获取所有技术栈分类列表及组件数量统计 | 无 |
217
+ | `dkhub get_project_detail` | 获取单个组件项目完整详情、依赖清单与版本历史记录 | `project_name`(必需) |
218
+ | `dkhub list_my_projects` | 获取当前 API Key 对应用户创建上传的所有项目列表及分页信息 | `page`、`page_size` |
219
+ | `dkhub get_project_files` | 查看指定组件版本的文件结构树(含相对路径与尺寸) | `project_name`(必需)、`version`(可选) |
220
+ | `dkhub get_file_content` | 读取组件源码文件内容(如 `index.vue`、`util.ts`) | `project_name`(必需)、`file_path`(必需)、`version`(可选) |
221
+ | `dkhub grep_source_code` | 在指定组件或全部组件中执行关键字 / 正则 Grep 检索 | `query`(必需)、`project_name`(可选)、`file_pattern`(可选) |
222
+
223
+ #### 3. 本地工程化研发与发布类命令
224
+
225
+ | 命令 | 说明 | 关键参数 |
226
+ | :--- | :--- | :--- |
227
+ | `dkhub create_component_project` | 一键创建标准 Vue 3 + TypeScript + Vite 组件工程脚手架(开箱满足 13 项沙箱合规) | `projectName`(必需)、`pageType`(必需)、`title`(必需)、`description`、`libraries`、`targetDir`、`overwrite` |
228
+ | `dkhub build_component_project` | 本地调用内置 Vite 引擎编译打包,输出沙箱专属 `dist/index.js` 与 `dist/index.css` | `projectDir`(必需) |
229
+ | `dkhub check_sandbox_compliance` | 执行 13 项沙箱合规静态扫描,输出得分、违规文件与修复建议 | `projectDir`(必需) |
230
+ | **`dkhub upload_component_project`** | **【组件发布命令】** 本地打包 ZIP 并通过底层 HTTP 物理流秒级直传平台(耗时 < 0.1s,0 Token)。上传前强制执行 Pre-Flight 合规扫描 | `projectDir`(必需)、`uploadType`:`test` / `final`(默认 `test`)、`changelog`、`skipPreflight` |
231
+ | `dkhub download_component_project` | 从知识库拉取组件 ZIP 包并就地解压为可二次开发的标准工程 | `projectName`(必需)、`version`(可选)、`targetDir`(可选) |
232
+ | `dkhub delete_version` | 调用云端鉴权接口删除指定组件的指定版本 | `projectName`(必需)、`version`(必需)、`isBak`(默认 `false`) |
233
+
234
+ ---
235
+
236
+ #### 🚀 工程创建命令详解:`dkhub create_component_project`
237
+
238
+ 组件研发的第一步,一键生成符合平台 13 项沙箱合规规范的 Vue 3 + TypeScript + Vite 标准工程脚手架。
239
+
240
+ **终端命令(直接复制执行)**:
241
+
242
+ ```bash
243
+ dkhub create_component_project --projectName my-cesium-component --pageType cesium --title "三维量测组件" --description "基于 Cesium 的三维空间量测 HUD 组件" --libraries turf,tween.js --targetDir D:/projects
244
+ ```
245
+
246
+ **参数逐项对照**:
247
+
248
+ | 命令行写法 | 参数名 | 实际传入的值 |
249
+ | :--- | :--- | :--- |
250
+ | `--projectName my-cesium-component` | `projectName` | `my-cesium-component` |
251
+ | `--pageType cesium` | `pageType` | `cesium` |
252
+ | `--title "三维量测组件"` | `title` | `三维量测组件`(含中文/空格需加引号) |
253
+ | `--description "基于 Cesium 的..."` | `description` | 组件描述(可省略) |
254
+ | `--libraries turf,tween.js` | `libraries` | `["turf", "tween.js"]`(数组,逗号分隔) |
255
+ | `--targetDir D:/projects` | `targetDir` | `D:/projects`(可省略,默认当前目录) |
256
+ | `--overwrite` | `overwrite` | `true`(布尔开关,写上即生效,可省略) |
257
+
258
+ **等价的 MCP 调用参数**(仅 AI Agent 在服务器模式下使用,终端用户无需关心):
259
+
260
+ ```json
261
+ {
262
+ "projectName": "my-cesium-component",
263
+ "pageType": "cesium",
264
+ "title": "三维量测组件",
265
+ "description": "基于 Cesium 的三维空间量测 HUD 组件",
266
+ "libraries": ["turf", "tween.js"],
267
+ "targetDir": "D:/projects",
268
+ "overwrite": false
269
+ }
270
+ ```
271
+
272
+ **参数说明**:
273
+
274
+ | 参数 | 类型 | 必需 | 默认值 | 详细说明 |
275
+ | :--- | :--- | :---: | :--- | :--- |
276
+ | `projectName` | `string` | 是 | — | 组件英文标识,需符合 npm 命名规范(`^[a-z0-9-_]+$`):仅允许小写字母、数字、中划线和下划线 |
277
+ | `pageType` | `string` | 是 | — | 技术栈类型:`cesium` / `three` / `openlayers` / `echarts` / `mapbox` / `maplibre` / `webgl` / `canvas` / `common` |
278
+ | `title` | `string` | 是 | — | 组件中文显示标题 |
279
+ | `description` | `string` | 否 | `${title} 可视化组件` | 组件功能描述 |
280
+ | `libraries` | `string[]` | 否 | `[]` | 引用的扩展库声明(如 `["tween.js", "turf", "proj4"]`),将写入 `project.json` 的 `libraries` 字段 |
281
+ | `targetDir` | `string` | 否 | 当前工作区 (`process.cwd()`) | 目标存放目录。若为父目录,会自动在其下创建以 `projectName` 命名的子目录;若目录名已与 `projectName` 相同则直接使用 |
282
+ | `overwrite` | `boolean` | 否 | `false` | 若目标工程目录已存在且非空,是否强制覆盖 |
283
+
284
+ **生成的标准工程结构**:
285
+
286
+ 命令执行成功后,将在目标目录生成以下开箱即满足 13 项沙箱合规骨架的工程:
287
+
288
+ ```
289
+ my-cesium-component/
290
+ ├── project.json # 组件元数据清单 (name, title, pageType, entry, libraries, tags)
291
+ ├── package.json # 依赖与构建脚本 (vue, element-plus, @element-plus/icons-vue, pinia)
292
+ ├── tsconfig.json # TypeScript 编译配置
293
+ ├── vite.config.ts # Vite 构建配置 (external 排除 vue / element-plus / cesium 等全局库)
294
+ └── src/
295
+ ├── index.vue # 主视图 SFC (使用 Element Plus 组件,无底图容器、无 Emoji)
296
+ ├── index.ts # 核心逻辑 Composable (useComponentLogic) 与 onUnmounted 资源销毁
297
+ ├── index.less # 独立样式 (pointer-events: auto !important + 左上角定位)
298
+ ├── util.ts # localStorage 持久化工具纯函数
299
+ ├── type.ts # TypeScript 接口契约定义
300
+ ├── env.d.ts # 全局变量类型声明 (window.viewer / Cesium / THREE 等)
301
+ └── components/
302
+ └── StatusPanel.vue # 私有子组件示例 (引导多组件拆分)
303
+ ```
304
+
305
+ **返回值示例**:
306
+
307
+ ```json
308
+ {
309
+ "success": true,
310
+ "message": "组件工程 [my-cesium-component] 成功生成在 D:/projects/my-cesium-component",
311
+ "project_dir": "D:/projects/my-cesium-component",
312
+ "project_name": "my-cesium-component",
313
+ "page_type": "cesium",
314
+ "created_files": [
315
+ "project.json",
316
+ "package.json",
317
+ "tsconfig.json",
318
+ "vite.config.ts",
319
+ "src/env.d.ts",
320
+ "src/type.ts",
321
+ "src/util.ts",
322
+ "src/components/StatusPanel.vue",
323
+ "src/index.less",
324
+ "src/index.ts",
325
+ "src/index.vue"
326
+ ],
327
+ "next_steps": [
328
+ "1. 进入工程目录: cd \"D:/projects/my-cesium-component\"",
329
+ "2. (可选) 安装依赖: npm install",
330
+ "3. 编写业务逻辑: 修改 src/index.vue, src/index.ts, src/index.less",
331
+ "4. 本地编译打包: 调用 build_component_project(projectDir: \"D:/projects/my-cesium-component\")",
332
+ "5. 沙箱合规自检: 调用 check_sandbox_compliance(projectDir: \"D:/projects/my-cesium-component\")",
333
+ "6. 极速发布平台: 调用 upload_component_project(projectDir: \"D:/projects/my-cesium-component\")"
334
+ ]
335
+ }
336
+ ```
337
+
338
+ **后续研发流程**(由 AI Agent 按序调用):
339
+
340
+ 1. `dkhub create_component_project` — 生成标准工程脚手架(或 `dkhub download_component_project` 拉取已有组件二次开发)
341
+ 2. 编码实现业务逻辑(按功能拆分私有子组件至 `src/components/`,单文件控制在 400 行内)
342
+ 3. `dkhub build_component_project` — 本地编译打包,输出 `dist/index.js` 与 `dist/index.css`
343
+ 4. `dkhub check_sandbox_compliance` — 13 项合规自检(需 ≥ 75 分且无阻断项)
344
+ 5. `dkhub upload_component_project`(`uploadType: "test"`)— 测试版发布
345
+ 6. `dkhub get_project_url` — 获取沙箱预览 URL 验证
346
+ 7. `dkhub upload_component_project`(`uploadType: "final"`)— 正式定版发布
347
+
348
+ > **命名提示**:`projectName` 必须使用小写字母、数字、中划线或下划线(如 `my-cesium-component`、`drone_route_plan`),不可包含大写字母或中文,否则将触发参数校验错误。
349
+
350
+ ---
351
+
352
+ #### 🎯 组件发布命令详解:`dkhub upload_component_project`
353
+
354
+ 组件发布是研发闭环的最后一步,将本地工程以物理流方式直传至知识库平台。
355
+
356
+ **终端命令(直接复制执行)**:
357
+
358
+ ```bash
359
+ dkhub upload_component_project --projectDir D:/projects/my-cesium-component --uploadType test --changelog "新增三维量测功能"
360
+ ```
361
+
362
+ **参数逐项对照**:
363
+
364
+ | 命令行写法 | 参数名 | 实际传入的值 |
365
+ | :--- | :--- | :--- |
366
+ | `--projectDir D:/projects/my-cesium-component` | `projectDir` | 本地工程根目录(**必填**) |
367
+ | `--uploadType test` | `uploadType` | `test`(测试版,默认)或 `final`(正式版) |
368
+ | `--changelog "新增三维量测功能"` | `changelog` | 版本更新说明(可省略) |
369
+ | `--skipPreflight` | `skipPreflight` | `true`(布尔开关,跳过合规预检,**不建议**) |
370
+
371
+ **等价的 MCP 调用参数**(仅 AI Agent 在服务器模式下使用,终端用户无需关心):
372
+
373
+ ```json
374
+ {
375
+ "projectDir": "D:/projects/my-cesium-component",
376
+ "uploadType": "test",
377
+ "changelog": "新增三维量测功能",
378
+ "skipPreflight": false
379
+ }
380
+ ```
381
+
382
+ **参数说明**:
383
+
384
+ | 参数 | 类型 | 必需 | 默认值 | 详细说明 |
385
+ | :--- | :--- | :---: | :--- | :--- |
386
+ | `projectDir` | `string` | 是 | — | 本地组件工程根目录路径 |
387
+ | `uploadType` | `string` | 否 | `test` | 发布模式:`test`(测试覆盖,快速迭代调试)或 `final`(正式定版发布,自动归档并触发封面快照) |
388
+ | `changelog` | `string` | 否 | — | 版本更新说明 |
389
+ | `skipPreflight` | `boolean` | 否 | `false` | 是否跳过上传前的 Pre-Flight 自动化合规前置检查。**建议保持 `false`**,若工程未达标将阻断上传并返回完整的标准工程结构与修复指引 |
390
+
391
+ **完整发布流程(终端依次执行,可直接复制)**:
392
+
393
+ ```bash
394
+ # 1. 创建工程脚手架
395
+ dkhub create_component_project --projectName my-cesium-component --pageType cesium --title "三维量测组件" --targetDir D:/projects
396
+
397
+ # 2. 编写业务代码后,本地编译打包
398
+ dkhub build_component_project --projectDir D:/projects/my-cesium-component
399
+
400
+ # 3. 13 项沙箱合规自检(需 ≥ 75 分且无阻断项)
401
+ dkhub check_sandbox_compliance --projectDir D:/projects/my-cesium-component
402
+
403
+ # 4. 测试版发布
404
+ dkhub upload_component_project --projectDir D:/projects/my-cesium-component --uploadType test
405
+
406
+ # 5. 获取预览链接,在浏览器验证渲染与交互
407
+ dkhub get_project_url --project_name my-cesium-component
408
+
409
+ # 6. 验证无误后,正式定版发布并归档
410
+ dkhub upload_component_project --projectDir D:/projects/my-cesium-component --uploadType final
411
+ ```
412
+
413
+ > **调用方式总结**:
414
+ > - **终端用户 / CI**:使用 **CLI 命令模式**,通过 `--参数名 值` 在命令行传参(如 `dkhub build_component_project --projectDir ./my-comp`),立即得到 JSON 结果。
415
+ > - **AI Agent(Cursor / Claude / VS Code 等)**:使用 **MCP 服务器模式**,运行 `dkhub`(不带参数),由 Agent 通过 MCP 协议调用,工具全名为 `dkhub_xxx`,参数以 JSON 对象传入。
416
+ > - 两种模式**能力完全等价**,共用同一套业务逻辑;命令名在 CLI 模式下可省略 `dkhub_` 前缀。
417
+
@@ -1,2 +1,21 @@
1
1
  #!/usr/bin/env node
2
- require('../dist/index.js');
2
+ /**
3
+ * dkhub / viz-dev-mcp 启动入口
4
+ *
5
+ * 两种运行模式:
6
+ * 1. CLI 模式:dkhub <command> [参数] —— 在终端直接传参调用工具命令
7
+ * 2. MCP 模式:dkhub —— 不带参数运行,作为 MCP 服务器(stdio)供 AI Agent 调用
8
+ */
9
+ const args = process.argv.slice(2);
10
+
11
+ // 判断是否为 CLI 模式:首个参数是命令名(不以 - 开头),或使用了帮助参数
12
+ const isCliMode =
13
+ (args.length > 0 && !args[0].startsWith('-')) ||
14
+ args[0] === '--help' ||
15
+ args[0] === '-h';
16
+
17
+ if (isCliMode) {
18
+ require('../dist/cli.js');
19
+ } else {
20
+ require('../dist/index.js');
21
+ }
package/dist/cli.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * dkhub CLI 命令行入口
4
+ *
5
+ * 支持在终端直接传参调用各工具命令,例如:
6
+ * dkhub create_component_project --projectName my-comp --pageType cesium --title "我的组件"
7
+ * dkhub upload_component_project --projectDir ./my-comp --uploadType test
8
+ *
9
+ * 参数传递支持三种写法:
10
+ * --key value 空格分隔
11
+ * --key=value 等号分隔
12
+ * --flag 布尔开关(如 --overwrite 等价于 --overwrite=true)
13
+ *
14
+ * 数组参数(keywords / libraries / tags)支持逗号分隔或 JSON 数组:
15
+ * --libraries tween.js,turf
16
+ * --libraries '["tween.js","turf"]'
17
+ *
18
+ * 不带任何参数运行 dkhub 时,将作为 MCP 服务器启动(由 bin 脚本分发)。
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}