@atlisp/mcp 1.0.18 → 1.0.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/README.md +116 -0
- package/package.json +2 -1
- package/src/atlisp-mcp.js +290 -195
- package/src/cad-worker.js +11 -4
- package/src/cad.js +33 -26
- package/src/config.js +28 -0
- package/src/constants.js +2 -1
- package/src/errors.js +55 -0
- package/src/handlers/cad-handlers.js +2 -2
- package/src/handlers/function-handlers.js +25 -13
- package/src/handlers/prompt-handlers.js +268 -0
- package/src/handlers/resource-handlers.js +82 -35
- package/src/sse-session-manager.js +1 -3
- package/src/sse-session.js +125 -15
- package/src/subscription-manager.js +11 -0
package/README.md
CHANGED
|
@@ -113,6 +113,15 @@ curl http://localhost:8110/health
|
|
|
113
113
|
|
|
114
114
|
返回 `{"status":"ok","cad":"connected"}` 表示服务正常。
|
|
115
115
|
|
|
116
|
+
### HTTP 端点
|
|
117
|
+
|
|
118
|
+
| 端点 | 方法 | 说明 |
|
|
119
|
+
|------|------|------|
|
|
120
|
+
| `/health` | GET | 健康检查 |
|
|
121
|
+
| `/sse` | GET | SSE 长连接端点(需 ENABLE_SSE=true) |
|
|
122
|
+
| `/mcp/sse` | GET/POST | SSE MCP 端点(需 ENABLE_SSE=true) |
|
|
123
|
+
| `/mcp` | POST | MCP JSON-RPC 端点(主要接口) |
|
|
124
|
+
|
|
116
125
|
---
|
|
117
126
|
|
|
118
127
|
## 四、连接 CAD
|
|
@@ -246,6 +255,69 @@ curl http://localhost:8110/health
|
|
|
246
255
|
| `get_function_usage` | 获取函数用法 | `name`: 函数名 |
|
|
247
256
|
| `list_functions` | 列出所有函数 | 无 |
|
|
248
257
|
|
|
258
|
+
### MCP 方法
|
|
259
|
+
|
|
260
|
+
| 方法 | 说明 |
|
|
261
|
+
|------|------|
|
|
262
|
+
| `initialize` | 初始化连接 |
|
|
263
|
+
| `tools/list` | 列出工具 |
|
|
264
|
+
| `tools/call` | 调用工具 |
|
|
265
|
+
| `resources/list` | 列出资源 |
|
|
266
|
+
| `resources/read` | 读取资源 |
|
|
267
|
+
| `resources/subscribe` | 订阅资源变更 |
|
|
268
|
+
| `resources/unsubscribe` | 取消订阅 |
|
|
269
|
+
|
|
270
|
+
### MCP 资源
|
|
271
|
+
|
|
272
|
+
| URI | 说明 |
|
|
273
|
+
|-----|------|
|
|
274
|
+
| `atlisp://cad/info` | CAD 连接信息(可订阅) |
|
|
275
|
+
| `atlisp://cad/layers` | 图层列表(可订阅) |
|
|
276
|
+
| `atlisp://cad/entities` | 实体统计(可订阅) |
|
|
277
|
+
| `atlisp://dwg/name` | 当前文件名(可订阅) |
|
|
278
|
+
| `atlisp://dwg/path` | 文件完整路径(可订阅) |
|
|
279
|
+
| `atlisp://packages` | 包列表(可订阅) |
|
|
280
|
+
| `atlisp://platforms` | 平台信息 |
|
|
281
|
+
|
|
282
|
+
### 资源访问方式
|
|
283
|
+
|
|
284
|
+
使用 `resources/read` 方法:
|
|
285
|
+
|
|
286
|
+
```json
|
|
287
|
+
{
|
|
288
|
+
"jsonrpc": "2.0",
|
|
289
|
+
"id": 1,
|
|
290
|
+
"method": "resources/read",
|
|
291
|
+
"params": {
|
|
292
|
+
"uri": "atlisp://cad/info"
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
返回示例:
|
|
298
|
+
```json
|
|
299
|
+
{
|
|
300
|
+
"contents": [{
|
|
301
|
+
"uri": "atlisp://cad/info",
|
|
302
|
+
"mimeType": "application/json",
|
|
303
|
+
"text": "{\"connected\":true,\"platform\":\"AutoCAD\",\"version\":\"24.1\",\"busy\":false}"
|
|
304
|
+
}]
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
**带参数的资源:**
|
|
309
|
+
|
|
310
|
+
```json
|
|
311
|
+
// 查询特定图层
|
|
312
|
+
{ "uri": "atlisp://cad/layers?name=0" }
|
|
313
|
+
|
|
314
|
+
// 查询特定实体类型
|
|
315
|
+
{ "uri": "atlisp://cad/entities?type=LINE" }
|
|
316
|
+
|
|
317
|
+
// 过滤包列表
|
|
318
|
+
{ "uri": "atlisp://packages?name=base" }
|
|
319
|
+
```
|
|
320
|
+
|
|
249
321
|
---
|
|
250
322
|
|
|
251
323
|
## 七、环境变量
|
|
@@ -257,6 +329,50 @@ curl http://localhost:8110/health
|
|
|
257
329
|
| `HOST` | `0.0.0.0` | HTTP 模式监听地址 |
|
|
258
330
|
| `MESSAGE_TIMEOUT` | `60000` | 消息超时(毫秒) |
|
|
259
331
|
| `MCP_API_KEY` | (无) | API Key 认证(可选) |
|
|
332
|
+
| `ENABLE_SSE` | `true` | 启用 SSE 模式(默认启用) |
|
|
333
|
+
|
|
334
|
+
### 启用 SSE 模式
|
|
335
|
+
|
|
336
|
+
SSE (Server-Sent Events) 模式默认启用,提供长连接推送能力,适合需要实时响应的场景。
|
|
337
|
+
|
|
338
|
+
**禁用 SSE:**
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
# Windows PowerShell
|
|
342
|
+
$env:ENABLE_SSE="false"; atlisp-mcp
|
|
343
|
+
|
|
344
|
+
# 或命令行
|
|
345
|
+
ENABLE_SSE=false atlisp-mcp
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
**SSE 端点:**
|
|
349
|
+
|
|
350
|
+
| 端点 | 方法 | 说明 |
|
|
351
|
+
|------|------|------|
|
|
352
|
+
| `/sse` | GET | 建立 SSE 连接,返回消息端点 `/message` |
|
|
353
|
+
| `/mcp/sse` | GET | 同上 |
|
|
354
|
+
| `/message` | POST | 发送 JSON-RPC 请求,响应通过 SSE 推送 |
|
|
355
|
+
|
|
356
|
+
**SSE 连接流程:**
|
|
357
|
+
|
|
358
|
+
```
|
|
359
|
+
1. 客户端 → GET /sse
|
|
360
|
+
Header: Accept: text/event-stream
|
|
361
|
+
|
|
362
|
+
2. 服务器 → 返回 SSE 流,包含:
|
|
363
|
+
event: endpoint
|
|
364
|
+
data: {"path": "/message"}
|
|
365
|
+
event: capabilities
|
|
366
|
+
data: {...}
|
|
367
|
+
|
|
368
|
+
3. 客户端 → POST /message
|
|
369
|
+
Header: mcp-session-id: <session-id>
|
|
370
|
+
Body: {"jsonrpc":"2.0","id":1,"method":"tools/call",...}
|
|
371
|
+
|
|
372
|
+
4. 服务器 → 通过 SSE 推送响应:
|
|
373
|
+
event: message
|
|
374
|
+
data: {"jsonrpc":"2.0","id":1,"result":{...}}
|
|
375
|
+
```
|
|
260
376
|
|
|
261
377
|
---
|
|
262
378
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlisp/mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.20",
|
|
4
4
|
"description": "MCP Server for @lisp on CAD",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
41
41
|
"edge-js": "^25.0.1",
|
|
42
42
|
"express": "^5.2.1",
|
|
43
|
+
"express-rate-limit": "^7.1.0",
|
|
43
44
|
"iconv-lite": "^0.6.3",
|
|
44
45
|
"raw-body": "^3.0.0"
|
|
45
46
|
},
|