dg-lab-mcp-server 1.0.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 (44) hide show
  1. package/README.md +108 -0
  2. package/dist/app.d.ts +43 -0
  3. package/dist/app.d.ts.map +1 -0
  4. package/dist/cli.d.ts +7 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +3178 -0
  7. package/dist/cli.js.map +7 -0
  8. package/dist/config.d.ts +79 -0
  9. package/dist/config.d.ts.map +1 -0
  10. package/dist/errors.d.ts +132 -0
  11. package/dist/errors.d.ts.map +1 -0
  12. package/dist/index.d.ts +6 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +3176 -0
  15. package/dist/index.js.map +7 -0
  16. package/dist/jsonrpc-handler.d.ts +79 -0
  17. package/dist/jsonrpc-handler.d.ts.map +1 -0
  18. package/dist/mcp-protocol.d.ts +50 -0
  19. package/dist/mcp-protocol.d.ts.map +1 -0
  20. package/dist/server.d.ts +41 -0
  21. package/dist/server.d.ts.map +1 -0
  22. package/dist/session-manager.d.ts +209 -0
  23. package/dist/session-manager.d.ts.map +1 -0
  24. package/dist/sse-transport.d.ts +88 -0
  25. package/dist/sse-transport.d.ts.map +1 -0
  26. package/dist/tool-manager.d.ts +159 -0
  27. package/dist/tool-manager.d.ts.map +1 -0
  28. package/dist/tools/control-tools.d.ts +126 -0
  29. package/dist/tools/control-tools.d.ts.map +1 -0
  30. package/dist/tools/device-tools.d.ts +33 -0
  31. package/dist/tools/device-tools.d.ts.map +1 -0
  32. package/dist/tools/waveform-tools.d.ts +53 -0
  33. package/dist/tools/waveform-tools.d.ts.map +1 -0
  34. package/dist/types/jsonrpc.d.ts +157 -0
  35. package/dist/types/jsonrpc.d.ts.map +1 -0
  36. package/dist/waveform-parser.d.ts +247 -0
  37. package/dist/waveform-parser.d.ts.map +1 -0
  38. package/dist/waveform-storage.d.ts +101 -0
  39. package/dist/waveform-storage.d.ts.map +1 -0
  40. package/dist/ws-bridge.d.ts +107 -0
  41. package/dist/ws-bridge.d.ts.map +1 -0
  42. package/dist/ws-server.d.ts +174 -0
  43. package/dist/ws-server.d.ts.map +1 -0
  44. package/package.json +64 -0
package/README.md ADDED
@@ -0,0 +1,108 @@
1
+ # DG-LAB MCP Server
2
+
3
+ 基于 MCP (Model Context Protocol) 的 DG-LAB 设备控制服务器,支持通过 AI 助手控制 DG-LAB 设备。
4
+
5
+ ## 功能特性
6
+
7
+ - **MCP 协议支持**: 通过 SSE (Server-Sent Events) 实现 MCP 协议通信
8
+ - **内置 WebSocket 服务器**: 无需外部 WS 后端,直接与 DG-LAB APP 通信
9
+ - **单端口设计**: HTTP/SSE 和 WebSocket 共享同一端口
10
+ - **波形管理**: 支持解析、保存、发送 DG-LAB 波形数据
11
+ - **会话管理**: 支持设备别名、多设备管理
12
+
13
+ ## 快速开始
14
+
15
+ ### 安装依赖
16
+
17
+ ```bash
18
+ bun install
19
+ ```
20
+
21
+ ### 启动服务器
22
+
23
+ ```bash
24
+ bun run src/index.ts
25
+ ```
26
+
27
+ 服务器默认监听端口 `3323`,启动后会显示:
28
+ - SSE 端点: `http://localhost:3323/sse`
29
+ - POST 端点: `http://localhost:3323/message`
30
+ - WebSocket: `ws://localhost:3323`
31
+
32
+ ## 使用流程
33
+
34
+ 1. **创建连接**: 调用 `dg_connect` 获取二维码链接
35
+ 2. **扫码绑定**: 用户使用 DG-LAB APP 扫描二维码
36
+ 3. **检查状态**: 调用 `dg_get_status` 确认 `boundToApp: true`
37
+ 4. **控制设备**: 使用 `dg_set_strength` 或 `dg_send_waveform` 控制设备
38
+
39
+ ## 可用工具
40
+
41
+ ### 设备管理
42
+ | 工具 | 说明 |
43
+ |------|------|
44
+ | `dg_connect` | 创建新的设备连接,返回二维码链接 |
45
+ | `dg_list_devices` | 列出所有设备及状态 |
46
+ | `dg_get_status` | 获取指定设备的详细状态 |
47
+ | `dg_set_alias` | 为设备设置别名 |
48
+ | `dg_find_device` | 按别名查找设备 |
49
+ | `dg_disconnect` | 断开并删除设备连接 |
50
+
51
+ ### 设备控制
52
+ | 工具 | 说明 |
53
+ |------|------|
54
+ | `dg_set_strength` | 设置通道强度 (A/B, 0-200) |
55
+ | `dg_send_waveform` | 发送波形数据到设备 |
56
+ | `dg_clear_waveform` | 清空波形队列 |
57
+
58
+ ### 波形管理
59
+ | 工具 | 说明 |
60
+ |------|------|
61
+ | `dg_parse_waveform` | 解析并保存波形数据 |
62
+ | `dg_list_waveforms` | 列出所有已保存的波形 |
63
+ | `dg_get_waveform` | 获取波形的 hexWaveforms 数据 |
64
+ | `dg_delete_waveform` | 删除已保存的波形 |
65
+
66
+ ## 环境变量
67
+
68
+ 可以通过创建 `.env` 文件配置服务器(参考 `.env.example`):
69
+
70
+ | 变量 | 默认值 | 说明 |
71
+ |------|--------|------|
72
+ | `PORT` | 3323 | 服务端口 (HTTP/WebSocket 共享) |
73
+ | `PUBLIC_IP` | (空) | 公网IP地址,用于生成二维码。留空则自动检测本地IP。如果服务器部署在公网或需要远程访问,请填写公网IP |
74
+ | `SSE_PATH` | /sse | SSE 端点路径 |
75
+ | `POST_PATH` | /message | POST 端点路径 |
76
+ | `HEARTBEAT_INTERVAL` | 30000 | 心跳间隔 (ms) |
77
+ | `STALE_DEVICE_TIMEOUT` | 3600000 | 设备过期超时 (ms) |
78
+ | `SESSION_STORE_PATH` | ./data/sessions.json | 会话存储路径 |
79
+ | `WAVEFORM_STORE_PATH` | ./data/waveforms.json | 波形存储路径 |
80
+
81
+ ## 开发
82
+
83
+ ### 运行测试
84
+
85
+ ```bash
86
+ bun test
87
+ ```
88
+
89
+ ### 项目结构
90
+
91
+ ```
92
+ src/
93
+ ├── index.ts # 入口文件
94
+ ├── server.ts # HTTP 服务器
95
+ ├── ws-server.ts # WebSocket 服务器
96
+ ├── session-manager.ts # 会话管理
97
+ ├── tool-manager.ts # 工具管理
98
+ ├── waveform-parser.ts # 波形解析
99
+ ├── waveform-storage.ts # 波形存储
100
+ └── tools/
101
+ ├── device-tools.ts # 设备管理工具
102
+ ├── control-tools.ts # 设备控制工具
103
+ └── waveform-tools.ts # 波形管理工具
104
+ ```
105
+
106
+ ## 许可证
107
+
108
+ MIT
package/dist/app.d.ts ADDED
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @fileoverview 应用初始化模块
3
+ * @description 封装应用的初始化逻辑,包括依赖注入和模块组装
4
+ */
5
+ import type { ServerConfig } from "./config";
6
+ import { type MCPServer } from "./server";
7
+ import { ToolManager } from "./tool-manager";
8
+ import { SessionManager } from "./session-manager";
9
+ import { DGLabWSServer } from "./ws-server";
10
+ import { WaveformStorage } from "./waveform-storage";
11
+ /**
12
+ * 应用实例,包含所有核心组件的引用
13
+ */
14
+ export interface App {
15
+ config: ServerConfig;
16
+ server: MCPServer;
17
+ toolManager: ToolManager;
18
+ sessionManager: SessionManager;
19
+ wsServer: DGLabWSServer;
20
+ waveformStorage: WaveformStorage;
21
+ shutdown: () => Promise<void>;
22
+ }
23
+ /**
24
+ * 创建并初始化应用
25
+ *
26
+ * 这个函数负责:
27
+ * 1. 加载配置
28
+ * 2. 创建各个核心组件
29
+ * 3. 注册工具和协议处理器
30
+ * 4. 设置组件间的回调关系
31
+ *
32
+ * @returns 初始化完成的应用实例
33
+ */
34
+ export declare function createApp(): App;
35
+ /**
36
+ * 启动应用
37
+ *
38
+ * 启动 HTTP 服务器并附加 WebSocket 服务器。
39
+ *
40
+ * @param app - 应用实例
41
+ */
42
+ export declare function startApp(app: App): Promise<void>;
43
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAwB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,OAAO,EAAE,eAAe,EAAiB,MAAM,oBAAoB,CAAC;AAGpE;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,QAAQ,EAAE,aAAa,CAAC;IACxB,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,IAAI,GAAG,CA+C/B;AA4HD;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBtD"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @fileoverview DG-LAB MCP SSE 服务器 CLI 入口
4
+ * @description 用于 npx 启动的命令行入口
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;GAGG"}