@atlisp/mcp 1.8.10 → 1.8.12
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 +636 -300
- package/dist/atlisp-mcp.js +14350 -11639
- package/dist/cad-worker.js +6 -66
- package/dist/config.js +241 -0
- package/dist/lisp-security.js +76 -0
- package/dist/logger.js +163 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,22 +1,67 @@
|
|
|
1
1
|
# @lisp MCP Server
|
|
2
2
|
|
|
3
|
-
MCP (Model Context Protocol) Server for @lisp on CAD
|
|
3
|
+
MCP (Model Context Protocol) Server for @lisp on CAD — 为 CAD 环境提供 @lisp 包管理服务的 MCP 服务器,同时为 AI Agent 操控 CAD 提供 **220+ 个调用工具**和通道。
|
|
4
|
+
|
|
5
|
+
支持 **AutoCAD / ZWCAD / GStarCAD / BricsCAD**,通过 COM 互操作与 CAD 通信。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 目录
|
|
10
|
+
|
|
11
|
+
- [功能特性](#功能特性)
|
|
12
|
+
- [快速安装](#快速安装)
|
|
13
|
+
- [配置 AI Agent](#配置-ai-agent)
|
|
14
|
+
- [启动服务](#启动服务)
|
|
15
|
+
- [连接 CAD](#连接-cad)
|
|
16
|
+
- [工具列表](#工具列表)
|
|
17
|
+
- [MCP 资源](#mcp-资源)
|
|
18
|
+
- [MCP Prompts](#mcp-prompts)
|
|
19
|
+
- [HTTP API 端点](#http-api-端点)
|
|
20
|
+
- [环境变量](#环境变量)
|
|
21
|
+
- [命令行参数](#命令行参数)
|
|
22
|
+
- [配置文件](#配置文件)
|
|
23
|
+
- [工作原理](#工作原理)
|
|
24
|
+
- [Docker](#docker)
|
|
25
|
+
- [开发指南](#开发指南)
|
|
26
|
+
- [故障排除](#故障排除)
|
|
27
|
+
- [许可证](#许可证)
|
|
28
|
+
|
|
29
|
+
---
|
|
4
30
|
|
|
5
31
|
## 功能特性
|
|
6
32
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
- AI Agent
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
33
|
+
- **连接多平台 CAD** — AutoCAD / ZWCAD / GStarCAD / BricsCAD
|
|
34
|
+
- **执行 AutoLISP** — 执行 LISP 代码并获取结果
|
|
35
|
+
- **AI Agent 控制 CAD** — 220+ MCP 工具,涵盖绘图、编辑、查询、管理
|
|
36
|
+
- **包管理** — 列出、搜索、安装 @lisp 包
|
|
37
|
+
- **批量操作** — 批量复制/移动/旋转/缩放/镜像/偏移/改名/改色/改图层
|
|
38
|
+
- **3D 建模** — 创建 Box/Sphere/Cylinder/Cone/Torus/Wedge,布尔运算,拉伸/旋转
|
|
39
|
+
- **图纸集管理** — 创建/发布/归档/比较/打包图纸集
|
|
40
|
+
- **动态块** — 获取/设置参数、可见性状态
|
|
41
|
+
- **几何约束与标注约束** — 添加/删除/列出约束
|
|
42
|
+
- **外部参照** — 附着/拆离/绑定/裁剪/路径管理/批量相对化
|
|
43
|
+
- **PDF/DGN/DWF 底图** — 附着/拆离/重载/批量附着
|
|
44
|
+
- **扩展数据 (Xdata)** — 读写/复制/搜索/导入/导出
|
|
45
|
+
- **管道 (Pipeline)** — 编排多步工具调用链
|
|
46
|
+
- **触发器 (Watch)** — 注册 CAD 变更触发器,等待条件满足
|
|
47
|
+
- **Webhook** — 事件驱动回调(工具执行/包安装/CAD 连接等)
|
|
48
|
+
- **REPL** — 交互式 Lisp 执行会话
|
|
49
|
+
- **流式读取** — 分页流式读取实体/文字/块参照
|
|
50
|
+
- **外部数据** — 查询/导入/导出 CSV/JSON 数据源
|
|
51
|
+
- **审计日志** — 查询和统计工具调用历史
|
|
52
|
+
- **CAD 连接池** — 发现/切换/健康检查多 CAD 实例
|
|
53
|
+
- **沙箱** — 验证 LISP 代码安全性
|
|
54
|
+
- **资源订阅** — 实时推送 CAD/DWG/包变更
|
|
55
|
+
- **LLM Sampling** — 通过配置的 LLM 提供采样能力
|
|
56
|
+
- **Prometheus 指标** — 导出 /metrics 端点
|
|
57
|
+
- **SSL/TLS** — 支持 HTTPS 加密通信
|
|
58
|
+
- **API Key 认证与速率限制**
|
|
59
|
+
- **配置热重载** — 配置文件变更自动加载
|
|
60
|
+
- **多种传输模式** — HTTP / SSE / stdio / WebSocket
|
|
16
61
|
|
|
17
62
|
---
|
|
18
63
|
|
|
19
|
-
##
|
|
64
|
+
## 快速安装
|
|
20
65
|
|
|
21
66
|
### Windows (PowerShell)
|
|
22
67
|
|
|
@@ -25,21 +70,27 @@ iwr -useb https://atlisp.cn/install.ps1 | iex
|
|
|
25
70
|
```
|
|
26
71
|
|
|
27
72
|
安装脚本会自动:
|
|
28
|
-
- 安装 Node.js
|
|
73
|
+
- 安装 Node.js(如未安装,支持 winget/choco/scoop/MSI)
|
|
29
74
|
- 全局安装 `@atlisp/mcp` 包
|
|
30
|
-
-
|
|
75
|
+
- 注册命令 `atlisp-mcp`
|
|
76
|
+
|
|
77
|
+
### 手动安装 (npm)
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npm install -g @atlisp/mcp
|
|
81
|
+
```
|
|
31
82
|
|
|
32
83
|
### 验证安装
|
|
33
84
|
|
|
34
|
-
```
|
|
85
|
+
```bash
|
|
35
86
|
atlisp-mcp --version
|
|
36
87
|
```
|
|
37
88
|
|
|
38
89
|
---
|
|
39
90
|
|
|
40
|
-
##
|
|
91
|
+
## 配置 AI Agent
|
|
41
92
|
|
|
42
|
-
### WorkBuddy
|
|
93
|
+
### WorkBuddy
|
|
43
94
|
|
|
44
95
|
在 `~/.workbuddy/.mcp.json` 中添加:
|
|
45
96
|
|
|
@@ -53,7 +104,7 @@ atlisp-mcp --version
|
|
|
53
104
|
}
|
|
54
105
|
```
|
|
55
106
|
|
|
56
|
-
### Claude Desktop
|
|
107
|
+
### Claude Desktop
|
|
57
108
|
|
|
58
109
|
在 `~/AppData/Roaming/Claude/claude_desktop_config.json` 中添加:
|
|
59
110
|
|
|
@@ -70,7 +121,7 @@ atlisp-mcp --version
|
|
|
70
121
|
}
|
|
71
122
|
```
|
|
72
123
|
|
|
73
|
-
###
|
|
124
|
+
### Cline / Cursor / Windsurf
|
|
74
125
|
|
|
75
126
|
```json
|
|
76
127
|
{
|
|
@@ -86,9 +137,24 @@ atlisp-mcp --version
|
|
|
86
137
|
}
|
|
87
138
|
```
|
|
88
139
|
|
|
140
|
+
### opencode / Goose / 其他支持 stdio 的 Agent
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"mcpServers": {
|
|
145
|
+
"atlisp-mcp": {
|
|
146
|
+
"command": "atlisp-mcp",
|
|
147
|
+
"env": {
|
|
148
|
+
"TRANSPORT": "stdio"
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
89
155
|
---
|
|
90
156
|
|
|
91
|
-
##
|
|
157
|
+
## 启动服务
|
|
92
158
|
|
|
93
159
|
### HTTP 模式(默认,端口 8110)
|
|
94
160
|
|
|
@@ -96,17 +162,29 @@ atlisp-mcp --version
|
|
|
96
162
|
atlisp-mcp
|
|
97
163
|
```
|
|
98
164
|
|
|
99
|
-
|
|
165
|
+
输出:
|
|
100
166
|
```
|
|
101
167
|
@lisp MCP Server 启动 - http://0.0.0.0:8110 - Streamable HTTP
|
|
102
168
|
```
|
|
103
169
|
|
|
104
|
-
### stdio
|
|
170
|
+
### stdio 模式
|
|
105
171
|
|
|
106
172
|
```bash
|
|
107
|
-
atlisp-mcp
|
|
108
|
-
|
|
109
|
-
|
|
173
|
+
TRANSPORT=stdio atlisp-mcp
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### WebSocket 模式
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
TRANSPORT=ws atlisp-mcp
|
|
180
|
+
# 或
|
|
181
|
+
atlisp-mcp --ws
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 指定端口/主机
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
atlisp-mcp --port 9000 --host 127.0.0.1
|
|
110
188
|
```
|
|
111
189
|
|
|
112
190
|
### 健康检查
|
|
@@ -117,28 +195,31 @@ curl http://localhost:8110/health
|
|
|
117
195
|
|
|
118
196
|
返回 `{"status":"ok","cad":"connected"}` 表示服务正常。
|
|
119
197
|
|
|
120
|
-
###
|
|
198
|
+
### 查看指标
|
|
121
199
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
200
|
+
```bash
|
|
201
|
+
curl http://localhost:8110/metrics
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### 调试面板
|
|
205
|
+
|
|
206
|
+
打开浏览器访问 `http://localhost:8110/debug`
|
|
207
|
+
|
|
208
|
+
### 工具游乐场
|
|
209
|
+
|
|
210
|
+
打开浏览器访问 `http://localhost:8110/playground`
|
|
128
211
|
|
|
129
212
|
---
|
|
130
213
|
|
|
131
|
-
##
|
|
214
|
+
## 连接 CAD
|
|
132
215
|
|
|
133
216
|
### 前置条件
|
|
134
217
|
|
|
135
218
|
- Windows 系统
|
|
136
|
-
- CAD
|
|
137
|
-
- CAD
|
|
138
|
-
|
|
139
|
-
### 连接方式
|
|
219
|
+
- CAD 软件已安装
|
|
220
|
+
- CAD 已启动或允许自动启动
|
|
140
221
|
|
|
141
|
-
使用 MCP
|
|
222
|
+
### 使用 MCP 工具连接
|
|
142
223
|
|
|
143
224
|
```json
|
|
144
225
|
{
|
|
@@ -147,349 +228,604 @@ curl http://localhost:8110/health
|
|
|
147
228
|
}
|
|
148
229
|
```
|
|
149
230
|
|
|
231
|
+
或指定平台:
|
|
232
|
+
|
|
233
|
+
```json
|
|
234
|
+
{
|
|
235
|
+
"name": "connect_cad",
|
|
236
|
+
"arguments": {
|
|
237
|
+
"platform": "AutoCAD"
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
150
242
|
**自动行为**:
|
|
151
243
|
- 如果 CAD 已运行,连接现有实例
|
|
152
244
|
- 如果 CAD 未运行,通过 COM 自动创建新实例
|
|
153
245
|
|
|
154
|
-
|
|
246
|
+
连接成功返回类似: `已连接到 AutoCAD 2025`
|
|
155
247
|
|
|
156
248
|
---
|
|
157
249
|
|
|
158
|
-
##
|
|
250
|
+
## 工具列表 (220+)
|
|
159
251
|
|
|
160
|
-
###
|
|
252
|
+
### 系统与 CAD 连接 (11)
|
|
161
253
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
254
|
+
| 工具 | 说明 | 参数 |
|
|
255
|
+
|------|------|------|
|
|
256
|
+
| `connect_cad` | 连接 CAD | `platform` (可选) |
|
|
257
|
+
| `eval_lisp` | 执行 LISP 代码(无返回值) | `code` (必填) |
|
|
258
|
+
| `eval_lisp_with_result` | 执行 LISP 并返回结果 | `code` (必填), `encoding` (可选) |
|
|
259
|
+
| `get_cad_info` | 获取 CAD 信息 | — |
|
|
260
|
+
| `get_platform_info` | 获取平台信息 | — |
|
|
261
|
+
| `at_command` | 执行 @lisp 命令 | `command` (必填) |
|
|
262
|
+
| `new_document` | 新建空白文档 | — |
|
|
263
|
+
| `bring_to_front` | 切换 CAD 到前台 | — |
|
|
264
|
+
| `install_atlisp` | 安装 @lisp | — |
|
|
265
|
+
| `init_atlisp` | 初始化 @lisp 环境 | — |
|
|
266
|
+
| `get_system_status` | 获取系统诊断信息 | — |
|
|
170
267
|
|
|
171
|
-
###
|
|
268
|
+
### LISP 执行
|
|
172
269
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
270
|
+
| 工具 | 说明 |
|
|
271
|
+
|------|------|
|
|
272
|
+
| `eval_lisp` | 执行 LISP 代码,不返回结果 |
|
|
273
|
+
| `eval_lisp_with_result` | 执行 LISP 代码并返回结果,支持 `encoding: utf-8/gbk/gb2312/gb18030` |
|
|
274
|
+
| `lisp_repl` | REPL 会话执行,自动追踪变量和历史 |
|
|
275
|
+
| `lisp_repl_history` | 获取 REPL 会话历史 |
|
|
276
|
+
| `lisp_repl_list` | 列出活跃 REPL 会话 |
|
|
277
|
+
| `lisp_repl_close` | 关闭 REPL 会话 |
|
|
181
278
|
|
|
182
|
-
### 3
|
|
279
|
+
### 包管理 (3)
|
|
183
280
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
```
|
|
281
|
+
| 工具 | 说明 | 参数 |
|
|
282
|
+
|------|------|------|
|
|
283
|
+
| `list_packages` | 列出已安装包 | — |
|
|
284
|
+
| `search_packages` | 搜索包 | `query` (必填) |
|
|
285
|
+
| `install_package` | 安装包到 CAD | `packageName` (必填) |
|
|
192
286
|
|
|
193
|
-
###
|
|
287
|
+
### 信息与函数 (5)
|
|
194
288
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
```
|
|
289
|
+
| 工具 | 说明 |
|
|
290
|
+
|------|------|
|
|
291
|
+
| `get_function_usage` | 获取 @lisp 函数用法 |
|
|
292
|
+
| `list_symbols` | 列出所有符号(函数/变量) |
|
|
293
|
+
| `import_funlib` | 导入函数库数据到 AI Agent |
|
|
294
|
+
| `list_prompts` | 列出提示模板 |
|
|
295
|
+
| `get_prompt` | 获取指定提示模板 |
|
|
203
296
|
|
|
204
|
-
###
|
|
297
|
+
### 实体操作 (4)
|
|
205
298
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
```
|
|
299
|
+
| 工具 | 说明 |
|
|
300
|
+
|------|------|
|
|
301
|
+
| `get_entity` | 获取实体属性(句柄/类型/图层/颜色等) |
|
|
302
|
+
| `set_entity` | 设置实体属性(layer/color/linetype/elevation) |
|
|
303
|
+
| `delete_entity` | 删除实体 |
|
|
304
|
+
| `select_entities` | 按条件选择实体(type/layer 过滤) |
|
|
305
|
+
| `get_entity_info` | 获取实体详细信息 |
|
|
214
306
|
|
|
215
|
-
|
|
307
|
+
### 图层操作 (4)
|
|
216
308
|
|
|
217
|
-
|
|
309
|
+
| 工具 | 说明 |
|
|
310
|
+
|------|------|
|
|
311
|
+
| `create_layer` | 创建图层 |
|
|
312
|
+
| `delete_layer` | 删除图层 |
|
|
313
|
+
| `set_layer` | 设置图层属性(color/linetype/freeze/thaw/lock/unlock) |
|
|
314
|
+
| `set_current_layer` | 设置当前图层 |
|
|
218
315
|
|
|
219
|
-
|
|
220
|
-
{
|
|
221
|
-
"name": "eval_lisp_with_result",
|
|
222
|
-
"arguments": {
|
|
223
|
-
"code": "(sslength (ssget \"_X\"))"
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
```
|
|
316
|
+
### 块操作 (6)
|
|
227
317
|
|
|
228
|
-
|
|
318
|
+
| 工具 | 说明 |
|
|
319
|
+
|------|------|
|
|
320
|
+
| `create_block` | 创建块定义 |
|
|
321
|
+
| `insert_block` | 插入块参照 |
|
|
322
|
+
| `get_blocks` | 获取所有块定义 |
|
|
323
|
+
| `explode_block` | 炸开块参照 |
|
|
324
|
+
| `batch_get_block_attributes` | 批量获取块属性 |
|
|
325
|
+
| `batch_set_block_attributes` | 批量设置块属性 |
|
|
229
326
|
|
|
230
|
-
|
|
327
|
+
### 动态块与参数化 (6)
|
|
231
328
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
329
|
+
| 工具 | 说明 |
|
|
330
|
+
|------|------|
|
|
331
|
+
| `get_dynamic_block_properties` | 获取动态块所有属性 |
|
|
332
|
+
| `set_dynamic_block_property` | 设置动态块属性值 |
|
|
333
|
+
| `get_block_parameters` | 获取块参数值 |
|
|
334
|
+
| `set_block_parameter` | 设置块参数值 |
|
|
335
|
+
| `list_visibility_states` | 列出可见性状态 |
|
|
336
|
+
| `set_visibility_state` | 切换可见性状态 |
|
|
238
337
|
|
|
239
|
-
|
|
338
|
+
### 文件/DWG 操作 (5)
|
|
240
339
|
|
|
241
|
-
|
|
340
|
+
| 工具 | 说明 |
|
|
341
|
+
|------|------|
|
|
342
|
+
| `open_dwg` | 打开 DWG 文件 |
|
|
343
|
+
| `save_dwg` | 保存图形 |
|
|
344
|
+
| `export_pdf` | 导出 PDF |
|
|
345
|
+
| `export_dxf` | 导出 DXF |
|
|
346
|
+
| `export_dwf` | 导出 DWF |
|
|
347
|
+
| `close_dwg` | 关闭图形 |
|
|
348
|
+
| `import_dxf` | 导入 DXF 文件 |
|
|
349
|
+
| `import_dgn` | 导入 DGN 文件 |
|
|
350
|
+
| `export_dgn` | 导出 DGN 文件 |
|
|
351
|
+
|
|
352
|
+
### 标注与填充 (7)
|
|
353
|
+
|
|
354
|
+
| 工具 | 说明 |
|
|
355
|
+
|------|------|
|
|
356
|
+
| `create_dimension` | 创建标注(ALIGNED/LINEAR/ORDINATE/RADIAL/DIAMETER/ANGULAR) |
|
|
357
|
+
| `get_dimension` | 获取标注值 |
|
|
358
|
+
| `create_hatch` | 创建图案填充 |
|
|
359
|
+
| `set_hatch` | 设置填充属性 |
|
|
360
|
+
| `get_block_attributes` | 获取块属性值 |
|
|
361
|
+
| `set_block_attribute` | 设置块属性值 |
|
|
362
|
+
| `dimension_style` | 创建和管理标注样式 |
|
|
363
|
+
|
|
364
|
+
### 样式管理 (11)
|
|
242
365
|
|
|
243
|
-
|
|
366
|
+
| 工具 | 说明 |
|
|
367
|
+
|------|------|
|
|
368
|
+
| `create_dimension_style` | 创建标注样式 |
|
|
369
|
+
| `set_dimstyle_var` | 设置标注样式变量 |
|
|
370
|
+
| `list_dimension_styles` | 列出所有标注样式 |
|
|
371
|
+
| `create_text_style` | 创建文字样式 |
|
|
372
|
+
| `list_text_styles` | 列出所有文字样式 |
|
|
373
|
+
| `create_linetype` | 创建线型 |
|
|
374
|
+
| `load_linetype` | 加载线型文件 |
|
|
375
|
+
| `list_linetypes` | 列出所有线型 |
|
|
376
|
+
| `create_mleader_style` | 创建多重引线样式 |
|
|
377
|
+
| `set_mleader_style_prop` | 设置多重引线样式属性 |
|
|
378
|
+
| `list_mleader_styles` | 列出多重引线样式 |
|
|
379
|
+
|
|
380
|
+
### 视图与缩放 (5)
|
|
381
|
+
|
|
382
|
+
| 工具 | 说明 |
|
|
383
|
+
|------|------|
|
|
384
|
+
| `zoom_extents` | 缩放到图形范围 |
|
|
385
|
+
| `zoom_window` | 缩放到窗口 |
|
|
386
|
+
| `create_named_view` | 创建命名视图 |
|
|
387
|
+
| `restore_named_view` | 恢复命名视图 |
|
|
388
|
+
| `list_named_views` | 列出所有命名视图 |
|
|
244
389
|
|
|
245
|
-
|
|
246
|
-
|---------|------|------|
|
|
247
|
-
| `connect_cad` | 连接到 CAD | `platform`: AutoCAD/ZWCAD/GStarCAD/BricsCAD |
|
|
248
|
-
| `get_cad_info` | 获取 CAD 信息 | 无 |
|
|
249
|
-
| `bring_to_front` | 切换 CAD 到前台 | 无 |
|
|
250
|
-
| `new_document` | 新建空白文档 | 无 |
|
|
251
|
-
| `get_system_status` | 获取系统诊断信息 | 无 |
|
|
390
|
+
### UCS 与布局 (11)
|
|
252
391
|
|
|
253
|
-
|
|
392
|
+
| 工具 | 说明 |
|
|
393
|
+
|------|------|
|
|
394
|
+
| `create_ucs` | 创建 UCS |
|
|
395
|
+
| `set_ucs` | 切换到 UCS |
|
|
396
|
+
| `list_ucs` | 列出所有 UCS |
|
|
397
|
+
| `delete_ucs` | 删除 UCS |
|
|
398
|
+
| `get_current_ucs` | 获取当前 UCS 名称 |
|
|
399
|
+
| `create_layout` | 创建布局 |
|
|
400
|
+
| `set_layout` | 切换布局 |
|
|
401
|
+
| `list_layouts` | 列出所有布局 |
|
|
402
|
+
| `delete_layout` | 删除布局 |
|
|
403
|
+
| `get_current_layout` | 获取当前布局 |
|
|
404
|
+
| `rename_layout` | 重命名布局 |
|
|
405
|
+
|
|
406
|
+
### 查询与测量 (5)
|
|
407
|
+
|
|
408
|
+
| 工具 | 说明 |
|
|
409
|
+
|------|------|
|
|
410
|
+
| `measure_distance` | 测量两点距离 |
|
|
411
|
+
| `measure_area` | 测量多边形面积 |
|
|
412
|
+
| `get_3d_solid_info` | 获取 3D 实体信息 |
|
|
413
|
+
| `list_groups` | 列出所有组 |
|
|
414
|
+
| `get_group_entities` | 获取组内实体 |
|
|
415
|
+
|
|
416
|
+
### 组操作 (4)
|
|
417
|
+
|
|
418
|
+
| 工具 | 说明 |
|
|
419
|
+
|------|------|
|
|
420
|
+
| `create_group` | 创建组 |
|
|
421
|
+
| `delete_group` | 删除组 |
|
|
422
|
+
| `list_groups` | 列出所有组 |
|
|
423
|
+
| `get_group_entities` | 获取组内实体句柄 |
|
|
424
|
+
|
|
425
|
+
### 批量操作 (14)
|
|
426
|
+
|
|
427
|
+
| 工具 | 说明 |
|
|
428
|
+
|------|------|
|
|
429
|
+
| `batch_copy` | 批量复制实体到指定偏移 |
|
|
430
|
+
| `batch_move` | 批量移动到指定图层 |
|
|
431
|
+
| `batch_delete` | 批量删除实体 |
|
|
432
|
+
| `batch_rename` | 批量重命名实体 |
|
|
433
|
+
| `batch_set_color` | 批量设置颜色 |
|
|
434
|
+
| `batch_set_layer` | 批量设置图层 |
|
|
435
|
+
| `batch_set_linetype` | 批量设置线型 |
|
|
436
|
+
| `batch_explode` | 批量炸开 |
|
|
437
|
+
| `batch_mirror` | 批量镜像 |
|
|
438
|
+
| `batch_offset` | 批量偏移 |
|
|
439
|
+
| `batch_rotate` | 批量旋转 |
|
|
440
|
+
| `batch_scale` | 批量缩放 |
|
|
441
|
+
| `batch_match_properties` | 批量匹配属性(格式刷) |
|
|
442
|
+
| `batch_create_group` | 批量创建组 |
|
|
443
|
+
| `batch_add_to_group` | 批量添加到组 |
|
|
444
|
+
|
|
445
|
+
### 3D 建模 (20)
|
|
446
|
+
|
|
447
|
+
| 工具 | 说明 |
|
|
448
|
+
|------|------|
|
|
449
|
+
| `create_box` | 创建立方体 |
|
|
450
|
+
| `create_sphere` | 创建球体 |
|
|
451
|
+
| `create_cylinder` | 创建圆柱体 |
|
|
452
|
+
| `create_cone` | 创建圆锥体 |
|
|
453
|
+
| `create_torus` | 创建圆环体 |
|
|
454
|
+
| `create_wedge` | 创建楔体 |
|
|
455
|
+
| `create_3d_face` | 创建 3D 面 |
|
|
456
|
+
| `create_3d_polyline` | 创建 3D 多段线 |
|
|
457
|
+
| `create_mesh` | 创建网格 |
|
|
458
|
+
| `extrude_solid` | 拉伸成实体 |
|
|
459
|
+
| `revolve_solid` | 旋转成实体 |
|
|
460
|
+
| `create_region` | 创建面域 |
|
|
461
|
+
| `boolean_union` | 并集 |
|
|
462
|
+
| `boolean_subtract` | 差集 |
|
|
463
|
+
| `boolean_intersect` | 交集 |
|
|
464
|
+
| `slice_solid` | 剖切实体 |
|
|
465
|
+
| `create_loft_surface` | 创建放样曲面 |
|
|
466
|
+
| `thicken_surface` | 曲面加厚 |
|
|
467
|
+
| `offset_surface` | 曲面偏移 |
|
|
468
|
+
| `convert_to_cloud_line` | 转为修订云线 |
|
|
469
|
+
| `create_cloud_line` | 创建修订云线 |
|
|
470
|
+
|
|
471
|
+
### 约束 (4)
|
|
472
|
+
|
|
473
|
+
| 工具 | 说明 |
|
|
474
|
+
|------|------|
|
|
475
|
+
| `add_geom_constraint` | 添加几何约束(平行/垂直/相切/共线/同心/固定/对称/相等等) |
|
|
476
|
+
| `add_dim_constraint` | 添加标注约束(水平/垂直/对齐/半径/直径/角度) |
|
|
477
|
+
| `del_constraint` | 删除实体上所有约束 |
|
|
478
|
+
| `list_constraints` | 列出所有约束 |
|
|
479
|
+
|
|
480
|
+
### 扩展数据 Xdata (9)
|
|
481
|
+
|
|
482
|
+
| 工具 | 说明 |
|
|
483
|
+
|------|------|
|
|
484
|
+
| `get_xdata` | 获取实体扩展数据 |
|
|
485
|
+
| `set_xdata` | 设置实体扩展数据 |
|
|
486
|
+
| `delete_xdata` | 删除扩展数据 |
|
|
487
|
+
| `list_xdata_apps` | 列出所有注册的扩展数据应用名 |
|
|
488
|
+
| `get_all_entity_xdata` | 获取所有扩展数据 |
|
|
489
|
+
| `copy_xdata` | 复制扩展数据到另一实体 |
|
|
490
|
+
| `search_by_xdata` | 按扩展数据搜索实体 |
|
|
491
|
+
| `export_xdata_to_file` | 导出扩展数据到 JSON |
|
|
492
|
+
| `import_xdata_from_file` | 从 JSON 导入扩展数据 |
|
|
493
|
+
|
|
494
|
+
### PDF/底图 (14)
|
|
495
|
+
|
|
496
|
+
| 工具 | 说明 |
|
|
497
|
+
|------|------|
|
|
498
|
+
| `attach_pdf` | 附着 PDF 底图 |
|
|
499
|
+
| `detach_pdf` | 拆离 PDF 底图 |
|
|
500
|
+
| `reload_pdf` | 重载 PDF 底图 |
|
|
501
|
+
| `list_attached_pdfs` | 列出已附着的 PDF |
|
|
502
|
+
| `get_pdf_info` | 获取 PDF 底图信息 |
|
|
503
|
+
| `batch_attach_pdfs` | 批量附着 PDF |
|
|
504
|
+
| `create_dgn_underlay` | 附着 DGN 底图 |
|
|
505
|
+
| `create_dwf_underlay` | 附着 DWF 底图 |
|
|
506
|
+
| `create_hyperlink` | 创建超链接 |
|
|
507
|
+
| `remove_hyperlink` | 删除超链接 |
|
|
508
|
+
|
|
509
|
+
### 外部参照 Xref (14)
|
|
510
|
+
|
|
511
|
+
| 工具 | 说明 |
|
|
512
|
+
|------|------|
|
|
513
|
+
| `attach_xref` | 附着外部参照 |
|
|
514
|
+
| `detach_xref` | 拆离外部参照 |
|
|
515
|
+
| `reload_xref` | 重载外部参照 |
|
|
516
|
+
| `unload_xref` | 卸载外部参照 |
|
|
517
|
+
| `list_xrefs` | 列出所有外部参照 |
|
|
518
|
+
| `bind_xref` | 绑定外部参照 |
|
|
519
|
+
| `clip_xref` | 裁剪外部参照 |
|
|
520
|
+
| `path_xref` | 修改外部参照路径 |
|
|
521
|
+
| `xref_notifications` | 配置/查询外部参照变更通知 |
|
|
522
|
+
| `xref_compare` | 比较外部参照 |
|
|
523
|
+
| `xref_convert_to_block` | 外部参照转为块 |
|
|
524
|
+
| `xref_demote` | 嵌套参照降级 |
|
|
525
|
+
| `xref_path_relative` | 批量转换路径为相对路径 |
|
|
526
|
+
|
|
527
|
+
### 图纸集 (18)
|
|
528
|
+
|
|
529
|
+
| 工具 | 说明 |
|
|
530
|
+
|------|------|
|
|
531
|
+
| `create_sheet_set` | 创建图纸集 |
|
|
532
|
+
| `open_sheet_set` | 打开图纸集文件 |
|
|
533
|
+
| `list_sheet_sets` | 列出所有图纸集 |
|
|
534
|
+
| `add_sheet` | 添加图纸 |
|
|
535
|
+
| `list_sheets` | 列出图纸 |
|
|
536
|
+
| `delete_sheet` | 删除图纸 |
|
|
537
|
+
| `reorder_sheet` | 重新排序图纸 |
|
|
538
|
+
| `create_subset` | 创建子集 |
|
|
539
|
+
| `list_subsets` | 列出子集 |
|
|
540
|
+
| `set_sheet_property` | 设置图纸属性 |
|
|
541
|
+
| `get_sheet_set_property` | 获取图纸集属性 |
|
|
542
|
+
| `publish_sheet_set` | 发布图纸集 |
|
|
543
|
+
| `create_sheet_set_archive` | 归档图纸集 |
|
|
544
|
+
| `sheet_set_publish_options` | 发布选项配置 |
|
|
545
|
+
| `sheet_set_transmit` | eTransmit 打包 |
|
|
546
|
+
| `sheet_set_compare` | 比较图纸集 |
|
|
547
|
+
| `sheet_list_views` | 列出图纸视图 |
|
|
548
|
+
| `sheet_import_layouts` | 从 DWG 导入布局 |
|
|
549
|
+
|
|
550
|
+
### 打印 (8)
|
|
551
|
+
|
|
552
|
+
| 工具 | 说明 |
|
|
553
|
+
|------|------|
|
|
554
|
+
| `plot_to_pdf` | 打印到 PDF |
|
|
555
|
+
| `plot_to_printer` | 打印到打印机 |
|
|
556
|
+
| `save_pdf_layout` | 布局另存为 PDF |
|
|
557
|
+
| `publish_layouts` | 批量发布布局到 PDF |
|
|
558
|
+
| `batch_plot_wizard` | 批量打印向导 |
|
|
559
|
+
| `plot_device_management` | 打印设备管理 |
|
|
560
|
+
| `plot_log` | 查询打印历史 |
|
|
561
|
+
| `plot_from_file_list` | 从文件列表批量打印 |
|
|
562
|
+
|
|
563
|
+
### 管道 Pipeline (5)
|
|
564
|
+
|
|
565
|
+
| 工具 | 说明 |
|
|
566
|
+
|------|------|
|
|
567
|
+
| `pipeline_execute` | 执行管道链(多步工具顺序执行) |
|
|
568
|
+
| `pipeline_save` | 保存管道定义 |
|
|
569
|
+
| `pipeline_list` | 列出已保存管道 |
|
|
570
|
+
| `pipeline_run` | 运行已保存管道 |
|
|
571
|
+
| `pipeline_delete` | 删除管道 |
|
|
572
|
+
|
|
573
|
+
### 触发器 Watch (5)
|
|
574
|
+
|
|
575
|
+
| 工具 | 说明 |
|
|
576
|
+
|------|------|
|
|
577
|
+
| `watch_register` | 注册 CAD 变更触发器 |
|
|
578
|
+
| `watch_remove` | 移除触发器 |
|
|
579
|
+
| `watch_list` | 列出所有触发器 |
|
|
580
|
+
| `watch_wait` | 等待触发器触发 |
|
|
581
|
+
| `watch_create_and_wait` | 注册并等待(合并操作) |
|
|
582
|
+
|
|
583
|
+
### Webhook (4)
|
|
584
|
+
|
|
585
|
+
| 工具 | 说明 |
|
|
586
|
+
|------|------|
|
|
587
|
+
| `webhook_register` | 注册 webhook |
|
|
588
|
+
| `webhook_list` | 列出所有 webhook |
|
|
589
|
+
| `webhook_remove` | 移除 webhook |
|
|
590
|
+
| `webhook_log` | 获取 webhook 日志 |
|
|
591
|
+
|
|
592
|
+
### 流式读取 (4)
|
|
593
|
+
|
|
594
|
+
| 工具 | 说明 |
|
|
595
|
+
|------|------|
|
|
596
|
+
| `stream_entities` | 分页流式读取实体数据 |
|
|
597
|
+
| `stream_text` | 分页流式读取文字内容 |
|
|
598
|
+
| `stream_block_refs` | 分页流式读取块参照 |
|
|
599
|
+
| `combine_text` | 碎片文本按位置组合为完整段落 |
|
|
254
600
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
|
258
|
-
|
|
259
|
-
| `
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
|
275
|
-
|
|
276
|
-
| `
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
| `
|
|
284
|
-
| `
|
|
285
|
-
| `
|
|
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
|
-
|---------|------|------|
|
|
309
|
-
| `install_atlisp` | 安装 @lisp | 无 |
|
|
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`: 参数 |
|
|
601
|
+
### 外部数据 (4)
|
|
602
|
+
|
|
603
|
+
| 工具 | 说明 |
|
|
604
|
+
|------|------|
|
|
605
|
+
| `external_db_query` | 查询外部数据源 (CSV/JSON) |
|
|
606
|
+
| `import_external_data` | 从外部数据源导入实体到 CAD |
|
|
607
|
+
| `export_to_external` | 导出 CAD 实体到外部文件 |
|
|
608
|
+
| `list_data_sources` | 列出可用数据源 |
|
|
609
|
+
|
|
610
|
+
### 沙箱 (3)
|
|
611
|
+
|
|
612
|
+
| 工具 | 说明 |
|
|
613
|
+
|------|------|
|
|
614
|
+
| `sandbox_validate` | 验证 Lisp 代码安全规则 |
|
|
615
|
+
| `sandbox_allowlist_add` | 添加规则到会话白名单 |
|
|
616
|
+
| `sandbox_allowlist_clear` | 清除会话白名单 |
|
|
617
|
+
|
|
618
|
+
### 审计日志 (2)
|
|
619
|
+
|
|
620
|
+
| 工具 | 说明 |
|
|
621
|
+
|------|------|
|
|
622
|
+
| `audit_log_query` | 查询审计日志(支持分页和筛选) |
|
|
623
|
+
| `audit_log_stats` | 获取审计日志统计 |
|
|
624
|
+
|
|
625
|
+
### CAD 连接池 (4)
|
|
626
|
+
|
|
627
|
+
| 工具 | 说明 |
|
|
628
|
+
|------|------|
|
|
629
|
+
| `cad_pool_discover` | 发现所有 CAD 实例 |
|
|
630
|
+
| `cad_pool_switch` | 切换活动 CAD 实例 |
|
|
631
|
+
| `cad_pool_health` | 检查所有实例健康状态 |
|
|
632
|
+
| `cad_pool_stats` | 获取连接池统计 |
|
|
317
633
|
|
|
318
634
|
---
|
|
319
635
|
|
|
320
|
-
##
|
|
636
|
+
## MCP 资源
|
|
637
|
+
|
|
638
|
+
### 静态资源 (13)
|
|
321
639
|
|
|
322
640
|
| URI | 名称 | 说明 | 可订阅 |
|
|
323
641
|
|-----|------|------|--------|
|
|
324
642
|
| `atlisp://cad/info` | CAD Info | CAD 连接信息 | ✓ |
|
|
325
|
-
| `atlisp://dwg/layers` | Layers | 图层列表 | ✓ |
|
|
326
643
|
| `atlisp://dwg/entities` | Entities | 实体列表/统计 | ✓ |
|
|
327
|
-
| `atlisp://dwg/
|
|
644
|
+
| `atlisp://dwg/text-content` | Text Content | 文字内容与位置 | ✓ |
|
|
645
|
+
| `atlisp://dwg/text-combined` | Combined Text | 合并后的段落文本 | ✓ |
|
|
328
646
|
| `atlisp://dwg/name` | DWG Name | 当前文件名 | ✓ |
|
|
329
647
|
| `atlisp://dwg/path` | DWG Path | 文件完整路径 | ✓ |
|
|
648
|
+
| `atlisp://dwg/block-refs` | Block References | 块参照与属性 | ✓ |
|
|
649
|
+
| `atlisp://dwg/tbl` | Tables | CAD 表数据 | ✓ |
|
|
330
650
|
| `atlisp://cad/dwgs` | DWG List | 所有打开的 DWG | ✓ |
|
|
331
651
|
| `atlisp://packages` | Packages | 已安装包列表 | ✓ |
|
|
332
|
-
| `atlisp://platforms` | Platforms |
|
|
333
|
-
| `atlisp://standards/drafting` | Drafting
|
|
334
|
-
| `atlisp://standards/coding` | Coding
|
|
652
|
+
| `atlisp://platforms` | Platforms | 支持的平台 | ✗ |
|
|
653
|
+
| `atlisp://standards/drafting` | Drafting | CAD 制图规范 | ✗ |
|
|
654
|
+
| `atlisp://standards/coding` | Coding | @lisp 编码规范 | ✗ |
|
|
335
655
|
|
|
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 个)
|
|
656
|
+
### 资源模板
|
|
349
657
|
|
|
350
658
|
| URI 模板 | 说明 |
|
|
351
|
-
|
|
352
|
-
| `atlisp://dwg/entity/{handle}` |
|
|
353
|
-
| `atlisp://dwg/entities?type={type}` |
|
|
354
|
-
| `atlisp://dwg/
|
|
659
|
+
|----------|------|
|
|
660
|
+
| `atlisp://dwg/entity/{handle}` | 按句柄查实体详情 |
|
|
661
|
+
| `atlisp://dwg/entities?type={type}&layer={layer}&bbox={bbox}` | 过滤实体 |
|
|
662
|
+
| `atlisp://dwg/block-refs/{blockName}` | 按块名过滤块参照 |
|
|
663
|
+
| `atlisp://dwg/tbl/{table}` | 查询表(layer/block/textstyle/dimstyle/linetype/ucs/view/viewport/regapp/plotstyle) |
|
|
664
|
+
| `atlisp://dwg/text-content?bbox={bbox}&layer={layer}&offset={offset}&limit={limit}` | 分页文字 |
|
|
355
665
|
| `atlisp://packages?search={query}` | 搜索包 |
|
|
356
|
-
| `atlisp://dwg/texts?layer={layer}&offset={offset}&limit={limit}` | 分页获取文本 |
|
|
357
666
|
|
|
358
|
-
### MCP 根目录 (Roots)
|
|
667
|
+
### MCP 根目录 (Roots)
|
|
359
668
|
|
|
360
|
-
| URI |
|
|
361
|
-
|
|
362
|
-
| `file
|
|
363
|
-
| `file
|
|
669
|
+
| URI | 说明 |
|
|
670
|
+
|-----|------|
|
|
671
|
+
| `file://~/.atlisp` | @lisp 工作目录 |
|
|
672
|
+
| `file://~/.atlisp/projects` | 项目目录 |
|
|
364
673
|
|
|
365
|
-
|
|
674
|
+
---
|
|
366
675
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
|
370
|
-
|
|
371
|
-
| `
|
|
372
|
-
| `
|
|
373
|
-
| `
|
|
374
|
-
| `
|
|
375
|
-
| `
|
|
376
|
-
| `
|
|
377
|
-
| `
|
|
378
|
-
| `
|
|
379
|
-
|
|
380
|
-
|
|
676
|
+
## MCP Prompts (16)
|
|
677
|
+
|
|
678
|
+
| Prompt | 功能 | 参数 |
|
|
679
|
+
|--------|------|------|
|
|
680
|
+
| `excel-report` | Excel 报表导出 | visible, savePath |
|
|
681
|
+
| `geometry-calc` | 几何计算 | action, points |
|
|
682
|
+
| `generate-dimension` | 生成尺寸标注 | style |
|
|
683
|
+
| `analyze-drawing` | 分析当前图纸统计 | — |
|
|
684
|
+
| `coding-conventions` | AutoLISP 编码规范 | — |
|
|
685
|
+
| `string-process` | 字符串处理 | action, input |
|
|
686
|
+
| `json-exchange` | JSON 数据交换 | action, data |
|
|
687
|
+
| `color-convert` | 颜色转换 | action, value |
|
|
688
|
+
| `pickset-filter` | 选择集操作 | action, dxfType, layerName |
|
|
689
|
+
| `text-process` | 文本处理 | action, markdown |
|
|
690
|
+
| `curve-analysis` | 曲线分析 | action, distance |
|
|
691
|
+
| `manage-blocks` | 块操作 | action, blockName |
|
|
692
|
+
| `manage-layers` | 图层管理 | action, layers |
|
|
693
|
+
| `export-entities` | 导出实体统计 | format |
|
|
694
|
+
| `batch-draw-lines` | 批量画线段 | count, length |
|
|
695
|
+
| `draw-residential` | 农村民居平面图 | width, depth, rooms |
|
|
696
|
+
| `draw-floor-plan` | 建筑楼层平面图 | floor, scale |
|
|
381
697
|
|
|
382
|
-
|
|
383
|
-
{
|
|
384
|
-
"jsonrpc": "2.0",
|
|
385
|
-
"id": 1,
|
|
386
|
-
"method": "resources/read",
|
|
387
|
-
"params": {
|
|
388
|
-
"uri": "atlisp://dwg/entities"
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
```
|
|
698
|
+
---
|
|
392
699
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
700
|
+
## HTTP API 端点
|
|
701
|
+
|
|
702
|
+
| 方法 | 路径 | 说明 |
|
|
703
|
+
|------|------|------|
|
|
704
|
+
| `GET` | `/health` | 健康检查 |
|
|
705
|
+
| `GET` | `/metrics` | Prometheus 指标 |
|
|
706
|
+
| `POST` | `/mcp` | MCP JSON-RPC |
|
|
707
|
+
| `GET` | `/mcp` | MCP 信息 |
|
|
708
|
+
| `GET` | `/sse` | SSE 长连接端点 |
|
|
709
|
+
| `POST` | `/message` | SSE 消息发送 |
|
|
710
|
+
| `WS` | `/ws` | WebSocket 端点 |
|
|
711
|
+
| `POST` | `/config/reload` | 热重载配置 |
|
|
712
|
+
| `GET` | `/rate-limit/status` | 速率限制状态 |
|
|
713
|
+
| `POST` | `/rate-limit/reset` | 重置速率限制 |
|
|
714
|
+
| `GET` | `/api/docs` | API 文档页面 |
|
|
715
|
+
| `GET` | `/debug` | 调试面板 |
|
|
716
|
+
| `GET` | `/playground` | 工具游乐场 |
|
|
403
717
|
|
|
404
718
|
---
|
|
405
719
|
|
|
406
|
-
##
|
|
720
|
+
## 环境变量
|
|
407
721
|
|
|
408
722
|
| 变量 | 默认值 | 说明 |
|
|
409
723
|
|------|--------|------|
|
|
410
|
-
| `
|
|
411
|
-
| `
|
|
412
|
-
| `
|
|
413
|
-
| `
|
|
414
|
-
| `
|
|
415
|
-
| `
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
724
|
+
| `PORT` | `8110` | HTTP 端口 |
|
|
725
|
+
| `HOST` | `0.0.0.0` | HTTP 监听地址 |
|
|
726
|
+
| `TRANSPORT` | `http` | 传输模式: http/stdio/ws |
|
|
727
|
+
| `MCP_API_KEY` | — | API Key 认证 |
|
|
728
|
+
| `ENABLE_SSE` | `true` | 启用 SSE |
|
|
729
|
+
| `MESSAGE_TIMEOUT` | `60000` | 消息超时 (ms) |
|
|
730
|
+
| `HEARTBEAT_INTERVAL` | `30000` | 心跳间隔 (ms) |
|
|
731
|
+
| `BUSY_RETRIES` | `10` | CAD 忙重试次数 |
|
|
732
|
+
| `BUSY_DELAY` | `500` | 重试延迟 (ms) |
|
|
733
|
+
| `ENABLE_CORS` | `true` | 启用 CORS |
|
|
734
|
+
| `CORS_ORIGIN` | `*` | CORS 源 |
|
|
735
|
+
| `RATE_LIMIT_WINDOW` | `60000` | 速率限制窗口 (ms) |
|
|
736
|
+
| `RATE_LIMIT_MAX` | `100` | 窗口内最大请求数 |
|
|
737
|
+
| `RESOURCE_CACHE_TTL` | `5000` | 资源缓存 TTL (ms) |
|
|
738
|
+
| `FUNCTION_LIB_CACHE_TTL` | `300000` | 函数库缓存 TTL (ms) |
|
|
739
|
+
| `DEBUG` | `false` | 调试模式 |
|
|
740
|
+
| `DEBUG_FILE` | — | 调试日志文件路径 |
|
|
741
|
+
| `FUNCTION_LIB_URL` | `http://s3.atlisp.cn/json/functions.json` | 函数库 URL |
|
|
742
|
+
| `CONFIG_FILE` | `~/.atlisp/atlisp.config.json` | 配置文件路径 |
|
|
743
|
+
| `METRICS_ENABLED` | `true` | 启用 /metrics 端点 |
|
|
744
|
+
| `REQUEST_LOG_ENABLED` | `true` | 启用请求日志 |
|
|
745
|
+
| `SSL_KEY_PATH` | — | SSL 私钥文件 |
|
|
746
|
+
| `SSL_CERT_PATH` | — | SSL 证书文件 |
|
|
747
|
+
| `LLM_API_KEY` | — | LLM API Key (sampling) |
|
|
748
|
+
| `LLM_API_URL` | `https://api.openai.com/v1/chat/completions` | LLM API URL |
|
|
749
|
+
| `LLM_MODEL` | `gpt-4o-mini` | LLM 模型 |
|
|
750
|
+
| `LLM_MAX_TOKENS` | `4096` | LLM 最大 tokens |
|
|
751
|
+
| `LLM_TEMPERATURE` | `0.7` | LLM 温度 |
|
|
752
|
+
| `API_KEY_RATE_LIMIT` | `1000` | API Key 速率限制 |
|
|
420
753
|
|
|
421
|
-
|
|
754
|
+
---
|
|
422
755
|
|
|
423
|
-
|
|
424
|
-
# Windows PowerShell
|
|
425
|
-
$env:ENABLE_SSE="false"; atlisp-mcp
|
|
756
|
+
## 命令行参数
|
|
426
757
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
758
|
+
| 参数 | 说明 |
|
|
759
|
+
|------|------|
|
|
760
|
+
| `--port <number>` | HTTP 端口 |
|
|
761
|
+
| `--host <address>` | HTTP 主机地址 |
|
|
762
|
+
| `--transport <mode>` | 传输模式 (http/stdio/ws) |
|
|
763
|
+
| `--stdio` | 等价于 `--transport stdio` |
|
|
764
|
+
| `--ws` | 等价于 `--transport ws` |
|
|
765
|
+
| `--config <path>` | 配置文件路径 |
|
|
766
|
+
| `--ssl-key <path>` | SSL 私钥文件 |
|
|
767
|
+
| `--ssl-cert <path>` | SSL 证书文件 |
|
|
430
768
|
|
|
431
|
-
|
|
769
|
+
---
|
|
432
770
|
|
|
433
|
-
|
|
434
|
-
|------|------|------|
|
|
435
|
-
| `/sse` | GET | 建立 SSE 连接,返回消息端点 `/message` |
|
|
436
|
-
| `/mcp/sse` | GET | 同上 |
|
|
437
|
-
| `/message` | POST | 发送 JSON-RPC 请求,响应通过 SSE 推送 |
|
|
771
|
+
## 配置文件
|
|
438
772
|
|
|
439
|
-
|
|
773
|
+
配置文件位于 `~/.atlisp/atlisp.config.json`,支持以下字段:
|
|
440
774
|
|
|
775
|
+
```json
|
|
776
|
+
{
|
|
777
|
+
"port": 8110,
|
|
778
|
+
"host": "0.0.0.0",
|
|
779
|
+
"transport": "http",
|
|
780
|
+
"apiKey": "your-api-key",
|
|
781
|
+
"enableSse": true,
|
|
782
|
+
"messageTimeout": 60000,
|
|
783
|
+
"heartbeatInterval": 30000,
|
|
784
|
+
"enableCors": true,
|
|
785
|
+
"corsOrigin": "*",
|
|
786
|
+
"rateLimitWindow": 60000,
|
|
787
|
+
"rateLimitMax": 100,
|
|
788
|
+
"debug": false,
|
|
789
|
+
"metricsEnabled": true,
|
|
790
|
+
"requestLogEnabled": true,
|
|
791
|
+
"maxPoolSize": 3,
|
|
792
|
+
"apiKeys": [
|
|
793
|
+
{ "key": "key1", "limit": 100, "name": "user1", "role": "admin" }
|
|
794
|
+
],
|
|
795
|
+
"sslKey": "/path/to/key.pem",
|
|
796
|
+
"sslCert": "/path/to/cert.pem",
|
|
797
|
+
"llmApiKey": "sk-xxx",
|
|
798
|
+
"llmApiUrl": "https://api.openai.com/v1/chat/completions",
|
|
799
|
+
"llmModel": "gpt-4o-mini",
|
|
800
|
+
"llmMaxTokens": 4096,
|
|
801
|
+
"llmTemperature": 0.7
|
|
802
|
+
}
|
|
441
803
|
```
|
|
442
|
-
1. 客户端 → GET /sse
|
|
443
|
-
Header: Accept: text/event-stream
|
|
444
|
-
|
|
445
|
-
2. 服务器 → 返回 SSE 流,包含:
|
|
446
|
-
event: endpoint
|
|
447
|
-
data: {"path": "/message"}
|
|
448
|
-
event: capabilities
|
|
449
|
-
data: {...}
|
|
450
|
-
|
|
451
|
-
3. 客户端 → POST /message
|
|
452
|
-
Header: mcp-session-id: <session-id>
|
|
453
|
-
Body: {"jsonrpc":"2.0","id":1,"method":"tools/call",...}
|
|
454
|
-
|
|
455
|
-
4. 服务器 → 通过 SSE 推送响应:
|
|
456
|
-
event: message
|
|
457
|
-
data: {"jsonrpc":"2.0","id":1,"result":{...}}
|
|
458
|
-
```
|
|
459
|
-
|
|
460
|
-
---
|
|
461
|
-
|
|
462
|
-
## 九、支持平台
|
|
463
804
|
|
|
464
|
-
|
|
465
|
-
- **ZWCAD** (扩展名: `.zelx`, `.vls`)
|
|
466
|
-
- **GStarCAD** (扩展名: `.des`)
|
|
467
|
-
- **BricsCAD** (扩展名: `.des`)
|
|
805
|
+
配置变更会自动热重载。
|
|
468
806
|
|
|
469
807
|
---
|
|
470
808
|
|
|
471
|
-
##
|
|
809
|
+
## 架构与开发
|
|
472
810
|
|
|
473
|
-
|
|
474
|
-
2. .NET 通过 COM 互操作连接 CAD 应用程序
|
|
475
|
-
3. 支持获取运行中的 CAD 或自动启动
|
|
476
|
-
4. 通过 `SendCommand` 向 CAD 发送 LISP 代码
|
|
477
|
-
5. 执行前自动检测 CAD 状态(IsQuiescent)
|
|
478
|
-
6. CAD 忙碌时自动等待(最多 10 次重试)
|
|
811
|
+
架构图、项目结构、开发指南请参见 [`DEV.md`](DEV.md)。
|
|
479
812
|
|
|
480
813
|
---
|
|
481
814
|
|
|
482
|
-
##
|
|
815
|
+
## 故障排除
|
|
483
816
|
|
|
484
817
|
| 问题 | 解决方案 |
|
|
485
818
|
|------|---------|
|
|
486
819
|
| 连接失败 | 确保 CAD 已启动并启用 COM 接口 |
|
|
487
|
-
| 工具调用超时 | CAD
|
|
488
|
-
| 中文乱码 | 使用 `vl-prin1-to-string` 处理 |
|
|
820
|
+
| 工具调用超时 | CAD 可能繁忙,稍后重试;增大 `MESSAGE_TIMEOUT` |
|
|
821
|
+
| 中文乱码 | 使用 `encoding: gbk` 参数或用 `vl-prin1-to-string` 处理 |
|
|
489
822
|
| 括号错误 | MCP Server 会自动检查并提示 |
|
|
823
|
+
| CAD 未自动启动 | 检查 COM 权限,以管理员身份运行 |
|
|
824
|
+
| 端口被占用 | 使用 `--port` 指定其他端口 |
|
|
825
|
+
| 全局命令找不到 | 检查 npm 全局安装路径是否在 PATH 中 |
|
|
490
826
|
|
|
491
827
|
---
|
|
492
828
|
|
|
493
829
|
## 许可证
|
|
494
830
|
|
|
495
|
-
ISC
|
|
831
|
+
ISC
|