@atlisp/mcp 1.0.19 → 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 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,7 +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 认证(可选) |
260
- | `ENABLE_SSE` | `false` | 启用 SSE 模式(默认禁用) |
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
+ ```
261
376
 
262
377
  ---
263
378
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlisp/mcp",
3
- "version": "1.0.19",
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
  },