@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.
Files changed (3) hide show
  1. package/README.md +133 -51
  2. package/dist/atlisp-mcp.js +5952 -420
  3. 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
- | `get_platform_info` | 获取平台信息 | 无 |
249
- | `get_file_extensions` | 获取文件扩展名 | `platform`: 平台名 |
250
- | `get_install_code` | 获取安装代码 | 无 |
251
- | `at_command` | 执行 @lisp 命令 | `command`: 命令 |
252
- | `new_document` | 新建空白文档 | 无 |
253
- | `bring_to_front` | 切换 CAD 到前台 | |
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
- | `get_function_usage` | 获取函数用法 | `name`: 函数名 |
256
- | `list_symbols` | 列出所有符号(函数和变量) | |
257
- | `import_funlib` | 从网络导入函数库数据到 AI Agent | `format`: json/list |
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
- ### MCP 资源
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://cad/info"
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://cad/info",
397
+ "uri": "atlisp://dwg/entities",
303
398
  "mimeType": "application/json",
304
- "text": "{\"connected\":true,\"platform\":\"AutoCAD\",\"version\":\"24.1\",\"busy\":false}"
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-princ-to-string` 处理 |
488
+ | 中文乱码 | 使用 `vl-prin1-to-string` 处理 |
407
489
  | 括号错误 | MCP Server 会自动检查并提示 |
408
490
 
409
491
  ---