dg-lab-mcp-sse-server 1.0.3

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 +179 -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 +3165 -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 +3163 -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 +259 -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 +63 -0
package/README.md ADDED
@@ -0,0 +1,179 @@
1
+ # DG-LAB MCP SSE 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
+ ```bash
17
+ # 全局安装
18
+ npm install -g dg-lab-mcp-sse-server
19
+
20
+ # 或使用 npx 直接运行
21
+ npx dg-lab-mcp-sse-server
22
+ ```
23
+
24
+ ## 快速开始
25
+
26
+ ### 直接运行
27
+
28
+ ```bash
29
+ # 使用默认配置
30
+ npx dg-lab-mcp-sse-server
31
+
32
+ # 设置公网 IP
33
+ PUBLIC_IP=1.2.3.4 npx dg-lab-mcp-sse-server
34
+
35
+ # 设置端口
36
+ PORT=8080 npx dg-lab-mcp-sse-server
37
+ ```
38
+
39
+ ### 配置 MCP 客户端
40
+
41
+ 在 Claude Desktop 或其他 MCP 客户端的配置文件中添加:
42
+
43
+ ```json
44
+ {
45
+ "mcpServers": {
46
+ "dg-lab": {
47
+ "command": "npx",
48
+ "args": ["dg-lab-mcp-sse-server"],
49
+ "env": {
50
+ "PUBLIC_IP": "你的公网IP"
51
+ }
52
+ }
53
+ }
54
+ }
55
+ ```
56
+
57
+ **Windows 配置文件位置**: `%APPDATA%\Claude\claude_desktop_config.json`
58
+
59
+ **macOS 配置文件位置**: `~/Library/Application Support/Claude/claude_desktop_config.json`
60
+
61
+ ### 完整配置示例
62
+
63
+ ```json
64
+ {
65
+ "mcpServers": {
66
+ "dg-lab": {
67
+ "command": "npx",
68
+ "args": ["dg-lab-mcp-sse-server"],
69
+ "env": {
70
+ "PUBLIC_IP": "your.public.ip",
71
+ "PORT": "3323",
72
+ "CONNECTION_TIMEOUT_MINUTES": "10"
73
+ }
74
+ }
75
+ }
76
+ }
77
+ ```
78
+
79
+ ## 环境变量
80
+
81
+ 通过环境变量配置服务器:
82
+
83
+ | 变量 | 默认值 | 说明 |
84
+ |------|--------|------|
85
+ | `PORT` | 3323 | 服务端口 (HTTP/WebSocket 共享) |
86
+ | `PUBLIC_IP` | (自动检测) | 公网 IP 地址,用于生成二维码。留空则使用本地 IP |
87
+ | `SSE_PATH` | /sse | SSE 端点路径 |
88
+ | `POST_PATH` | /message | POST 端点路径 |
89
+ | `CONNECTION_TIMEOUT_MINUTES` | 5 | 未绑定设备的超时时间(分钟) |
90
+ | `HEARTBEAT_INTERVAL` | 30000 | WebSocket 心跳间隔 (ms) |
91
+ | `STALE_DEVICE_TIMEOUT` | 3600000 | 设备活跃超时 (ms),默认 1 小时 |
92
+ | `WAVEFORM_STORE_PATH` | ./data/waveforms.json | 波形存储路径 |
93
+
94
+ ## 使用流程
95
+
96
+ 1. **创建设备**: 调用 `dg_create_device` 获取二维码内容
97
+ 2. **扫码绑定**: 用户使用 DG-LAB APP 扫描二维码
98
+ 3. **检查状态**: 调用 `dg_get_device_status` 确认 `boundToApp: true`
99
+ 4. **控制设备**: 使用强度控制或波形控制工具
100
+
101
+ ## 可用工具 (16 个)
102
+
103
+ ### 设备管理
104
+ | 工具 | 说明 |
105
+ |------|------|
106
+ | `dg_create_device` | 创建新设备会话,返回二维码内容 |
107
+ | `dg_list_devices` | 列出所有设备及状态 |
108
+ | `dg_get_device_status` | 获取指定设备的详细状态 |
109
+ | `dg_delete_device` | 删除设备会话 |
110
+
111
+ ### 强度控制
112
+ | 工具 | 说明 |
113
+ |------|------|
114
+ | `dg_set_strength` | 设置 A/B 通道强度 (0-200) |
115
+ | `dg_adjust_strength` | 增量调整强度 |
116
+ | `dg_get_strength` | 获取当前强度值 |
117
+
118
+ ### 波形控制
119
+ | 工具 | 说明 |
120
+ |------|------|
121
+ | `dg_send_waveform` | 发送单次波形 |
122
+ | `dg_start_continuous_playback` | 开始持续播放波形 |
123
+ | `dg_stop_continuous_playback` | 停止持续播放 |
124
+ | `dg_get_playback_status` | 获取播放状态 |
125
+
126
+ ### 波形管理
127
+ | 工具 | 说明 |
128
+ |------|------|
129
+ | `dg_parse_waveform` | 解析 DungeonLab+pulse 格式波形并保存 |
130
+ | `dg_list_waveforms` | 列出所有已保存的波形 |
131
+ | `dg_get_waveform` | 获取波形详情和 hexWaveforms |
132
+ | `dg_delete_waveform` | 删除已保存的波形 |
133
+
134
+ ## 开发
135
+
136
+ ### 从源码运行
137
+
138
+ ```bash
139
+ # 克隆仓库
140
+ git clone https://github.com/admilkjs/sse-dg-lab.git
141
+ cd sse-dg-lab/dg-lab-mcp-server
142
+
143
+ # 安装依赖
144
+ bun install
145
+
146
+ # 启动开发服务器
147
+ bun run dev
148
+
149
+ # 运行测试
150
+ bun test
151
+ ```
152
+
153
+ ### 项目结构
154
+
155
+ ```
156
+ src/
157
+ ├── index.ts # 入口文件
158
+ ├── cli.ts # CLI 入口 (npx)
159
+ ├── app.ts # 应用初始化
160
+ ├── config.ts # 配置管理
161
+ ├── server.ts # HTTP/SSE 服务器
162
+ ├── ws-server.ts # WebSocket 服务器
163
+ ├── session-manager.ts # 会话管理
164
+ ├── tool-manager.ts # MCP 工具管理
165
+ ├── waveform-parser.ts # 波形解析
166
+ ├── waveform-storage.ts # 波形存储
167
+ └── tools/
168
+ ├── device-tools.ts # 设备管理工具
169
+ ├── control-tools.ts # 设备控制工具
170
+ └── waveform-tools.ts # 波形管理工具
171
+ ```
172
+
173
+ ## 许可证
174
+
175
+ MIT
176
+
177
+ ## 声明
178
+
179
+ 本项目基于 [DG-LAB 开源协议](https://github.com/DG-LAB-OPENSOURCE/DG-LAB-OPENSOURCE) 实现设备通信功能。DG-LAB 开源协议仅供爱好者自由使用设备,未经授权请勿将相关内容用于任何商业用途。
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"}