@atlisp/mcp 1.8.18 → 1.8.20
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/dist/atlisp-mcp.js +3969 -2535
- package/dist/cad-worker.js +53 -19
- package/dist/config.js +41 -2
- package/dist/handlers/batch-transaction-handlers.js +70 -0
- package/dist/handlers/cad-handlers.js +66 -91
- package/dist/handlers/draw-handlers.js +118 -165
- package/dist/handlers/entity-handlers.js +61 -111
- package/dist/handlers/layer-handlers.js +70 -98
- package/dist/handlers/lint-handlers.js +64 -0
- package/dist/handlers/resource-defs.js +2 -0
- package/dist/handlers/resource-handlers.js +1288 -26
- package/dist/lisp-security.js +0 -17
- package/dist/pipelines/analyze-and-report.json +16 -0
- package/dist/pipelines/batch-export-pdfs.json +11 -0
- package/dist/pipelines/batch-layer-move.json +19 -0
- package/dist/pipelines/export-current-drawing.json +18 -0
- package/dist/pipelines/purge-and-save.json +16 -0
- package/dist/prompts/definitions/analyze-drawing.json +6 -0
- package/dist/prompts/definitions/batch-draw-lines.json +14 -0
- package/dist/prompts/definitions/coding-conventions.json +11 -0
- package/dist/prompts/definitions/color-convert.json +30 -0
- package/dist/prompts/definitions/curve-analysis.json +26 -0
- package/dist/prompts/definitions/excel-report.json +9 -0
- package/dist/prompts/definitions/export-entities.json +17 -0
- package/dist/prompts/definitions/generate-dimension.json +8 -0
- package/dist/prompts/definitions/geometry-calc.json +9 -0
- package/dist/prompts/definitions/json-exchange.json +22 -0
- package/dist/prompts/definitions/manage-blocks.json +28 -0
- package/dist/prompts/definitions/manage-layers.json +35 -0
- package/dist/prompts/definitions/pickset-filter.json +31 -0
- package/dist/prompts/definitions/string-process.json +40 -0
- package/dist/prompts/definitions/test-autolisp.json +33 -0
- package/dist/prompts/definitions/text-process.json +26 -0
- package/dist/prompts/definitions/workflow-3d-model.json +24 -0
- package/dist/prompts/definitions/workflow-batch-operations.json +24 -0
- package/dist/prompts/definitions/workflow-block-manage.json +32 -0
- package/dist/prompts/definitions/workflow-drawing-export.json +23 -0
- package/dist/prompts/definitions/workflow-entity-analysis.json +23 -0
- package/dist/prompts/definitions/workflow-layer-management.json +38 -0
- package/dist/prompts/definitions/workflow-plot-publish.json +28 -0
- package/dist/prompts/definitions/workflow-sheetset.json +29 -0
- package/dist/prompts/definitions/workflow-text-process.json +29 -0
- package/dist/prompts/definitions/workflow-xref-manage.json +28 -0
- package/package.json +7 -3
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "workflow-entity-analysis",
|
|
3
|
+
"description": "实体分析流程:获取实体 → 分析属性 → 生成统计报告。用于了解图纸内容",
|
|
4
|
+
"arguments": [
|
|
5
|
+
{ "name": "action", "description": "步骤: overview/detail/report", "required": true, "default": "overview" },
|
|
6
|
+
{ "name": "type", "description": "实体类型过滤(可选)", "required": false },
|
|
7
|
+
{ "name": "handle", "description": "指定句柄的详细信息(detail 时需要)", "required": false }
|
|
8
|
+
],
|
|
9
|
+
"templates": {
|
|
10
|
+
"overview": {
|
|
11
|
+
"code": "",
|
|
12
|
+
"description": "1. 读取 atlisp://dwg/context 资源获取图纸概览(实体数、图层数等)\n2. 读取 atlisp://dwg/entities 获取按类型统计\n3. 或调用 stream_entities 获取实体列表"
|
|
13
|
+
},
|
|
14
|
+
"detail": {
|
|
15
|
+
"code": "",
|
|
16
|
+
"description": "1. 调用 get_entity({ handle }) 获取实体属性\n2. 调用 get_entity_info({ handle }) 获取详细信息\n3. 调用 get_bounding_box({ handle }) 获取包围盒\n4. 如果文本,调用 stream_text 查看文本内容"
|
|
17
|
+
},
|
|
18
|
+
"report": {
|
|
19
|
+
"code": "",
|
|
20
|
+
"description": "汇总以上信息生成 JSON 报告:\n{\n docName: ...,\n entityCount: ...,\n byType: { LINE: ..., CIRCLE: ..., TEXT: ... },\n layers: [...],\n extents: { min: ..., max: ... }\n}"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "workflow-layer-management",
|
|
3
|
+
"description": "图层全套操作:查看、创建、修改属性、隔离、合并、清理。端到端图层管理",
|
|
4
|
+
"arguments": [
|
|
5
|
+
{ "name": "action", "description": "操作类型: list/create/set/isolate/merge/purge", "required": true, "default": "list" },
|
|
6
|
+
{ "name": "layerName", "description": "图层名", "required": false },
|
|
7
|
+
{ "name": "newName", "description": "新图层名(rename 需要用)", "required": false },
|
|
8
|
+
{ "name": "color", "description": "颜色号(1-255)", "required": false },
|
|
9
|
+
{ "name": "sourceLayer", "description": "源图层名(merge 需要)", "required": false },
|
|
10
|
+
{ "name": "targetLayer", "description": "目标图层名", "required": false }
|
|
11
|
+
],
|
|
12
|
+
"templates": {
|
|
13
|
+
"list": {
|
|
14
|
+
"code": "",
|
|
15
|
+
"description": "使用 atlisp://dwg/tbl/layer 资源获取所有图层信息,或调用 list_tools_by_category({ category: '图层' }) 查看图层相关工具"
|
|
16
|
+
},
|
|
17
|
+
"create": {
|
|
18
|
+
"code": "(layer:make \"{{layerName}}\" {{color}} \"Continuous\" 0)",
|
|
19
|
+
"description": "创建图层 {{layerName}}\n1. 调用 create_layer({ name: layerName, color, linetype })\n2. 调用 set_current_layer({ name: layerName })设为当前"
|
|
20
|
+
},
|
|
21
|
+
"set": {
|
|
22
|
+
"code": "",
|
|
23
|
+
"description": "修改图层属性:\n- set_layer({ name: layerName, property: 'color', value: color })\n- set_layer({ name: layerName, property: 'freeze', value: '1' })\n- set_layer({ name: layerName, property: 'lock', value: '1' })"
|
|
24
|
+
},
|
|
25
|
+
"isolate": {
|
|
26
|
+
"code": "",
|
|
27
|
+
"description": "1. 调用 layer_isolate({ name: layerName })隔离图层(关闭其他)\n2. 操作完成后调用 layer_unisolate() 恢复"
|
|
28
|
+
},
|
|
29
|
+
"merge": {
|
|
30
|
+
"code": "",
|
|
31
|
+
"description": "1. 调用 layer_merge({ sourceName: sourceLayer, targetName: targetLayer })\n2. 源图层所有实体移到目标图层,源图层被删除"
|
|
32
|
+
},
|
|
33
|
+
"purge": {
|
|
34
|
+
"code": "",
|
|
35
|
+
"description": "1. 调用 purge_layers({ namePattern: '*TEMP*' })清理未使用图层\n2. 或调用 purge_all() 清理所有未使用项"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "workflow-plot-publish",
|
|
3
|
+
"description": "打印发布流程:创建页面设置 → 分配布局 → 批量打印/发布 PDF",
|
|
4
|
+
"arguments": [
|
|
5
|
+
{ "name": "action", "description": "步骤: setup/assign/publish/plot", "required": true, "default": "publish" },
|
|
6
|
+
{ "name": "pageSetupName", "description": "页面设置名称", "required": false, "default": "A4-PDF" },
|
|
7
|
+
{ "name": "layout", "description": "布局名称", "required": false },
|
|
8
|
+
{ "name": "outputDir", "description": "输出目录", "required": false }
|
|
9
|
+
],
|
|
10
|
+
"templates": {
|
|
11
|
+
"setup": {
|
|
12
|
+
"code": "",
|
|
13
|
+
"description": "1. 调用 create_page_setup({ name: pageSetupName, printer: 'DWG To PDF.pc3', paperSize: 'A4' })\n2. 或调用 list_page_setups() 查看已有的页面设置"
|
|
14
|
+
},
|
|
15
|
+
"assign": {
|
|
16
|
+
"code": "",
|
|
17
|
+
"description": "1. 调用 list_layouts() 查看所有布局\n2. 调用 set_page_setup({ layout, pageSetupName })分配页面设置"
|
|
18
|
+
},
|
|
19
|
+
"publish": {
|
|
20
|
+
"code": "",
|
|
21
|
+
"description": "1. 调用 list_layouts() 获取所有布局列表\n2. 调用 publish_layouts({ layouts: ['布局1','布局2'], outputDir, merge: true })批量发布"
|
|
22
|
+
},
|
|
23
|
+
"plot": {
|
|
24
|
+
"code": "",
|
|
25
|
+
"description": "单张打印:\n1. plot_to_pdf({ outputPath, layout, paperSize: 'A4' })\n2. 或 plot_to_printer({ printerName: '打印机名', layout })"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "workflow-sheetset",
|
|
3
|
+
"description": "图纸集操作流程:创建图纸集 → 添加图纸 → 发布/归档",
|
|
4
|
+
"arguments": [
|
|
5
|
+
{ "name": "action", "description": "步骤: create/add/publish/archive", "required": true, "default": "create" },
|
|
6
|
+
{ "name": "sheetSetName", "description": "图纸集名称", "required": false },
|
|
7
|
+
{ "name": "sheetName", "description": "图纸名称", "required": false },
|
|
8
|
+
{ "name": "layoutName", "description": "布局名称", "required": false },
|
|
9
|
+
{ "name": "outputDir", "description": "输出目录", "required": false }
|
|
10
|
+
],
|
|
11
|
+
"templates": {
|
|
12
|
+
"create": {
|
|
13
|
+
"code": "",
|
|
14
|
+
"description": "1. 调用 create_sheet_set({ name: sheetSetName, description: '...' })创建图纸集\n2. 或调用 open_sheet_set({ filePath }) 打开已有 .dst 文件"
|
|
15
|
+
},
|
|
16
|
+
"add": {
|
|
17
|
+
"code": "",
|
|
18
|
+
"description": "1. 调用 add_sheet({ sheetSetName, sheetName, layoutName })添加图纸\n2. 调用 add_sheet 添加更多图纸\n3. 创建子集: create_subset({ sheetSetName, subsetName })"
|
|
19
|
+
},
|
|
20
|
+
"publish": {
|
|
21
|
+
"code": "",
|
|
22
|
+
"description": "1. 调用 list_sheets({ sheetSetName })查看图纸列表\n2. 调用 publish_sheet_set({ sheetSetName, outputDir, format: 'PDF' })发布"
|
|
23
|
+
},
|
|
24
|
+
"archive": {
|
|
25
|
+
"code": "",
|
|
26
|
+
"description": "1. 调用 create_sheet_set_archive({ sheetSetName, archivePath })归档\n2. 或调用 sheet_set_transmit({ sheetSetName })eTransmit 打包"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "workflow-text-process",
|
|
3
|
+
"description": "文字处理流程:查找 → 替换 → 格式化。用于批量编辑图纸中的文字内容",
|
|
4
|
+
"arguments": [
|
|
5
|
+
{ "name": "action", "description": "步骤: find/replace/format/convert", "required": true, "default": "find" },
|
|
6
|
+
{ "name": "pattern", "description": "搜索文本模式(支持通配符)", "required": false },
|
|
7
|
+
{ "name": "replacement", "description": "替换文本", "required": false },
|
|
8
|
+
{ "name": "caseSensitive", "description": "是否区分大小写", "required": false, "default": "false" },
|
|
9
|
+
{ "name": "handle", "description": "文字实体句柄", "required": false }
|
|
10
|
+
],
|
|
11
|
+
"templates": {
|
|
12
|
+
"find": {
|
|
13
|
+
"code": "",
|
|
14
|
+
"description": "1. 调用 find_text({ pattern, caseSensitive }) 搜索文本\n2. 或读取 atlisp://dwg/text-content 获取所有文字内容"
|
|
15
|
+
},
|
|
16
|
+
"replace": {
|
|
17
|
+
"code": "",
|
|
18
|
+
"description": "1. 调用 replace_text({ pattern, replacement, caseSensitive }) 全文替换\n2. 如需精确控制,先用 find_text 找到句柄\n3. 再逐个调用 set_text_style_name 或 set_text_height 调整格式"
|
|
19
|
+
},
|
|
20
|
+
"format": {
|
|
21
|
+
"code": "",
|
|
22
|
+
"description": "1. 调用 set_text_height({ handle, height }) 调整文字高度\n2. 调用 set_text_style_name({ handle, styleName }) 修改文字样式\n3. 调用 justify_text({ handle, justification: 'MC' }) 修改对齐方式"
|
|
23
|
+
},
|
|
24
|
+
"convert": {
|
|
25
|
+
"code": "",
|
|
26
|
+
"description": "1. 调用 convert_text_to_mtext({ handles })将单行文字转为多行文字\n2. 调用 explode_text({ handle })将文字分解为线条"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "workflow-xref-manage",
|
|
3
|
+
"description": "外部参照管理流程:附着 → 管理 → 拆离/绑定。用于协作设计中的参照管理",
|
|
4
|
+
"arguments": [
|
|
5
|
+
{ "name": "action", "description": "步骤: attach/manage/detach/bind", "required": true, "default": "attach" },
|
|
6
|
+
{ "name": "path", "description": "DWG 文件路径", "required": false },
|
|
7
|
+
{ "name": "name", "description": "外部参照名称", "required": false },
|
|
8
|
+
{ "name": "insertPoint", "description": "插入点", "required": false }
|
|
9
|
+
],
|
|
10
|
+
"templates": {
|
|
11
|
+
"attach": {
|
|
12
|
+
"code": "",
|
|
13
|
+
"description": "1. 调用 attach_xref({ path, point: insertPoint, scale: 1, overlay: false }) 附着参照\n2. overlay: true 为覆盖型,false 为附着型"
|
|
14
|
+
},
|
|
15
|
+
"manage": {
|
|
16
|
+
"code": "",
|
|
17
|
+
"description": "1. 调用 list_xrefs() 查看所有外部参照\n2. 调用 path_xref({ name, newPath })修改参照路径\n3. 调用 reload_xref({ name }) 重载\n4. 调用 unload_xref({ name }) 卸载"
|
|
18
|
+
},
|
|
19
|
+
"detach": {
|
|
20
|
+
"code": "",
|
|
21
|
+
"description": "1. 调用 detach_xref({ name }) 拆离参照\n2. 或 clip_xref({ name, points }) 裁剪参照显示范围"
|
|
22
|
+
},
|
|
23
|
+
"bind": {
|
|
24
|
+
"code": "",
|
|
25
|
+
"description": "1. 调用 bind_xref({ name, bindType: 'bind' })绑定参照\n2. bindType: 'bind' 保留命名空间,'insert' 直接插入"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlisp/mcp",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.20",
|
|
4
4
|
"description": "MCP Server for @lisp on CAD,support AutoCAD/GstarCAD/ZWCAD/BricsCAD or CAD platform compatible with AutoLISP",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -18,10 +18,12 @@
|
|
|
18
18
|
"start": "node src/atlisp-mcp.js",
|
|
19
19
|
"build": "npm run build:main && npm run build:worker",
|
|
20
20
|
"build:main": "esbuild src/atlisp-mcp.js --bundle --platform=node --target=node18 --format=esm --outdir=dist --external:edge-js --packages=external --banner:js=\"#!/usr/bin/env node\"",
|
|
21
|
-
"build:worker": "node -e \"const fs=require('fs');const path=require('path');for(const f of ['cad-worker.js','lisp-security.js','logger.js','config.js'])fs.copyFileSync('src/'+f,'dist/'+f);if(!fs.existsSync('dist/html'))fs.mkdirSync('dist/html');for(const f of fs.readdirSync('src/html'))fs.copyFileSync('src/html/'+f,'dist/html/'+f);if(!fs.existsSync('dist/handlers'))fs.mkdirSync('dist/handlers');for(const f of fs.readdirSync('src/handlers'))fs.copyFileSync('src/handlers/'+f,'dist/handlers/'+f)\"",
|
|
21
|
+
"build:worker": "node -e \"const fs=require('fs');const path=require('path');for(const f of ['cad-worker.js','lisp-security.js','logger.js','config.js'])fs.copyFileSync('src/'+f,'dist/'+f);if(!fs.existsSync('dist/html'))fs.mkdirSync('dist/html');for(const f of fs.readdirSync('src/html'))fs.copyFileSync('src/html/'+f,'dist/html/'+f);if(!fs.existsSync('dist/handlers'))fs.mkdirSync('dist/handlers');for(const f of fs.readdirSync('src/handlers'))fs.copyFileSync('src/handlers/'+f,'dist/handlers/'+f);if(!fs.existsSync('dist/prompts/definitions'))fs.mkdirSync('dist/prompts/definitions',{recursive:true});for(const f of fs.readdirSync('src/prompts/definitions'))fs.copyFileSync('src/prompts/definitions/'+f,'dist/prompts/definitions/'+f)\"",
|
|
22
22
|
"prepublishOnly": "npm run build",
|
|
23
23
|
"test": "vitest run",
|
|
24
|
-
"test:watch": "vitest"
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"test:e2e": "vitest run tests/e2e/",
|
|
26
|
+
"test:e2e:docker": "docker compose -f docker-compose.test.yml build && vitest run tests/e2e/"
|
|
25
27
|
},
|
|
26
28
|
"keywords": [
|
|
27
29
|
"mcp",
|
|
@@ -41,6 +43,8 @@
|
|
|
41
43
|
"url": "https://gitee.com/organizations/atlisp/issues"
|
|
42
44
|
},
|
|
43
45
|
"dependencies": {
|
|
46
|
+
"@atlisp/lint": "^0.2.8",
|
|
47
|
+
"@atlisp/parser": "^0.1.6",
|
|
44
48
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
45
49
|
"@opentelemetry/api": "^1.9.1",
|
|
46
50
|
"@opentelemetry/exporter-prometheus": "^0.218.0",
|