@atlisp/mcp 1.5.2 → 1.6.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 +133 -51
- package/dist/atlisp-mcp.js +5952 -420
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,6 +9,10 @@ MCP (Model Context Protocol) Server for @lisp on CAD - 为 CAD 环境提供 @lis
|
|
|
9
9
|
- AI Agent 可通过 MCP 协议控制 CAD 绘图
|
|
10
10
|
- 管理 @lisp 包(列出、搜索、安装)
|
|
11
11
|
- CAD 未运行自动启动
|
|
12
|
+
- 实体/图层/块 CRUD 操作
|
|
13
|
+
- DWG 文件操作(打开/保存/导出)
|
|
14
|
+
- MCP 资源订阅推送
|
|
15
|
+
- MCP 根目录支持
|
|
12
16
|
|
|
13
17
|
---
|
|
14
18
|
|
|
@@ -234,55 +238,146 @@ curl http://localhost:8110/health
|
|
|
234
238
|
|
|
235
239
|
---
|
|
236
240
|
|
|
237
|
-
## 六、可用工具列表
|
|
241
|
+
## 六、可用工具列表 (35 个)
|
|
242
|
+
|
|
243
|
+
### CAD 连接
|
|
238
244
|
|
|
239
245
|
| 工具名称 | 描述 | 参数 |
|
|
240
246
|
|---------|------|------|
|
|
241
|
-
| `connect_cad` | 连接到 CAD |
|
|
242
|
-
| `eval_lisp` | 执行 LISP 代码(无返回值) | `code`: LISP 代码 |
|
|
243
|
-
| `eval_lisp_with_result` | 执行 LISP 并返回结果 | `code`: LISP 代码 |
|
|
247
|
+
| `connect_cad` | 连接到 CAD | `platform`: AutoCAD/ZWCAD/GStarCAD/BricsCAD |
|
|
244
248
|
| `get_cad_info` | 获取 CAD 信息 | 无 |
|
|
249
|
+
| `bring_to_front` | 切换 CAD 到前台 | 无 |
|
|
250
|
+
| `new_document` | 新建空白文档 | 无 |
|
|
251
|
+
| `get_system_status` | 获取系统诊断信息 | 无 |
|
|
252
|
+
|
|
253
|
+
### LISP 执行
|
|
254
|
+
|
|
255
|
+
| 工具名称 | 描述 | 参数 |
|
|
256
|
+
|---------|------|------|
|
|
257
|
+
| `eval_lisp` | 执行 LISP 代码(无返回值) | `code`: LISP 代码 |
|
|
258
|
+
| `eval_lisp_with_result` | 执行 LISP 并返回结果 | `code`, `encoding`: utf-8/gbk |
|
|
259
|
+
| `at_command` | 执行 @lisp 命令 | `command`: 命令 |
|
|
260
|
+
|
|
261
|
+
### 包管理
|
|
262
|
+
|
|
263
|
+
| 工具名称 | 描述 | 参数 |
|
|
264
|
+
|---------|------|------|
|
|
245
265
|
| `list_packages` | 列出已安装的包 | 无 |
|
|
246
266
|
| `search_packages` | 搜索包 | `query`: 关键词 |
|
|
247
267
|
| `install_package` | 安装包 | `packageName`: 包名 |
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
|
252
|
-
|
|
253
|
-
| `
|
|
268
|
+
|
|
269
|
+
### 实体操作
|
|
270
|
+
|
|
271
|
+
| 工具名称 | 描述 | 参数 |
|
|
272
|
+
|---------|------|------|
|
|
273
|
+
| `get_entity` | 获取实体属性 | `handle`: 句柄 |
|
|
274
|
+
| `set_entity` | 设置实体属性 | `handle`, `property`: layer/color/linetype/elevation, `value` |
|
|
275
|
+
| `delete_entity` | 删除实体 | `handle`: 句柄 |
|
|
276
|
+
| `select_entities` | 按条件选择实体 | `filter`: {type, layer} |
|
|
277
|
+
|
|
278
|
+
### 图层操作
|
|
279
|
+
|
|
280
|
+
| 工具名称 | 描述 | 参数 |
|
|
281
|
+
|---------|------|------|
|
|
282
|
+
| `create_layer` | 创建图层 | `name`, `color`: 1-255, `linetype`: 线型名 |
|
|
283
|
+
| `delete_layer` | 删除图层 | `name` |
|
|
284
|
+
| `set_layer` | 设置图层属性 | `name`, `property`: color/linetype/freeze/thaw/lock/unlock |
|
|
285
|
+
| `set_current_layer` | 设置当前图层 | `name` |
|
|
286
|
+
|
|
287
|
+
### 块操作
|
|
288
|
+
|
|
289
|
+
| 工具名称 | 描述 | 参数 |
|
|
290
|
+
|---------|------|------|
|
|
291
|
+
| `create_block` | 创建块定义 | `name`, `entities`: 实体代码 |
|
|
292
|
+
| `insert_block` | 插入块 | `blockName`, `point`: x,y, `scale`: 1, `rotation`: 0 |
|
|
293
|
+
| `get_blocks` | 获取所有块定义 | 无 |
|
|
294
|
+
| `explode_block` | 炸开块 | `handle`: 句柄 |
|
|
295
|
+
|
|
296
|
+
### 文件操作
|
|
297
|
+
|
|
298
|
+
| 工具名称 | 描述 | 参数 |
|
|
299
|
+
|---------|------|------|
|
|
300
|
+
| `open_dwg` | 打开 DWG 文件 | `filePath`: 完整路径 |
|
|
301
|
+
| `save_dwg` | 保存图形 | `filePath`: 另存路径(可选) |
|
|
302
|
+
| `export_pdf` | 导出 PDF | `outputPath`, `layout`: Model/Layout1 |
|
|
303
|
+
| `close_dwg` | 关闭图形 | `save`: true/false |
|
|
304
|
+
|
|
305
|
+
### @lisp 系统
|
|
306
|
+
|
|
307
|
+
| 工具名称 | 描述 | 参数 |
|
|
308
|
+
|---------|------|------|
|
|
254
309
|
| `install_atlisp` | 安装 @lisp | 无 |
|
|
255
|
-
| `
|
|
256
|
-
| `
|
|
257
|
-
| `
|
|
310
|
+
| `init_atlisp` | 初始化 @lisp 环境 | 无 |
|
|
311
|
+
| `get_function_usage` | 获取函数用法 | `name`: 函数名, `package`: 包名 |
|
|
312
|
+
| `list_symbols` | 列出所有符号 | `package`: 包名(可选) |
|
|
313
|
+
| `import_funlib` | 导入函数库到 AI | `format`: json/list |
|
|
314
|
+
| `get_platform_info` | 获取平台信息 | 无 |
|
|
315
|
+
| `list_prompts` | 列出提示模板 | 无 |
|
|
316
|
+
| `get_prompt` | 获取提示模板 | `name`, `args`: 参数 |
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## 七、MCP 资源 (11 个)
|
|
321
|
+
|
|
322
|
+
| URI | 名称 | 说明 | 可订阅 |
|
|
323
|
+
|-----|------|------|--------|
|
|
324
|
+
| `atlisp://cad/info` | CAD Info | CAD 连接信息 | ✓ |
|
|
325
|
+
| `atlisp://dwg/layers` | Layers | 图层列表 | ✓ |
|
|
326
|
+
| `atlisp://dwg/entities` | Entities | 实体列表/统计 | ✓ |
|
|
327
|
+
| `atlisp://dwg/texts` | Texts | 文本实体列表 | ✓ |
|
|
328
|
+
| `atlisp://dwg/name` | DWG Name | 当前文件名 | ✓ |
|
|
329
|
+
| `atlisp://dwg/path` | DWG Path | 文件完整路径 | ✓ |
|
|
330
|
+
| `atlisp://cad/dwgs` | DWG List | 所有打开的 DWG | ✓ |
|
|
331
|
+
| `atlisp://packages` | Packages | 已安装包列表 | ✓ |
|
|
332
|
+
| `atlisp://platforms` | Platforms | 支持的平台信息 | ✗ |
|
|
333
|
+
| `atlisp://standards/drafting` | Drafting Standards | CAD 制图规范 | ✗ |
|
|
334
|
+
| `atlisp://standards/coding` | Coding Standards | @lisp 编码规范 | ✗ |
|
|
335
|
+
|
|
336
|
+
### 资源参数过滤
|
|
337
|
+
|
|
338
|
+
```
|
|
339
|
+
atlisp://dwg/entities # 返回实体统计(类型+数量)
|
|
340
|
+
atlisp://dwg/entities?type=LINE # 返回 LINE 类型实体列表
|
|
341
|
+
atlisp://dwg/entities?layer=0 # 返回 0 图层实体列表
|
|
342
|
+
atlisp://dwg/entities?bbox=0,0,100,100 # 返回区域内的实体列表
|
|
343
|
+
atlisp://dwg/texts?layer=0&limit=100 # 分页获取文本
|
|
344
|
+
atlisp://dwg/layers?name=0 # 查询特定图层
|
|
345
|
+
atlisp://packages?name=base # 过滤包列表
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### 资源模板 (5 个)
|
|
349
|
+
|
|
350
|
+
| URI 模板 | 说明 |
|
|
351
|
+
|---------|------|
|
|
352
|
+
| `atlisp://dwg/entity/{handle}` | 按句柄查询实体详情 |
|
|
353
|
+
| `atlisp://dwg/entities?type={type}` | 按类型查询实体 |
|
|
354
|
+
| `atlisp://dwg/layers?name={name}` | 按名称查询图层 |
|
|
355
|
+
| `atlisp://packages?search={query}` | 搜索包 |
|
|
356
|
+
| `atlisp://dwg/texts?layer={layer}&offset={offset}&limit={limit}` | 分页获取文本 |
|
|
357
|
+
|
|
358
|
+
### MCP 根目录 (Roots) - 2 个
|
|
359
|
+
|
|
360
|
+
| URI | 名称 | 说明 |
|
|
361
|
+
|-----|------|------|
|
|
362
|
+
| `file://~/@lisp` | @lisp 根目录 | @lisp 工作目录 |
|
|
363
|
+
| `file://~/@lisp/projects` | 项目目录 | 存放 DWG 文件的项目文件夹 |
|
|
258
364
|
|
|
259
365
|
### MCP 方法
|
|
260
366
|
|
|
261
367
|
| 方法 | 说明 |
|
|
262
368
|
|------|------|
|
|
263
369
|
| `initialize` | 初始化连接 |
|
|
370
|
+
| `roots/list` | 列出根目录 |
|
|
264
371
|
| `tools/list` | 列出工具 |
|
|
265
372
|
| `tools/call` | 调用工具 |
|
|
266
373
|
| `resources/list` | 列出资源 |
|
|
267
374
|
| `resources/read` | 读取资源 |
|
|
268
375
|
| `resources/subscribe` | 订阅资源变更 |
|
|
269
376
|
| `resources/unsubscribe` | 取消订阅 |
|
|
377
|
+
| `prompts/list` | 列出提示模板 |
|
|
378
|
+
| `prompts/get` | 获取提示模板 |
|
|
270
379
|
|
|
271
|
-
###
|
|
272
|
-
|
|
273
|
-
| URI | 说明 |
|
|
274
|
-
|-----|------|
|
|
275
|
-
| `atlisp://cad/info` | CAD 连接信息(可订阅) |
|
|
276
|
-
| `atlisp://cad/layers` | 图层列表(可订阅) |
|
|
277
|
-
| `atlisp://cad/entities` | 实体统计(可订阅) |
|
|
278
|
-
| `atlisp://dwg/name` | 当前文件名(可订阅) |
|
|
279
|
-
| `atlisp://dwg/path` | 文件完整路径(可订阅) |
|
|
280
|
-
| `atlisp://packages` | 包列表(可订阅) |
|
|
281
|
-
| `atlisp://platforms` | 平台信息 |
|
|
282
|
-
|
|
283
|
-
### 资源访问方式
|
|
284
|
-
|
|
285
|
-
使用 `resources/read` 方法:
|
|
380
|
+
### 资源访问示例
|
|
286
381
|
|
|
287
382
|
```json
|
|
288
383
|
{
|
|
@@ -290,38 +385,25 @@ curl http://localhost:8110/health
|
|
|
290
385
|
"id": 1,
|
|
291
386
|
"method": "resources/read",
|
|
292
387
|
"params": {
|
|
293
|
-
"uri": "atlisp://
|
|
388
|
+
"uri": "atlisp://dwg/entities"
|
|
294
389
|
}
|
|
295
390
|
}
|
|
296
391
|
```
|
|
297
392
|
|
|
298
|
-
|
|
393
|
+
返回实体统计:
|
|
299
394
|
```json
|
|
300
395
|
{
|
|
301
396
|
"contents": [{
|
|
302
|
-
"uri": "atlisp://
|
|
397
|
+
"uri": "atlisp://dwg/entities",
|
|
303
398
|
"mimeType": "application/json",
|
|
304
|
-
"text": "{\"
|
|
399
|
+
"text": "{\"total\":150,\"summary\":[{\"type\":\"LWPOLYLINE\",\"count\":45},{\"type\":\"LINE\",\"count\":32}]}"
|
|
305
400
|
}]
|
|
306
401
|
}
|
|
307
402
|
```
|
|
308
403
|
|
|
309
|
-
**带参数的资源:**
|
|
310
|
-
|
|
311
|
-
```json
|
|
312
|
-
// 查询特定图层
|
|
313
|
-
{ "uri": "atlisp://cad/layers?name=0" }
|
|
314
|
-
|
|
315
|
-
// 查询特定实体类型
|
|
316
|
-
{ "uri": "atlisp://cad/entities?type=LINE" }
|
|
317
|
-
|
|
318
|
-
// 过滤包列表
|
|
319
|
-
{ "uri": "atlisp://packages?name=base" }
|
|
320
|
-
```
|
|
321
|
-
|
|
322
404
|
---
|
|
323
405
|
|
|
324
|
-
##
|
|
406
|
+
## 八、环境变量
|
|
325
407
|
|
|
326
408
|
| 变量 | 默认值 | 说明 |
|
|
327
409
|
|------|--------|------|
|
|
@@ -359,7 +441,7 @@ ENABLE_SSE=false atlisp-mcp
|
|
|
359
441
|
```
|
|
360
442
|
1. 客户端 → GET /sse
|
|
361
443
|
Header: Accept: text/event-stream
|
|
362
|
-
|
|
444
|
+
|
|
363
445
|
2. 服务器 → 返回 SSE 流,包含:
|
|
364
446
|
event: endpoint
|
|
365
447
|
data: {"path": "/message"}
|
|
@@ -377,7 +459,7 @@ ENABLE_SSE=false atlisp-mcp
|
|
|
377
459
|
|
|
378
460
|
---
|
|
379
461
|
|
|
380
|
-
##
|
|
462
|
+
## 九、支持平台
|
|
381
463
|
|
|
382
464
|
- **AutoCAD** (扩展名: `.fas`, `.vlx`)
|
|
383
465
|
- **ZWCAD** (扩展名: `.zelx`, `.vls`)
|
|
@@ -386,7 +468,7 @@ ENABLE_SSE=false atlisp-mcp
|
|
|
386
468
|
|
|
387
469
|
---
|
|
388
470
|
|
|
389
|
-
##
|
|
471
|
+
## 十、工作原理
|
|
390
472
|
|
|
391
473
|
1. MCP Server 通过 `edge-js` 调用 .NET 代码
|
|
392
474
|
2. .NET 通过 COM 互操作连接 CAD 应用程序
|
|
@@ -397,13 +479,13 @@ ENABLE_SSE=false atlisp-mcp
|
|
|
397
479
|
|
|
398
480
|
---
|
|
399
481
|
|
|
400
|
-
##
|
|
482
|
+
## 十一、故障排除
|
|
401
483
|
|
|
402
484
|
| 问题 | 解决方案 |
|
|
403
485
|
|------|---------|
|
|
404
486
|
| 连接失败 | 确保 CAD 已启动并启用 COM 接口 |
|
|
405
487
|
| 工具调用超时 | CAD 可能繁忙,稍后重试 |
|
|
406
|
-
| 中文乱码 | 使用 `vl-
|
|
488
|
+
| 中文乱码 | 使用 `vl-prin1-to-string` 处理 |
|
|
407
489
|
| 括号错误 | MCP Server 会自动检查并提示 |
|
|
408
490
|
|
|
409
491
|
---
|