@deveco-codegenie/mcp-darwin-x64 0.1.7 → 0.1.8
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 +208 -159
- package/bin/{mcp-server → codegenie-mcp-server} +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,187 +1,236 @@
|
|
|
1
|
-
#
|
|
1
|
+
# mcp-server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
基于MCP协议,将 HarmonyOS 开发工具链封装为标准 MCP 工具,供 AI 助手调用。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
---
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- 内置 `harmonyos_knowledge_search` 工具,直接对接云端知识库 API。
|
|
9
|
-
- 支持自然语言搜索 HarmonyOS 开发文档、API 参考和最佳实践。
|
|
10
|
-
- 智能检索相关代码片段和解决方案,辅助解决开发难题。
|
|
7
|
+
## 目录
|
|
11
8
|
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
9
|
+
- [配置方式](#配置方式)
|
|
10
|
+
- [环境变量配置](#环境变量配置)
|
|
11
|
+
- [工程路径配置](#工程路径配置)
|
|
12
|
+
- [主要功能](#主要功能)
|
|
13
|
+
- [ArkTS 代码检查](#1-arkts-代码检查-check_ets_files)
|
|
14
|
+
- [构建 HAP/HSP/HAR](#2-构建-haphsphar-build_project)
|
|
15
|
+
- [启动应用](#3-启动应用-start_app仅-windows--macos)
|
|
16
|
+
- [UI 树获取](#4-ui-树获取-get_app_ui_treewindows--macos)
|
|
17
|
+
- [UI 操作](#5-ui-操作-perform_ui_actionwindows--macos)
|
|
18
|
+
- [UI 自动化校验](#6-ui-自动化校验-verifyui--getlog仅-windows--macos)
|
|
19
|
+
- [HiLog 日志采集](#7-hilog-日志采集windows--macos)
|
|
20
|
+
- [HarmonyOS 知识库搜索](#8-harmonyos-知识库搜索-harmonyos_knowledge_searchwindows--macos)
|
|
21
|
+
- [平台支持](#平台支持)
|
|
15
22
|
|
|
16
|
-
|
|
17
|
-
- 基于 Rust 实现的高性能 MCP 服务端。
|
|
18
|
-
- 提供 NPM 包装器,便于安装和集成到现有工作流中。
|
|
23
|
+
---
|
|
19
24
|
|
|
20
|
-
##
|
|
25
|
+
## 配置方式
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
- `src-common/`: Rust 公共库,包含配置、日志、IPC 等通用模块。
|
|
24
|
-
- `npm-wrapper/`: NPM 包封装,用于分发二进制文件。
|
|
25
|
-
- `arkts-lang-server/`: ArkTS 语言服务相关组件。
|
|
27
|
+
服务启动时按以下优先级加载配置,任意一种成功即停止继续尝试。
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
### 环境变量配置
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
服务优先读取以下环境变量来定位工具链安装目录:
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
| 环境变量 | 适用平台 | 说明 |
|
|
34
|
+
|----------|----------|------|
|
|
35
|
+
| `DEVECO_PATH` | Windows / macOS | DevEco Studio 安装根目录,优先级最高 |
|
|
33
36
|
|
|
34
|
-
|
|
37
|
+
**示例(macOS):**
|
|
35
38
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
```bash
|
|
40
|
+
export DEVECO_PATH="/Applications/DevEco-Studio.app/Contents"
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**示例(Windows PowerShell):**
|
|
44
|
+
|
|
45
|
+
```powershell
|
|
46
|
+
$env:DEVECO_PATH = "C:\Program Files\Huawei\DevEco Studio"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
若以上环境变量均未设置,服务会自动扫描 DevEco Studio 的常见安装路径。
|
|
50
|
+
|
|
51
|
+
### 工程路径配置
|
|
52
|
+
|
|
53
|
+
服务通过以下方式(按优先级)确定当前 HarmonyOS 项目的根目录:
|
|
54
|
+
|
|
55
|
+
1. **环境变量** `PROJECT_PATH`:直接指定工程根路径。
|
|
40
56
|
|
|
41
|
-
2. **运行服务**
|
|
42
57
|
```bash
|
|
43
|
-
|
|
58
|
+
export PROJECT_PATH="/path/to/your/harmonyos-project"
|
|
44
59
|
```
|
|
45
60
|
|
|
46
|
-
|
|
61
|
+
2. **MCP 根目录协议**:服务启动后向 MCP 客户端请求 `roots/list`,取第一个根目录作为工程路径。
|
|
47
62
|
|
|
48
|
-
项目包含集成测试,用于验证与 DevEco Studio 和 ArkTS 语言服务的集成功能。由于这些测试依赖于本地开发环境,你需要配置环境属性文件。
|
|
49
63
|
|
|
50
|
-
|
|
64
|
+
---
|
|
51
65
|
|
|
52
|
-
|
|
66
|
+
## 主要功能
|
|
53
67
|
|
|
54
|
-
1.
|
|
55
|
-
- `DEVECO_PATH`: DevEco Studio 的安装根目录。
|
|
56
|
-
- `EMULATOR_NAME`: 自动化测试使用的模拟器名称,默认为 "Mate 70 Pro"。
|
|
68
|
+
### 1. ArkTS 代码检查(`check_ets_files`)
|
|
57
69
|
|
|
58
|
-
|
|
59
|
-
- `CLT_PATH`: HarmonyOS Command Line Tools 的安装目录。
|
|
60
|
-
- `ARKTS_LANG_SERVER`: ArkTS 语言服务的可执行文件路径。
|
|
61
|
-
- `JAVA_HOME`: Java 运行时环境路径。
|
|
70
|
+
对指定的 `.ets` / `.ts` 文件执行静态诊断,返回语法错误、类型错误等诊断信息。
|
|
62
71
|
|
|
63
|
-
|
|
64
|
-
编辑上述文件,为每个键填入你本地环境的实际路径。例如:
|
|
72
|
+
**工具名称:** `check_ets_files`
|
|
65
73
|
|
|
66
|
-
|
|
67
|
-
```properties
|
|
68
|
-
DEVECO_PATH=D:\program_files\DevEco Studio
|
|
69
|
-
EMULATOR_NAME=Mate 70 Pro
|
|
70
|
-
```
|
|
74
|
+
**参数:**
|
|
71
75
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
ARKTS_LANG_SERVER=D:\program_files\DevEco Studio\plugins\openharmony
|
|
76
|
-
JAVA_HOME=D:\program_files\DevEco Studio\jbr
|
|
77
|
-
```
|
|
76
|
+
| 参数 | 类型 | 说明 |
|
|
77
|
+
|------|------|------|
|
|
78
|
+
| `files` | `string[]` | 待检查的 ETS 文件路径列表 |
|
|
78
79
|
|
|
79
|
-
|
|
80
|
+
**实现原理:** 服务内嵌 arkts-lang-server JS 脚本,通过 Node.js 启动 LSP 代理进程,以 LSP 协议与 ArkTS 语言服务通信,收集诊断结果后返回。
|
|
80
81
|
|
|
81
|
-
|
|
82
|
+
---
|
|
82
83
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
### 2. 构建 HAP/HSP/HAR(`build_project`)
|
|
85
|
+
|
|
86
|
+
调用 Hvigor 构建系统对 HarmonyOS 项目进行编译打包。
|
|
87
|
+
|
|
88
|
+
**工具名称:** `build_project`
|
|
89
|
+
|
|
90
|
+
**参数:**
|
|
91
|
+
|
|
92
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
93
|
+
|------|------|------|------|
|
|
94
|
+
| `module` | `string` | 否 | 指定模块及 Target(如 `entry@default`);省略则构建整个 APP |
|
|
95
|
+
| `product` | `string` | 否 | 指定 Product 名称(仅构建整个 APP 时有效,与 `module` 互斥) |
|
|
96
|
+
| `buildIntent` | `BuildIntent` | 否 | 构建意图,默认为 `LogVerification` |
|
|
97
|
+
| `logPath` | `string` | 否 | 构建日志保存路径 |
|
|
98
|
+
|
|
99
|
+
**构建意图(`BuildIntent`):**
|
|
100
|
+
|
|
101
|
+
| 枚举值 | 说明 |
|
|
102
|
+
|--------|------|
|
|
103
|
+
| `LogVerification`(默认) | 保留详细运行日志,支持断点调试 |
|
|
104
|
+
| `UIDebug` | 支持获取界面元素与代码位置对应关系 |
|
|
105
|
+
| `PerformanceProfile` | 开启代码优化,保留调试钩子,用于性能调优 |
|
|
106
|
+
| `Release` | 极致压缩混淆,不支持断点调试(包体积最小) |
|
|
107
|
+
|
|
108
|
+
构建前会自动执行 `ohpm install` 安装依赖。
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
### 3. 启动应用(`start_app`)(仅 Windows / macOS)
|
|
113
|
+
|
|
114
|
+
在连接的真机或模拟器上安装并启动 HarmonyOS 应用。
|
|
115
|
+
|
|
116
|
+
**工具名称:** `start_app`
|
|
117
|
+
|
|
118
|
+
**参数:**
|
|
119
|
+
|
|
120
|
+
| 参数 | 类型 | 说明 |
|
|
121
|
+
|------|------|------|
|
|
122
|
+
| `module` | `string` | 模块名称,默认为 `entry` |
|
|
123
|
+
| `target` | `string` | 构建目标,默认为 `default` |
|
|
124
|
+
| `hvd` | `string` | 目标设备名称或 ID(不指定则列出所有可用设备) |
|
|
125
|
+
| `ability` | `string` | 要启动的 Ability 名称|
|
|
126
|
+
|
|
127
|
+
支持自动启动未运行的模拟器。
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### 4. UI 树获取(`get_app_ui_tree`)(Windows / macOS)
|
|
132
|
+
|
|
133
|
+
抓取设备当前界面的 UI 树信息,保存为 JSON 文件。
|
|
134
|
+
|
|
135
|
+
**工具名称:** `get_app_ui_tree`
|
|
136
|
+
|
|
137
|
+
**参数:**
|
|
138
|
+
|
|
139
|
+
| 参数 | 类型 | 说明 |
|
|
140
|
+
|------|------|------|
|
|
141
|
+
| `mode` | `simple \| full` | `simple`:窗口节点信息;`full`:完整 UI 树 |
|
|
142
|
+
| `outputDirectory` | `string` | 保存 JSON 文件的目录绝对路径 |
|
|
143
|
+
| `hvd` | `string` | 目标设备名称(单设备时可省略) |
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
### 5. UI 操作(`perform_ui_action`)(Windows / macOS)
|
|
148
|
+
|
|
149
|
+
对设备屏幕执行模拟操作。
|
|
150
|
+
|
|
151
|
+
**工具名称:** `perform_ui_action`
|
|
152
|
+
|
|
153
|
+
**支持的操作类型(`actionType`):**
|
|
154
|
+
|
|
155
|
+
| 操作类型 | 说明 | 主要参数 |
|
|
156
|
+
|----------|------|----------|
|
|
157
|
+
| `click` | 点击指定坐标 | `x`, `y` |
|
|
158
|
+
| `inputText` | 在指定坐标输入文本 | `x`, `y`, `text` |
|
|
159
|
+
| `directionalFling` | 方向滑动 | `direction`(0左/1右/2上/3下), `velocity`, `stepLength` |
|
|
160
|
+
| `keyEvent` | 模拟按键(支持组合键) | `key1`, `key2`, `key3` |
|
|
161
|
+
| `screenshot` | 截图 | `savePath` |
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
### 6. UI 自动化校验(`verifyUI` / `getLog`)(仅 Windows / macOS)
|
|
166
|
+
|
|
167
|
+
基于自然语言测试用例计划,对已安装的应用执行自动化 UI 校验。
|
|
168
|
+
|
|
169
|
+
**工具名称:** `verifyUI`
|
|
170
|
+
|
|
171
|
+
| 参数 | 类型 | 说明 |
|
|
172
|
+
|------|------|------|
|
|
173
|
+
| `bundleName` | `string` | 待测试应用的包名 |
|
|
174
|
+
| `testPlan` | `string` | 自然语言描述的测试用例计划(包含步骤和预期结果) |
|
|
175
|
+
| `freshStart` | `boolean` | 是否在测试前重新启动应用 |
|
|
176
|
+
|
|
177
|
+
**工具名称:** `getLog`(获取校验运行日志)
|
|
178
|
+
|
|
179
|
+
| 参数 | 类型 | 说明 |
|
|
180
|
+
|------|------|------|
|
|
181
|
+
| `id` | `string` | 校验任务 ID |
|
|
182
|
+
| `maxLogSize` | `number` | 日志字符数上限,默认 5000,传 -1 不限制 |
|
|
183
|
+
| `searchKeywords` | `string` | 日志搜索关键词,传空字符串获取完整日志 |
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
### 7. HiLog 日志采集(Windows / macOS)
|
|
188
|
+
|
|
189
|
+
从真机或模拟器实时采集 HiLog 系统日志(或崩溃日志)。
|
|
190
|
+
|
|
191
|
+
内部通过 `hdc hilog` 命令采集日志,支持多维度过滤:
|
|
192
|
+
|
|
193
|
+
| 过滤项 | 说明 |
|
|
194
|
+
|--------|------|
|
|
195
|
+
| `hvd` | 目标设备 |
|
|
196
|
+
| `iscrashLog` | `true` 时采集崩溃日志(faultlog),默认采集普通 hilog |
|
|
197
|
+
| `level` | 日志级别:`D` / `I` / `W` / `E` / `F` |
|
|
198
|
+
| `tag` | 日志标签过滤 |
|
|
199
|
+
| `domain` | 日志领域(如 `0xD002800`) |
|
|
200
|
+
| `bundleName` | 应用包名(自动获取 PID 过滤) |
|
|
201
|
+
| `keyword` | 关键字正则过滤(与 `tag` 互斥) |
|
|
202
|
+
| `logSize` | 日志缓冲区大小,范围 64K–16M,默认 4M |
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### 8. HarmonyOS 知识库搜索(`harmonyos_knowledge_search`)(Windows / macOS)
|
|
207
|
+
|
|
208
|
+
调用云端知识库,搜索 HarmonyOS 开发文档。
|
|
209
|
+
|
|
210
|
+
**工具名称:** `harmonyos_knowledge_search`
|
|
211
|
+
|
|
212
|
+
**参数:**
|
|
213
|
+
|
|
214
|
+
| 参数 | 类型 | 说明 |
|
|
215
|
+
|------|------|------|
|
|
216
|
+
| `keywords` | `string[]` | 搜索关键词列表 |
|
|
217
|
+
| `maxCharSize` | `number` | 最大返回字符数,默认 5000 |
|
|
218
|
+
|
|
219
|
+
支持搜索:API 参考、开发指南、最佳实践、常见问题、版本变更说明。
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## 平台支持
|
|
224
|
+
|
|
225
|
+
| 功能 | Windows | macOS |
|
|
226
|
+
|------|:-------:|:-----:|
|
|
227
|
+
| ArkTS 代码检查 | ✅ | ✅ |
|
|
228
|
+
| 构建 HAP/HSP/HAR | ✅ | ✅ |
|
|
229
|
+
| 启动应用 | ✅ | ✅ |
|
|
230
|
+
| UI 树获取 | ✅ | ✅ |
|
|
231
|
+
| UI 操作 | ✅ | ✅ |
|
|
232
|
+
| UI 自动化校验 | ✅ | ✅ |
|
|
233
|
+
| HiLog 日志采集 | ✅ | ✅ |
|
|
234
|
+
| 知识库搜索 | ✅ | ✅ |
|
|
86
235
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
## 🛠️ 辅助开发工具
|
|
90
|
-
|
|
91
|
-
项目利用 `xtask` 模式提供了便捷的版本管理和分发构建工具。
|
|
92
|
-
|
|
93
|
-
### 🧹 代码检查 (`cargo clippyall`)
|
|
94
|
-
|
|
95
|
-
用于在本地开发环境中对支持的所有目标平台(Windows x64, macOS x64/arm64, Linux x64)运行 Clippy 静态检查。
|
|
96
|
-
|
|
97
|
-
- **执行检查**:
|
|
98
|
-
```bash
|
|
99
|
-
cargo clippyall
|
|
100
|
-
```
|
|
101
|
-
- **说明**:
|
|
102
|
-
该命令会自动安装所需的 Rust target(如果缺失),并依次对每个平台运行 `cargo clippy`,确保代码跨平台兼容性。
|
|
103
|
-
|
|
104
|
-
### 🔢 版本更新 (`cargo bump`)
|
|
105
|
-
|
|
106
|
-
用于同步更新项目中所有组件(Rust 核心、Common 库、ArkTS 语言服务、NPM 包装器)的版本号。
|
|
107
|
-
|
|
108
|
-
- **更新版本**:
|
|
109
|
-
```bash
|
|
110
|
-
cargo bump <new_version>
|
|
111
|
-
```
|
|
112
|
-
- **更新版本并自动提交**:
|
|
113
|
-
使用 `--commit` 参数会自动检查 Git 状态并在更新版本后创建 commit 和 tag。
|
|
114
|
-
```bash
|
|
115
|
-
cargo bump <new_version> --commit
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### 📋 变更日志 (`cargo changelog`)
|
|
119
|
-
|
|
120
|
-
用于查看和生成项目的变更日志。支持灵活的范围指定,可以混合使用 tag 和 commit hash。
|
|
121
|
-
|
|
122
|
-
- **查看最近两个版本的变更**(默认):
|
|
123
|
-
```bash
|
|
124
|
-
cargo changelog
|
|
125
|
-
```
|
|
126
|
-
- **查看指定范围的变更**:
|
|
127
|
-
```bash
|
|
128
|
-
# 使用 tag
|
|
129
|
-
cargo changelog v0.1.0..v0.2.0
|
|
130
|
-
|
|
131
|
-
# 使用 commit hash
|
|
132
|
-
cargo changelog abc123..def456
|
|
133
|
-
|
|
134
|
-
# 混合使用(tag 和 hash)
|
|
135
|
-
cargo changelog v0.1.0..abc123 # tag 到 hash
|
|
136
|
-
cargo changelog def456..v0.2.0 # hash 到 tag
|
|
137
|
-
|
|
138
|
-
# 使用 HEAD 查看未发布的变更
|
|
139
|
-
cargo changelog v0.2.0..HEAD # 最新 tag 到当前 HEAD
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
### 📦 构建发布 (`cargo dist`)
|
|
143
|
-
|
|
144
|
-
用于自动化构建多平台的二进制发布产物和 NPM 包。
|
|
145
|
-
|
|
146
|
-
- **执行构建**:
|
|
147
|
-
```bash
|
|
148
|
-
cargo dist
|
|
149
|
-
```
|
|
150
|
-
- **产物说明**:
|
|
151
|
-
构建结果存放在 `target/dist/` 目录,其典型的目录结构如下:
|
|
152
|
-
|
|
153
|
-
```text
|
|
154
|
-
target/dist/
|
|
155
|
-
├── npm/
|
|
156
|
-
│ ├── codegenie-mcp-server/ # NPM 主包,用于分发和运行
|
|
157
|
-
│ │ ├── package.json # 定义 bin、dependencies 等
|
|
158
|
-
│ │ ├── index.js # 运行时自动检测平台并加载对应二进制
|
|
159
|
-
│ │ └── README.md
|
|
160
|
-
│ ├── codegenie-mcp-server-win32-x64/ # Windows (x64)
|
|
161
|
-
│ │ ├── bin/mcp-server.exe
|
|
162
|
-
│ │ ├── package.json
|
|
163
|
-
│ │ └── README.md
|
|
164
|
-
│ ├── codegenie-mcp-server-darwin-x64/ # macOS (Intel)
|
|
165
|
-
│ │ ├── bin/mcp-server
|
|
166
|
-
│ │ ├── package.json
|
|
167
|
-
│ │ └── README.md
|
|
168
|
-
│ ├── codegenie-mcp-server-darwin-arm64/ # macOS (Apple Silicon)
|
|
169
|
-
│ │ ├── bin/mcp-server
|
|
170
|
-
│ │ ├── package.json
|
|
171
|
-
│ │ └── README.md
|
|
172
|
-
│ └── codegenie-mcp-server-linux-x64/ # Linux (x64)
|
|
173
|
-
│ ├── bin/mcp-server
|
|
174
|
-
│ ├── package.json
|
|
175
|
-
│ └── README.md
|
|
176
|
-
├── mcp-server-v{version}-{platform}.zip # 平台压缩包
|
|
177
|
-
│ └── mcp-server/ # 内部根目录
|
|
178
|
-
│ ├── mcp-server (or .exe) # 可执行文件
|
|
179
|
-
│ ├── README.md # 项目说明
|
|
180
|
-
│ └── LICENSE # 授权协议
|
|
181
|
-
├── mcp-server-v{version}-{triple}{ext} # 原始二进制文件
|
|
182
|
-
└── arkts-lang-server-{version}.js # 编译并混淆后的 ArkTS 语言服务脚本
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
- **NPM 平台包**:通过 `optionalDependencies` 机制,实现在不同平台上自动安装正确的二进制文件。
|
|
186
|
-
- **ZIP 压缩包**:提供给不使用 NPM 的用户手动下载和集成。
|
|
187
|
-
- **ArkTS 语言服务**:独立打包的 JS 脚本,供 MCP 服务端调用以执行 ArkTS 相关的静态检查和分析。
|
|
236
|
+
---
|
|
Binary file
|