luban-dev-mcp 0.0.0-stage → 0.1.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 +318 -2
- package/dist/luban-dev-mcp.mjs +181328 -0
- package/package.json +26 -4
- package/skill/SKILL.md +55 -0
package/README.md
CHANGED
|
@@ -1,3 +1,319 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Luban Dev MCP
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
把 Luban(知行)平台的开发助手能力,通过 MCP 接进 opencode / Claude Code / workbuddy 等外部 Agent。
|
|
4
|
+
|
|
5
|
+
- **模型由宿主提供**:MCP 不保存、不调用任何模型 Key;平台不承担 token 成本。
|
|
6
|
+
- **工具实现单源**:直接复用平台 Agent 的同一份技能实现,不是第二套。
|
|
7
|
+
- **自助接入**:`init` 向导处理 TLS、登录、应用选择、工具面、宿主配置。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. 前置
|
|
12
|
+
|
|
13
|
+
- Node.js **20+**
|
|
14
|
+
- 一个 Luban 账号(能访问目标应用)
|
|
15
|
+
- 平台地址,例如 `https://113.249.105.235:3003`(**不要带 `/api/v1`**)
|
|
16
|
+
|
|
17
|
+
## 2. 第一次接入
|
|
18
|
+
|
|
19
|
+
推荐一条命令(自签证书自动记住,详见 4.6):
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx -y luban-dev-mcp connect --base-url https://<平台> --token lbp_... --app <应用ID>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
想走交互向导:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx luban-dev-mcp init
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
本地开发(当前仓库):
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
node frontend/mcp/dist/luban-dev-mcp.mjs connect --base-url http://localhost:8080 --token lbp_... --app 4310
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
向导会依次处理:
|
|
38
|
+
|
|
39
|
+
1. 平台地址;
|
|
40
|
+
2. TLS(自签名证书会显示指纹并询问是否记住;也可 `--ca` / `--insecure`);
|
|
41
|
+
3. 登录(PAT,或账号密码);
|
|
42
|
+
4. 选择应用;
|
|
43
|
+
5. 选择工具面(full / main / flow / page);
|
|
44
|
+
6. 打印 opencode / Claude Code / workbuddy 配置片段。
|
|
45
|
+
|
|
46
|
+
配置写入 `~/.luban/mcp/config.json`,凭据写入 `~/.luban/mcp/credentials.json`(0600)。
|
|
47
|
+
|
|
48
|
+
> 多环境:`~/.luban/mcp/config.json` 支持多个 environment;用 `--env <name>` / `LUBAN_ENV` 切换。
|
|
49
|
+
|
|
50
|
+
## 3. 自检
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
luban-dev-mcp doctor
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
会检查:TLS/连通性 → 登录态 → 应用访问 → 模式(只读/锁定)→ 工具面大小。失败时给中文修法。
|
|
57
|
+
|
|
58
|
+
常用:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
luban-dev-mcp doctor --json
|
|
62
|
+
luban-dev-mcp whoami
|
|
63
|
+
luban-dev-mcp logout
|
|
64
|
+
luban-dev-mcp print-config --host opencode
|
|
65
|
+
luban-dev-mcp page-check --app 4310 --page 1398 --screenshot out.png --json
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## 4. TLS:自签名 / CA
|
|
69
|
+
|
|
70
|
+
你的线上地址 `https://113.249.105.235:3003` 目前是**自签名证书**(CN/SAN = IP,有效期到 2027-11-10)。Node 默认会拒绝,三种处理:
|
|
71
|
+
|
|
72
|
+
| 方式 | 命令 | 适用 |
|
|
73
|
+
|---|---|---|
|
|
74
|
+
| **首次信任并记住(最省事)** | `--trust-server`(`connect` 默认开启);宿主配置用 `LUBAN_TRUST_SERVER=1` | 自签名/内网;只做一次,不用导出证书 |
|
|
75
|
+
| 内联 CA(宿主配置) | `LUBAN_CA_PEM`(PEM 文本) | 不想在客户机放证书文件 |
|
|
76
|
+
| 跳过校验(试用) | `--insecure` 或 `LUBAN_INSECURE=1` | 自签名临时环境;有中间人风险 |
|
|
77
|
+
| 提供 CA(推荐生产) | `--ca /path/ca.pem` 或 `LUBAN_CA_CERT=/path/ca.pem` | 有内部 CA |
|
|
78
|
+
| 换受信任证书 | 运维替换 | 长期生产 |
|
|
79
|
+
|
|
80
|
+
`--trust-server` 是 SSH 式的首次信任(TOFU):CLI 会显示服务器证书的 SHA-256 指纹,确认后存到
|
|
81
|
+
`~/.luban/mcp/trusted-<host>_<port>.pem`,之后所有请求都用它校验;平台换证后重新信任一次即可。
|
|
82
|
+
首次连接请与平台管理员核对指纹,防止中间人。
|
|
83
|
+
|
|
84
|
+
`doctor` 会区分:`DEPTH_ZERO_SELF_SIGNED_CERT`、`CERT_HAS_EXPIRED`、`ERR_TLS_CERT_ALTNAME_INVALID`、`ECONNREFUSED` 等,并给出对应修法。
|
|
85
|
+
|
|
86
|
+
> **不要用 `http://IP:端口` 访问平台 UI**:浏览器在非安全上下文(非 HTTPS、非 localhost)会禁用 `crypto.subtle`,平台登录的 RSA 加密会直接失败。MCP 的 API 调用可以走 HTTP,但平台 UI 登录需要 HTTPS 或 `http://localhost`(可用 SSH 隧道)。
|
|
87
|
+
|
|
88
|
+
## 4.5 PAT(推荐,尤其 SSO 部署)
|
|
89
|
+
|
|
90
|
+
在平台「平台管理 → 访问令牌」新建一个令牌(`lbp_` 开头,只显示一次),然后:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
luban-dev-mcp init --base-url https://<平台> --token lbp_...
|
|
94
|
+
# 或已配置好地址后:
|
|
95
|
+
luban-dev-mcp login --token lbp_...
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
PAT 的权限就是你本人的平台权限;可在同一页面随时撤销。SSO 部署下不需要把账号密码交给 CLI。
|
|
99
|
+
|
|
100
|
+
## 4.6 命令行接入(可选,主要用于排障/运维)
|
|
101
|
+
|
|
102
|
+
拿到 PAT 后,不需要先导证书、不用记 `--ca`:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
luban-dev-mcp connect \
|
|
106
|
+
--base-url https://113.249.105.235:3003 \
|
|
107
|
+
--token lbp_... \
|
|
108
|
+
--app 2
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
`connect` 会自动:
|
|
112
|
+
|
|
113
|
+
1. 连服务器,发现自签名证书;
|
|
114
|
+
2. 显示证书主题、有效期、SHA-256 指纹;
|
|
115
|
+
3. 记住证书(`~/.luban/mcp/trusted-*.pem`)并写入配置;
|
|
116
|
+
4. 校验 PAT、列出应用、保存环境(默认 `main` profile);
|
|
117
|
+
5. 打印 opencode/Claude Code 配置片段。
|
|
118
|
+
|
|
119
|
+
之后 `doctor`、`serve`、`page-check` 都直接复用已记住的证书,**不需要再传 `--ca`**。
|
|
120
|
+
|
|
121
|
+
> `init` 在非交互环境需要显式加 `--trust-server`;`connect` 默认开启。
|
|
122
|
+
> 普通客户不需要这一步:平台「访问令牌」弹窗会生成完整 WorkBuddy 配置(含 `LUBAN_TOKEN` 与
|
|
123
|
+
> `LUBAN_TRUST_SERVER=1`),粘贴即可。
|
|
124
|
+
|
|
125
|
+
## 5. 宿主配置
|
|
126
|
+
|
|
127
|
+
### opencode(1.18 当前格式)
|
|
128
|
+
|
|
129
|
+
```json
|
|
130
|
+
{
|
|
131
|
+
"mcp": {
|
|
132
|
+
"luban": {
|
|
133
|
+
"type": "local",
|
|
134
|
+
"command": ["node", "/绝对路径/frontend/mcp/dist/luban-dev-mcp.mjs", "serve"],
|
|
135
|
+
"enabled": true,
|
|
136
|
+
"timeout": 3600000
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
发布到 npm 后可以用 `["npx","-y","luban-dev-mcp","serve"]`。
|
|
143
|
+
|
|
144
|
+
opencode V2 用:
|
|
145
|
+
|
|
146
|
+
```json
|
|
147
|
+
{
|
|
148
|
+
"mcp": {
|
|
149
|
+
"servers": {
|
|
150
|
+
"luban": { "type": "local", "command": ["npx", "-y", "luban-dev-mcp", "serve"] }
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Claude Code / Claude Desktop
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
{
|
|
160
|
+
"mcpServers": {
|
|
161
|
+
"luban": {
|
|
162
|
+
"command": "npx",
|
|
163
|
+
"args": ["-y", "luban-dev-mcp", "serve"]
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### workbuddy
|
|
170
|
+
|
|
171
|
+
配置文件是 `~/.workbuddy/mcp.json`(注意不是 `.mcp.json`)。WorkBuddy 使用
|
|
172
|
+
`mcpServers` + `command/args` 的 stdio 格式。
|
|
173
|
+
|
|
174
|
+
**客户最短路径(不需要终端)**:平台「访问令牌」新建成功后,弹窗会生成一段完整配置,
|
|
175
|
+
直接粘贴到 `~/.workbuddy/mcp.json`:
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{
|
|
179
|
+
"mcpServers": {
|
|
180
|
+
"luban": {
|
|
181
|
+
"command": "npx",
|
|
182
|
+
"args": ["-y", "luban-dev-mcp", "serve"],
|
|
183
|
+
"env": {
|
|
184
|
+
"LUBAN_BASE_URL": "https://113.249.105.235:3003",
|
|
185
|
+
"LUBAN_TOKEN": "lbp_...",
|
|
186
|
+
"LUBAN_PROFILE": "main",
|
|
187
|
+
"LUBAN_TRUST_SERVER": "1"
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
保存 → WorkBuddy 连接器管理 → 对 `luban` 点「信任」→ 对话里问
|
|
195
|
+
“你现在能用到哪些 MCP 工具?”验证。
|
|
196
|
+
|
|
197
|
+
- `LUBAN_TRUST_SERVER=1`:首次连接自签名平台时自动抓取并记住证书,指纹会打到 MCP 日志;
|
|
198
|
+
正式 CA 环境改用 `LUBAN_CA_CERT`(文件)或 `LUBAN_CA_PEM`(PEM 文本),并去掉这一项。
|
|
199
|
+
- PAT 已包含在这段配置里;**不要贴到聊天框,也不要提交到代码仓库**。
|
|
200
|
+
配置保存在本机 `~/.workbuddy/mcp.json`,离职/换机时撤销令牌即可。
|
|
201
|
+
- 更安全(可选,需要一次终端):先 `connect` 把 PAT 存到 `~/.luban/mcp/credentials.json`(0600),
|
|
202
|
+
再把 `mcp.json` 写成不带 token 的版本:
|
|
203
|
+
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"mcpServers": {
|
|
207
|
+
"luban": {
|
|
208
|
+
"command": "npx",
|
|
209
|
+
"args": ["-y", "luban-dev-mcp", "serve"]
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
- WorkBuddy 运行在沙箱/不同 HOME 时,在 `env` 里补 `"LUBAN_MCP_HOME": "/Users/你/.luban/mcp"`。
|
|
216
|
+
- 已全局安装时可把 `npx -y luban-dev-mcp` 换成 `luban-dev-mcp`。
|
|
217
|
+
- **opencode** 用另一份格式(`mcp.luban` + `environment`,不是 `env`),平台「访问令牌」弹窗里有单独的
|
|
218
|
+
opencode Tab,可直接复制,不需要手写。
|
|
219
|
+
|
|
220
|
+
### opencode(平台生成的版本)
|
|
221
|
+
|
|
222
|
+
```json
|
|
223
|
+
{
|
|
224
|
+
"mcp": {
|
|
225
|
+
"luban": {
|
|
226
|
+
"type": "local",
|
|
227
|
+
"command": ["npx", "-y", "luban-dev-mcp", "serve"],
|
|
228
|
+
"environment": {
|
|
229
|
+
"LUBAN_BASE_URL": "https://113.249.105.235:3003",
|
|
230
|
+
"LUBAN_TOKEN": "lbp_...",
|
|
231
|
+
"LUBAN_PROFILE": "main",
|
|
232
|
+
"LUBAN_TRUST_SERVER": "1"
|
|
233
|
+
},
|
|
234
|
+
"enabled": true,
|
|
235
|
+
"timeout": 3600000
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
opencode V2 把 `mcp.luban` 换成 `mcp.servers.luban`,其余字段相同。
|
|
242
|
+
|
|
243
|
+
## 6. 工具面(按模型上下文选)
|
|
244
|
+
|
|
245
|
+
| profile | 业务工具 | 工具面字符 | 估算 token | 适用 |
|
|
246
|
+
|---|---|---|---|---|
|
|
247
|
+
| `full` | 15 | ~95K | ~63K | 256K 上下文 |
|
|
248
|
+
| `main` | 14 | ~64K | ~43K | 128K 上下文(查询/页面/组织) |
|
|
249
|
+
| `flow` | 8 | ~48K | ~32K | 只做流程/编排 |
|
|
250
|
+
| `page` | 7 | ~20K | ~13K | 只做页面 |
|
|
251
|
+
|
|
252
|
+
`init` 会按选择保存;`doctor` 会打印实际读数。
|
|
253
|
+
|
|
254
|
+
## 7. 安全
|
|
255
|
+
|
|
256
|
+
- 不在平台保存用户模型 Key;MCP 不调用 `/agent/dev/chat/stream`。
|
|
257
|
+
- token 存 `~/.luban/mcp/credentials.json`(0600);日志/错误/doctor 全部脱敏。
|
|
258
|
+
- 危险/不可逆操作仍走 `luban_confirm`;页面重名/数据源选择走 `luban_resume`。
|
|
259
|
+
- 建议生产环境用 `--ca`,不要长期用 `--insecure`。
|
|
260
|
+
- **只读试用**:`--read-only`(只暴露读工具,写工具直接拒绝);**应用锁定**:`--lock-app`(`luban_use_app` 不能切到别的应用)。`init` 会询问,默认推荐只读 + 锁定。
|
|
261
|
+
|
|
262
|
+
## 8. 页面验证
|
|
263
|
+
|
|
264
|
+
MCP 工具面没有 DOM,不能跑平台 `page_behavior`。用 `page-check`(Playwright)补页面运行态:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# 浏览器二选一:
|
|
268
|
+
# A) 下载 Playwright 的 Chromium(约 190MB,需要网络)
|
|
269
|
+
npx playwright install chromium
|
|
270
|
+
# B) 直接用本机 Chrome/Chromium(不需要下载;page-check 也会自动探测)
|
|
271
|
+
luban-dev-mcp page-check --app 4310 --page 1398 \
|
|
272
|
+
--browser-executable "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
|
|
273
|
+
|
|
274
|
+
# 打开页面,检查 console/pageerror、表格行数、预警 Tag、截图
|
|
275
|
+
luban-dev-mcp page-check --app 4310 --page 1398 --screenshot out.png
|
|
276
|
+
|
|
277
|
+
# 自签名线上地址:先 connect --trust-server,之后 page-check 直接跑
|
|
278
|
+
luban-dev-mcp page-check --app 4310 --page 1398 --screenshot out.png --json
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
> `page-check` 只做本机验证:配置里是 `--ca` / `--trust-server` / `--insecure` 时,浏览器侧自动跳过证书校验,
|
|
282
|
+
> **不需要把 CA 导入系统 Keychain**。MCP 的 API 调用仍按 `--ca` / `--trust-server` 的信任链走。
|
|
283
|
+
> 只有 `--insecure` 会跳过 API 调用的校验,`--ca` / `--trust-server` 不会。
|
|
284
|
+
|
|
285
|
+
本地开发如果 API 在 8080、前端在 5173:
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
luban-dev-mcp page-check --app 4310 --page 1398 --frontend-url http://localhost:5173 --json
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
输出 JSON:`ok / title / tables / rows / redTags / alerts / stats / buttons / consoleErrors / pageErrors / screenshot`。
|
|
292
|
+
|
|
293
|
+
> 覆盖范围:页面打开、console/pageerror、行数、预警/统计、按钮、截图。
|
|
294
|
+
> 不覆盖:`viewAsUserId` 角色预览、平台桥调用计数、`PageBehaviorSmoke` 内部原子。
|
|
295
|
+
> 仓库内调试可用 `LUBAN_PLAYWRIGHT_MODULE=/绝对路径/e2e/node_modules/playwright/index.mjs` 复用 e2e 的 Playwright。
|
|
296
|
+
> 本机 Chrome 路径也可用 `LUBAN_BROWSER_EXECUTABLE` 环境变量;Playwright 浏览器缺失时 page-check 会自动尝试本机 Chrome/Chromium。
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
## 9. 常见问题
|
|
300
|
+
|
|
301
|
+
| 现象 | 修法 |
|
|
302
|
+
|---|---|
|
|
303
|
+
| `DEPTH_ZERO_SELF_SIGNED_CERT` | 用 `connect --trust-server` 自动记住证书;或 `--ca` 提供 CA;或 `--insecure` 试用 |
|
|
304
|
+
| 自签名证书不想手动导出 | `luban-dev-mcp connect ... --trust-server`(显示指纹并记住) |
|
|
305
|
+
| `crypto.subtle 不可用` | 不要用 `http://IP:端口` 访问平台;用 HTTPS、域名 + CA,或 SSH 隧道到 `http://localhost` |
|
|
306
|
+
| 401 | `luban-dev-mcp login` 重新登录;token 过期 |
|
|
307
|
+
| 403 | 账号没有该应用权限 |
|
|
308
|
+
| 404 | 地址不要带 `/api/v1`;应用 ID 是否正确 |
|
|
309
|
+
| 工具没出现 | 重启宿主;`doctor` 看工具面;opencode 用 `mcp.luban`(V1)或 `mcp.servers`(V2) |
|
|
310
|
+
| 上下文太大 | `--profile main` / `flow` / `page` |
|
|
311
|
+
|
|
312
|
+
## 10. 本地开发
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
cd frontend
|
|
316
|
+
npx tsc -p mcp/tsconfig.json --noEmit
|
|
317
|
+
node scripts/build-agent-mcp.mjs
|
|
318
|
+
node mcp/dist/luban-dev-mcp.mjs --help
|
|
319
|
+
```
|