@coffeerunhobby/mcp-ha-connect 1.0.0 → 1.2.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 (320) hide show
  1. package/CLAUDE.md +266 -0
  2. package/README.md +57 -9
  3. package/dist/index.js +20 -12
  4. package/dist/index.js.map +1 -1
  5. package/dist/omadaClient/auth.js +10 -1
  6. package/dist/omadaClient/auth.js.map +1 -1
  7. package/dist/omadaClient/client.d.ts +18 -1
  8. package/dist/omadaClient/client.js +27 -0
  9. package/dist/omadaClient/client.js.map +1 -1
  10. package/dist/omadaClient/index.d.ts +3 -1
  11. package/dist/omadaClient/index.js +7 -0
  12. package/dist/omadaClient/index.js.map +1 -1
  13. package/dist/omadaClient/request.d.ts +4 -0
  14. package/dist/omadaClient/request.js +6 -0
  15. package/dist/omadaClient/request.js.map +1 -1
  16. package/dist/server/common.js +10 -0
  17. package/dist/server/common.js.map +1 -1
  18. package/dist/server/instructions.d.ts +19 -0
  19. package/dist/server/instructions.js +69 -0
  20. package/dist/server/instructions.js.map +1 -0
  21. package/dist/tools/common.d.ts +35 -0
  22. package/dist/tools/common.js +28 -0
  23. package/dist/tools/common.js.map +1 -1
  24. package/dist/tools/homeassistant/getAllSensors.d.ts +1 -0
  25. package/dist/tools/homeassistant/getAllSensors.js +28 -5
  26. package/dist/tools/homeassistant/getAllSensors.js.map +1 -1
  27. package/dist/tools/homeassistant/getEntitiesByDomain.d.ts +1 -0
  28. package/dist/tools/homeassistant/getEntitiesByDomain.js +38 -6
  29. package/dist/tools/homeassistant/getEntitiesByDomain.js.map +1 -1
  30. package/dist/tools/homeassistant/getStates.d.ts +1 -0
  31. package/dist/tools/homeassistant/getStates.js +28 -5
  32. package/dist/tools/homeassistant/getStates.js.map +1 -1
  33. package/dist/tools/homeassistant/listEntities.d.ts +1 -0
  34. package/dist/tools/homeassistant/listEntities.js +22 -4
  35. package/dist/tools/homeassistant/listEntities.js.map +1 -1
  36. package/dist/tools/homeassistant/searchEntities.d.ts +1 -0
  37. package/dist/tools/homeassistant/searchEntities.js +38 -6
  38. package/dist/tools/homeassistant/searchEntities.js.map +1 -1
  39. package/dist/tools/omada/blockClient.d.ts +3 -0
  40. package/dist/tools/omada/blockClient.js +14 -0
  41. package/dist/tools/omada/blockClient.js.map +1 -0
  42. package/dist/tools/omada/index.js +6 -0
  43. package/dist/tools/omada/index.js.map +1 -1
  44. package/dist/tools/omada/unblockClient.d.ts +3 -0
  45. package/dist/tools/omada/unblockClient.js +14 -0
  46. package/dist/tools/omada/unblockClient.js.map +1 -0
  47. package/dist/types/homeassistant/index.d.ts +2 -1
  48. package/dist/types/homeassistant/index.js +1 -0
  49. package/dist/types/homeassistant/index.js.map +1 -1
  50. package/dist/types/homeassistant/states.d.ts +26 -0
  51. package/dist/types/homeassistant/states.js +13 -1
  52. package/dist/types/homeassistant/states.js.map +1 -1
  53. package/dist/types/omada/clientBlockStatus.d.ts +11 -0
  54. package/dist/types/omada/clientBlockStatus.js +2 -0
  55. package/dist/types/omada/clientBlockStatus.js.map +1 -0
  56. package/dist/types/omada/index.d.ts +1 -0
  57. package/dist/version.d.ts +1 -1
  58. package/dist/version.js +1 -1
  59. package/docker-compose.yml +3 -0
  60. package/docs/CHANGELOG.md +28 -0
  61. package/openapi.json +1 -1
  62. package/package.json +2 -1
  63. package/src/index.ts +19 -12
  64. package/src/omadaClient/auth.ts +10 -1
  65. package/src/omadaClient/client.ts +34 -0
  66. package/src/omadaClient/index.ts +10 -0
  67. package/src/omadaClient/request.ts +7 -0
  68. package/src/server/common.ts +18 -3
  69. package/src/server/instructions.ts +94 -0
  70. package/src/tools/common.ts +47 -0
  71. package/src/tools/homeassistant/getAllSensors.ts +30 -5
  72. package/src/tools/homeassistant/getEntitiesByDomain.ts +41 -6
  73. package/src/tools/homeassistant/getStates.ts +30 -5
  74. package/src/tools/homeassistant/listEntities.ts +25 -5
  75. package/src/tools/homeassistant/searchEntities.ts +41 -6
  76. package/src/tools/omada/blockClient.ts +26 -0
  77. package/src/tools/omada/index.ts +7 -0
  78. package/src/tools/omada/unblockClient.ts +26 -0
  79. package/src/types/homeassistant/index.ts +2 -1
  80. package/src/types/homeassistant/states.ts +37 -0
  81. package/src/types/omada/clientBlockStatus.ts +11 -0
  82. package/src/types/omada/index.ts +1 -0
  83. package/src/version.ts +1 -1
  84. package/tests/integration/homeassistant.test.ts +136 -0
  85. package/tests/integration/omada.test.ts +152 -0
  86. package/tests/integration/server.test.ts +148 -0
  87. package/tests/server/instructions.test.ts +150 -0
  88. package/tests/tools/homeassistant/handlers.test.ts +30 -19
  89. package/tests/tools/omada/handlers.test.ts +52 -0
  90. package/dist/autonomic/index.d.ts +0 -6
  91. package/dist/autonomic/index.js +0 -7
  92. package/dist/autonomic/index.js.map +0 -1
  93. package/dist/autonomic/priority.d.ts +0 -60
  94. package/dist/autonomic/priority.js +0 -97
  95. package/dist/autonomic/priority.js.map +0 -1
  96. package/dist/env.d.ts +0 -5
  97. package/dist/env.js +0 -13
  98. package/dist/env.js.map +0 -1
  99. package/dist/haClient/labels.d.ts +0 -64
  100. package/dist/haClient/labels.js +0 -177
  101. package/dist/haClient/labels.js.map +0 -1
  102. package/dist/omadaClient/http.d.ts +0 -88
  103. package/dist/omadaClient/http.js +0 -176
  104. package/dist/omadaClient/http.js.map +0 -1
  105. package/dist/organism/index.d.ts +0 -5
  106. package/dist/organism/index.js +0 -6
  107. package/dist/organism/index.js.map +0 -1
  108. package/dist/organism/priority.d.ts +0 -60
  109. package/dist/organism/priority.js +0 -97
  110. package/dist/organism/priority.js.map +0 -1
  111. package/dist/plugins/homeassistant.d.ts +0 -44
  112. package/dist/plugins/homeassistant.js +0 -101
  113. package/dist/plugins/homeassistant.js.map +0 -1
  114. package/dist/plugins/index.d.ts +0 -22
  115. package/dist/plugins/index.js +0 -91
  116. package/dist/plugins/index.js.map +0 -1
  117. package/dist/plugins/localai.d.ts +0 -48
  118. package/dist/plugins/localai.js +0 -111
  119. package/dist/plugins/localai.js.map +0 -1
  120. package/dist/plugins/omada.d.ts +0 -45
  121. package/dist/plugins/omada.js +0 -367
  122. package/dist/plugins/omada.js.map +0 -1
  123. package/dist/plugins/registry.d.ts +0 -93
  124. package/dist/plugins/registry.js +0 -196
  125. package/dist/plugins/registry.js.map +0 -1
  126. package/dist/plugins/types.d.ts +0 -101
  127. package/dist/plugins/types.js +0 -6
  128. package/dist/plugins/types.js.map +0 -1
  129. package/dist/security/audit.d.ts +0 -70
  130. package/dist/security/audit.js +0 -66
  131. package/dist/security/audit.js.map +0 -1
  132. package/dist/security/guardrails.d.ts +0 -66
  133. package/dist/security/guardrails.js +0 -263
  134. package/dist/security/guardrails.js.map +0 -1
  135. package/dist/security/guardrails.test.d.ts +0 -4
  136. package/dist/security/guardrails.test.js +0 -119
  137. package/dist/security/guardrails.test.js.map +0 -1
  138. package/dist/security/index.d.ts +0 -8
  139. package/dist/security/index.js +0 -17
  140. package/dist/security/index.js.map +0 -1
  141. package/dist/security/ip-blocklist.d.ts +0 -66
  142. package/dist/security/ip-blocklist.js +0 -283
  143. package/dist/security/ip-blocklist.js.map +0 -1
  144. package/dist/security/ip-blocklist.test.d.ts +0 -4
  145. package/dist/security/ip-blocklist.test.js +0 -173
  146. package/dist/security/ip-blocklist.test.js.map +0 -1
  147. package/dist/security/policy.d.ts +0 -287
  148. package/dist/security/policy.js +0 -316
  149. package/dist/security/policy.js.map +0 -1
  150. package/dist/security/policy.test.d.ts +0 -4
  151. package/dist/security/policy.test.js +0 -360
  152. package/dist/security/policy.test.js.map +0 -1
  153. package/dist/server/authConfig.d.ts +0 -100
  154. package/dist/server/authConfig.js +0 -206
  155. package/dist/server/authConfig.js.map +0 -1
  156. package/dist/server/jwt.d.ts +0 -35
  157. package/dist/server/jwt.js +0 -123
  158. package/dist/server/jwt.js.map +0 -1
  159. package/dist/server/sse.d.ts +0 -31
  160. package/dist/server/sse.js +0 -76
  161. package/dist/server/sse.js.map +0 -1
  162. package/dist/tools/allMetadata.d.ts +0 -47
  163. package/dist/tools/allMetadata.js +0 -373
  164. package/dist/tools/allMetadata.js.map +0 -1
  165. package/dist/tools/analyzeSensors.d.ts +0 -6
  166. package/dist/tools/analyzeSensors.js +0 -23
  167. package/dist/tools/analyzeSensors.js.map +0 -1
  168. package/dist/tools/automationControls.d.ts +0 -9
  169. package/dist/tools/automationControls.js +0 -41
  170. package/dist/tools/automationControls.js.map +0 -1
  171. package/dist/tools/calendar.d.ts +0 -7
  172. package/dist/tools/calendar.js +0 -82
  173. package/dist/tools/calendar.js.map +0 -1
  174. package/dist/tools/callService.d.ts +0 -6
  175. package/dist/tools/callService.js +0 -17
  176. package/dist/tools/callService.js.map +0 -1
  177. package/dist/tools/controlClimate.d.ts +0 -6
  178. package/dist/tools/controlClimate.js +0 -50
  179. package/dist/tools/controlClimate.js.map +0 -1
  180. package/dist/tools/controlCover.d.ts +0 -6
  181. package/dist/tools/controlCover.js +0 -33
  182. package/dist/tools/controlCover.js.map +0 -1
  183. package/dist/tools/controlFan.d.ts +0 -6
  184. package/dist/tools/controlFan.js +0 -34
  185. package/dist/tools/controlFan.js.map +0 -1
  186. package/dist/tools/controlLight.d.ts +0 -6
  187. package/dist/tools/controlLight.js +0 -28
  188. package/dist/tools/controlLight.js.map +0 -1
  189. package/dist/tools/controlMediaPlayer.d.ts +0 -6
  190. package/dist/tools/controlMediaPlayer.js +0 -35
  191. package/dist/tools/controlMediaPlayer.js.map +0 -1
  192. package/dist/tools/createAutomation.d.ts +0 -6
  193. package/dist/tools/createAutomation.js +0 -24
  194. package/dist/tools/createAutomation.js.map +0 -1
  195. package/dist/tools/deleteAutomation.d.ts +0 -6
  196. package/dist/tools/deleteAutomation.js +0 -14
  197. package/dist/tools/deleteAutomation.js.map +0 -1
  198. package/dist/tools/entityAction.d.ts +0 -6
  199. package/dist/tools/entityAction.js +0 -22
  200. package/dist/tools/entityAction.js.map +0 -1
  201. package/dist/tools/getAllSensors.d.ts +0 -6
  202. package/dist/tools/getAllSensors.js +0 -14
  203. package/dist/tools/getAllSensors.js.map +0 -1
  204. package/dist/tools/getAutomationTrace.d.ts +0 -6
  205. package/dist/tools/getAutomationTrace.js +0 -14
  206. package/dist/tools/getAutomationTrace.js.map +0 -1
  207. package/dist/tools/getDomainSummary.d.ts +0 -6
  208. package/dist/tools/getDomainSummary.js +0 -14
  209. package/dist/tools/getDomainSummary.js.map +0 -1
  210. package/dist/tools/getEntitiesByDomain.d.ts +0 -6
  211. package/dist/tools/getEntitiesByDomain.js +0 -14
  212. package/dist/tools/getEntitiesByDomain.js.map +0 -1
  213. package/dist/tools/getHistory.d.ts +0 -6
  214. package/dist/tools/getHistory.js +0 -14
  215. package/dist/tools/getHistory.js.map +0 -1
  216. package/dist/tools/getState.d.ts +0 -6
  217. package/dist/tools/getState.js +0 -17
  218. package/dist/tools/getState.js.map +0 -1
  219. package/dist/tools/getStates.d.ts +0 -6
  220. package/dist/tools/getStates.js +0 -14
  221. package/dist/tools/getStates.js.map +0 -1
  222. package/dist/tools/getVersion.d.ts +0 -6
  223. package/dist/tools/getVersion.js +0 -14
  224. package/dist/tools/getVersion.js.map +0 -1
  225. package/dist/tools/labels.d.ts +0 -12
  226. package/dist/tools/labels.js +0 -139
  227. package/dist/tools/labels.js.map +0 -1
  228. package/dist/tools/lazyLoader.d.ts +0 -50
  229. package/dist/tools/lazyLoader.js +0 -140
  230. package/dist/tools/lazyLoader.js.map +0 -1
  231. package/dist/tools/listAutomations.d.ts +0 -6
  232. package/dist/tools/listAutomations.js +0 -17
  233. package/dist/tools/listAutomations.js.map +0 -1
  234. package/dist/tools/listEntities.d.ts +0 -6
  235. package/dist/tools/listEntities.js +0 -14
  236. package/dist/tools/listEntities.js.map +0 -1
  237. package/dist/tools/listPersons.d.ts +0 -6
  238. package/dist/tools/listPersons.js +0 -36
  239. package/dist/tools/listPersons.js.map +0 -1
  240. package/dist/tools/localai/analyzeSensors.d.ts +0 -6
  241. package/dist/tools/localai/analyzeSensors.js +0 -23
  242. package/dist/tools/localai/analyzeSensors.js.map +0 -1
  243. package/dist/tools/localai/index.d.ts +0 -5
  244. package/dist/tools/localai/index.js +0 -6
  245. package/dist/tools/localai/index.js.map +0 -1
  246. package/dist/tools/metaTools.d.ts +0 -74
  247. package/dist/tools/metaTools.js +0 -347
  248. package/dist/tools/metaTools.js.map +0 -1
  249. package/dist/tools/omada/metadata.d.ts +0 -18
  250. package/dist/tools/omada/metadata.js +0 -336
  251. package/dist/tools/omada/metadata.js.map +0 -1
  252. package/dist/tools/registry.d.ts +0 -105
  253. package/dist/tools/registry.js +0 -79
  254. package/dist/tools/registry.js.map +0 -1
  255. package/dist/tools/sceneAndScript.d.ts +0 -7
  256. package/dist/tools/sceneAndScript.js +0 -32
  257. package/dist/tools/sceneAndScript.js.map +0 -1
  258. package/dist/tools/searchEntities.d.ts +0 -6
  259. package/dist/tools/searchEntities.js +0 -16
  260. package/dist/tools/searchEntities.js.map +0 -1
  261. package/dist/tools/sendNotification.d.ts +0 -8
  262. package/dist/tools/sendNotification.js +0 -160
  263. package/dist/tools/sendNotification.js.map +0 -1
  264. package/dist/tools/systemTools.d.ts +0 -8
  265. package/dist/tools/systemTools.js +0 -32
  266. package/dist/tools/systemTools.js.map +0 -1
  267. package/dist/tools/triggerAutomation.d.ts +0 -6
  268. package/dist/tools/triggerAutomation.js +0 -14
  269. package/dist/tools/triggerAutomation.js.map +0 -1
  270. package/dist/types/automations.d.ts +0 -38
  271. package/dist/types/automations.js +0 -5
  272. package/dist/types/automations.js.map +0 -1
  273. package/dist/types/calendars.d.ts +0 -24
  274. package/dist/types/calendars.js +0 -5
  275. package/dist/types/calendars.js.map +0 -1
  276. package/dist/types/config.d.ts +0 -10
  277. package/dist/types/config.js +0 -6
  278. package/dist/types/config.js.map +0 -1
  279. package/dist/types/entities.d.ts +0 -13
  280. package/dist/types/entities.js +0 -5
  281. package/dist/types/entities.js.map +0 -1
  282. package/dist/types/entity.d.ts +0 -119
  283. package/dist/types/entity.js +0 -2
  284. package/dist/types/entity.js.map +0 -1
  285. package/dist/types/errors.d.ts +0 -15
  286. package/dist/types/errors.js +0 -32
  287. package/dist/types/errors.js.map +0 -1
  288. package/dist/types/haConfig.d.ts +0 -7
  289. package/dist/types/haConfig.js +0 -2
  290. package/dist/types/haConfig.js.map +0 -1
  291. package/dist/types/history.d.ts +0 -12
  292. package/dist/types/history.js +0 -5
  293. package/dist/types/history.js.map +0 -1
  294. package/dist/types/labels.d.ts +0 -34
  295. package/dist/types/labels.js +0 -5
  296. package/dist/types/labels.js.map +0 -1
  297. package/dist/types/localai/index.d.ts +0 -5
  298. package/dist/types/localai/index.js +0 -6
  299. package/dist/types/localai/index.js.map +0 -1
  300. package/dist/types/localai/types.d.ts +0 -60
  301. package/dist/types/localai/types.js +0 -6
  302. package/dist/types/localai/types.js.map +0 -1
  303. package/dist/types/permissions.d.ts +0 -92
  304. package/dist/types/permissions.js +0 -136
  305. package/dist/types/permissions.js.map +0 -1
  306. package/dist/types/request.d.ts +0 -6
  307. package/dist/types/request.js +0 -2
  308. package/dist/types/request.js.map +0 -1
  309. package/dist/types/serviceCall.d.ts +0 -17
  310. package/dist/types/serviceCall.js +0 -2
  311. package/dist/types/serviceCall.js.map +0 -1
  312. package/dist/types/states.d.ts +0 -19
  313. package/dist/types/states.js +0 -5
  314. package/dist/types/states.js.map +0 -1
  315. package/dist/types/updates.d.ts +0 -24
  316. package/dist/types/updates.js +0 -5
  317. package/dist/types/updates.js.map +0 -1
  318. package/dist/utils/sanitize.d.ts +0 -25
  319. package/dist/utils/sanitize.js +0 -92
  320. package/dist/utils/sanitize.js.map +0 -1
package/CLAUDE.md ADDED
@@ -0,0 +1,266 @@
1
+ # mcp-ha-connect -- Claude Code Agent
2
+
3
+ ## Identity & Scope
4
+
5
+ This agent owns the **mcp-ha-connect MCP server** — a Model Context Protocol server for
6
+ Home Assistant, TP-Link Omada, and Local AI integration.
7
+
8
+ **Repo:** `github.com/coffeerunhobby/mcp-ha-connect`
9
+ **npm:** `@coffeerunhobby/mcp-ha-connect`
10
+ **Docker:** `ghcr.io/coffeerunhobby/mcp-ha-connect`
11
+ **Live endpoint:** Cloudflare domain → NAS Docker port 3000 (domain in NAS `.env`)
12
+
13
+ **Working directory:** `C:\workspace\mcp` — this is the canonical copy.
14
+ `W:\mcp-homeassistant` is a stale export at v0.8.0 — ignore it.
15
+
16
+ ---
17
+
18
+ ## Stack
19
+
20
+ - **Runtime:** Node.js 20+ (dev machine uses nvm)
21
+ - **Language:** TypeScript, compiled to `dist/` via `tsc`
22
+ - **MCP SDK:** `@modelcontextprotocol/sdk`
23
+ - **Transport:** Streamable HTTP (port 3000, path `/mcp`)
24
+ - **Auth:** JWT bearer tokens with RBAC permission system
25
+ - **Plugins:** Home Assistant · TP-Link Omada SDN · Local AI (Ollama/OpenAI-compat)
26
+ - **Tests:** Vitest (829 unit tests) + integration tests in `tests/integration/`
27
+ - **Container:** Alpine Node image, deployed on Synology NAS via Docker Compose
28
+
29
+ ---
30
+
31
+ ## Infrastructure
32
+
33
+ | Resource | Address | Notes |
34
+ |---|---|---|
35
+ | **MCP server** | `mcpserver.10.0.0.18.nip.io:3000` | NAS Docker container |
36
+ | **Home Assistant** | `homeassistant.10.0.0.19.nip.io:8123` | |
37
+ | **Omada controller** | `omada.10.0.0.18.nip.io:8043` | HTTPS, self-signed cert |
38
+ | **Ollama** | `ollama.10.0.0.17.nip.io:11434` | model `phi4:14b` |
39
+ | **n8n** | `n8n.10.0.0.18.nip.io:5678` | also exposed via Cloudflare |
40
+ | **NAS Docker path** | `/volume1/docker/mcp-ha-connect/` | compose.yaml + .env |
41
+ | **Cloudflare** | proxies public domain → NAS port 3000 | domain stored in `.env` |
42
+
43
+ ---
44
+
45
+ ## Secrets & Credentials
46
+
47
+ All secrets live in the NAS `.env` file and as **Windows User environment variables**.
48
+ Never store token values in source files, commit messages, or this file.
49
+
50
+ | Variable | Purpose |
51
+ |---|---|
52
+ | `NPM_MCP_HA_TOKEN` | npm Granular token for publishing |
53
+ | `GHCR_TOKEN` | GitHub PAT with `write:packages` scope |
54
+
55
+ ### Retrieve for use
56
+
57
+ ```powershell
58
+ $npmToken = [Environment]::GetEnvironmentVariable('NPM_MCP_HA_TOKEN', 'User')
59
+ $ghcrToken = [Environment]::GetEnvironmentVariable('GHCR_TOKEN', 'User')
60
+ ```
61
+
62
+ ### npm token requirements
63
+
64
+ The npm token must be **Granular type** with:
65
+ - Scope `@coffeerunhobby` → **Read and write** (scope-level, not per-package)
66
+ - **Bypass two-factor authentication** ✅ checked
67
+
68
+ Create at: npmjs.com → Access Tokens → Generate New Token → Granular Access Token
69
+
70
+ **Critical:** Never run `npm logout` — it revokes the token server-side and deletes it
71
+ from npmjs.com. If the token disappears from the web UI, that's why.
72
+
73
+ ---
74
+
75
+ ## Release Process
76
+
77
+ ### 1. Pre-flight
78
+
79
+ ```powershell
80
+ cd C:\workspace\mcp
81
+ npm test # all tests must pass
82
+ npm run build # must compile clean
83
+ npm run lint # ZERO errors AND zero warnings (see Code Quality policy)
84
+ ```
85
+
86
+ ### 2. Version bump
87
+
88
+ Update **both** files to the new version:
89
+ - `package.json` → `"version": "X.Y.Z"`
90
+ - `src/version.ts` → `export const VERSION = 'X.Y.Z';`
91
+
92
+ Update `docs/CHANGELOG.md` with the new version section.
93
+
94
+ ### 3. Commit & tag
95
+
96
+ ```powershell
97
+ git add .
98
+ git commit -m "vX.Y.Z - <short description>"
99
+ git tag vX.Y.Z
100
+ git push origin main
101
+ git push origin vX.Y.Z
102
+ ```
103
+
104
+ Create the GitHub Release at:
105
+ `https://github.com/coffeerunhobby/mcp-ha-connect/releases/new?tag=vX.Y.Z`
106
+
107
+ ### 4. npm publish
108
+
109
+ **Preferred: interactive login (browser).** Granular tokens keep getting revoked, so the
110
+ reliable path is an interactive `npm login`, which opens the browser for auth. The agent
111
+ **cannot** complete this alone — it MUST ask the user to run/confirm the browser login,
112
+ then publish together:
113
+
114
+ ```powershell
115
+ cd C:\workspace\mcp
116
+ npm login # opens browser — USER completes this, agent waits
117
+ npm whoami # must print the account name, not 403
118
+ npm publish --access public
119
+ ```
120
+
121
+ **Do NOT run `npm logout`** afterward — it revokes any granular token server-side.
122
+
123
+ > Agent rule: when a release reaches this step, STOP and ask the user to help with
124
+ > `npm login` and `npm publish --access public` (browser-based). Do not silently fall
125
+ > back to a stored token — if `npm whoami` returns 403, the token is dead.
126
+
127
+ ### 5. Docker build & push
128
+
129
+ Docker Desktop must be running.
130
+
131
+ ```powershell
132
+ $ghcrToken = [Environment]::GetEnvironmentVariable('GHCR_TOKEN', 'User')
133
+ $ghcrToken | docker login ghcr.io -u coffeerunhobby --password-stdin
134
+
135
+ cd C:\workspace\mcp
136
+ docker build --no-cache `
137
+ -t ghcr.io/coffeerunhobby/mcp-ha-connect:X.Y.Z `
138
+ -t ghcr.io/coffeerunhobby/mcp-ha-connect:latest .
139
+
140
+ docker push ghcr.io/coffeerunhobby/mcp-ha-connect:X.Y.Z
141
+ docker push ghcr.io/coffeerunhobby/mcp-ha-connect:latest
142
+ ```
143
+
144
+ Use `docker build`, not `docker buildx build --platform`. The NAS is amd64 and a plain
145
+ build on a Windows/amd64 host produces the correct image.
146
+
147
+ ### 6. Deploy to NAS
148
+
149
+ ```bash
150
+ cd /volume1/docker/mcp-ha-connect
151
+ docker compose pull && docker compose up -d
152
+ docker compose logs --tail=30
153
+ ```
154
+
155
+ ---
156
+
157
+ ## NAS `.env` — critical settings
158
+
159
+ ```env
160
+ MCP_HTTP_BIND_ADDR=0.0.0.0
161
+ ```
162
+
163
+ Must be `0.0.0.0`, not `127.0.0.1`. Docker port mapping requires the server to listen on
164
+ all interfaces inside the container — loopback only means Cloudflare gets a 502.
165
+
166
+ ```env
167
+ MCP_HTTP_ALLOWED_ORIGINS=...,<cloudflare-domain>,https://<cloudflare-domain>
168
+ ```
169
+
170
+ Must include both the bare hostname AND the `https://` form of the Cloudflare domain.
171
+ The MCP SDK checks the `host` header (no protocol) for DNS rebinding protection AND
172
+ the `origin` header (with protocol) for CORS.
173
+
174
+ ---
175
+
176
+ ## Omada SDN — known issues
177
+
178
+ **After upgrading the Omada controller version**, the `OMADA_OMADAC_ID` changes.
179
+ Error code `-44106` is returned for BOTH wrong credentials AND wrong `OMADA_OMADAC_ID` —
180
+ the API does not distinguish between them.
181
+
182
+ **To get the new Omada ID:**
183
+ Omada web UI → Settings → Open API → click the eye icon → copy **Omada ID**.
184
+
185
+ ```bash
186
+ sed -i 's/OMADA_OMADAC_ID=.*/OMADA_OMADAC_ID=<new-id>/' /volume1/docker/mcp-ha-connect/.env
187
+ docker compose up -d
188
+ ```
189
+
190
+ If Omada is unreachable or credentials are wrong, the server **gracefully degrades** —
191
+ Omada tools are disabled but HA and AI keep working. Set `OMADA_PLUGIN_ENABLED=false`
192
+ to disable Omada entirely while troubleshooting.
193
+
194
+ ---
195
+
196
+ ## Code Quality — fix every error and warning
197
+
198
+ **Always fix errors AND warnings. Never label something "pre-existing debt" and move on.**
199
+
200
+ - `npm run lint`, `npm run build`, and `npm test` must all be **completely clean** —
201
+ zero errors, zero warnings — before a change is considered done.
202
+ - If you touch a file (or a release surfaces lint output) and find existing errors or
203
+ warnings, they are now yours to fix. "It was already broken" is not an acceptable
204
+ reason to leave it.
205
+ - **Exception — release timing:** do not cut a patch release *solely* to clean up lint.
206
+ If quality issues are found right after a release has shipped, fold the fixes into the
207
+ **next feature's** commit rather than churning a `vX.Y.(Z+1)`. Outstanding cleanup of
208
+ this kind is tracked in `.claude/NEXT-SESSION.md` so it isn't forgotten.
209
+
210
+ > Currently outstanding: `Function`-type lint warnings in the test mock helpers
211
+ > (`tests/tools/**/handlers.test.ts`). Fix these as part of the next feature change —
212
+ > NOT as a standalone patch release.
213
+
214
+ ---
215
+
216
+ ## Development
217
+
218
+ ```powershell
219
+ cd C:\workspace\mcp
220
+ npm run dev # tsx watch with .env
221
+ npm test # vitest (excludes integration)
222
+ npm run test:watch # watch mode
223
+ npm run lint # eslint
224
+ npm run build # tsc compile to dist/
225
+ npm run generate:jwt # generate a test JWT token
226
+ ```
227
+
228
+ ### Integration tests (requires live .env)
229
+
230
+ ```powershell
231
+ npm run test:integration
232
+ ```
233
+
234
+ ---
235
+
236
+ ## Never assume. Always verify.
237
+
238
+ - **Cloudflare 502**: check the container is running (`docker compose ps`) and
239
+ `MCP_HTTP_BIND_ADDR=0.0.0.0` is set.
240
+ - **MCP client connects but tools fail**: check `MCP_HTTP_ALLOWED_ORIGINS` includes
241
+ the Cloudflare domain in both bare and `https://` form.
242
+ - **Claude Desktop shows "Server disconnected" but `/health` is 200**: the client's
243
+ mcp-remote auth header is malformed. A `"Authorization: Bearer ${MCP_AUTH_TOKEN}"`
244
+ placeholder does NOT expand on Windows (`cmd /c` uses `%VAR%`, mcp-remote doesn't
245
+ substitute `${VAR}`) → literal text is sent → server 401 → mcp-remote drops into a
246
+ failing OAuth flow. Fix: inline the literal JWT in `claude_desktop_config.json`'s
247
+ `--header` arg, and add `-y` to `npx` so first run doesn't hang. Verify the server
248
+ side first with a direct `curl` POST to `/mcp` carrying the token.
249
+ - **npm publish returns 404 on PUT**: token likely has per-package scope instead of
250
+ scope-level access, or "Bypass 2FA" is not ticked. Delete token and recreate.
251
+ - **Omada auth error -44106**: check `OMADA_OMADAC_ID` first, not just credentials —
252
+ this error code covers both cases.
253
+ - **Before a release**: always run `npm test` and `npm run build` clean.
254
+ - **On release, bump the version everywhere**: `package.json`, `src/version.ts`,
255
+ `docs/CHANGELOG.md`, AND `openapi.json` (`info.version`) — the last one drifts easily.
256
+
257
+ ---
258
+
259
+ ## Known gaps
260
+
261
+ - **`MCP_TOOL_REGISTRATION_MODE` is NOT implemented.** Lazy/meta-tool registration
262
+ (`list_tools` + `execute` instead of all ~60 tool schemas, to save context on small
263
+ models) was designed but never built — `config.ts` doesn't parse the var and there is
264
+ no `src/tools/registry.ts` / `metaTools.ts` / `allMetadata.ts`. Setting it in `.env`
265
+ is a silent no-op; the server always registers every tool eagerly. Either build the
266
+ feature or drop the var from the NAS `.env`.
package/README.md CHANGED
@@ -49,6 +49,7 @@ See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n
49
49
  - Full type safety with TypeScript
50
50
  - Stateful and stateless session support
51
51
  - JWT authentication with role-based access control
52
+ - MCP Server Instructions for improved LLM tool selection
52
53
 
53
54
  ## Available Tools (60 Total)
54
55
 
@@ -58,12 +59,12 @@ See [docs/QUICK_START.md](docs/QUICK_START.md) for Docker, HTTP server mode, n8n
58
59
 
59
60
  | Tool | Description |
60
61
  |------|-------------|
61
- | `getStates` | Get all entity states from Home Assistant |
62
+ | `getStates` | Get all entity states (paginated, 50/page default). Use `includeAttributes=true` for full data |
62
63
  | `getState` | Get the state of a specific entity by entity_id |
63
- | `getEntitiesByDomain` | Get all entities for a specific domain |
64
- | `searchEntities` | Search for entities by name or entity_id |
65
- | `getAllSensors` | Get all sensor and binary_sensor entities |
66
- | `listEntities` | List entities with filtering (domain, state, search, limit) |
64
+ | `getEntitiesByDomain` | Get entities for a domain (paginated, 50/page default). Use `includeAttributes=true` for full data |
65
+ | `searchEntities` | Search entities by name/entity_id (paginated, 50/page default). Use `includeAttributes=true` for full data |
66
+ | `getAllSensors` | Get all sensors (paginated, 50/page default). Use `includeAttributes=true` for full data |
67
+ | `listEntities` | List entities with filtering (domain, state, search, limit). Use `includeAttributes=true` for full data |
67
68
  | `getDomainSummary` | Get summary statistics for a domain |
68
69
  | `getHistory` | Get historical data for an entity |
69
70
  | `listPersons` | List all household members with location state (home/away) |
@@ -549,24 +550,40 @@ Use the HTTP transport with your MCP-compatible web client:
549
550
  3. Set transport to Streamable HTTP (MCP 2025-03-26)
550
551
  4. Enable CORS by adding your origin to `MCP_HTTP_ALLOWED_ORIGINS`
551
552
 
552
- ### With Remote MCP Proxy (uvx)
553
+ ### With Remote MCP Proxy (mcp-remote)
553
554
 
554
- Connect to a remote MCP server using mcp-remote:
555
+ Connect a stdio-only client (Claude Desktop, LM Studio) to a remote HTTP MCP
556
+ server using [`mcp-remote`](https://www.npmjs.com/package/mcp-remote). On Windows,
557
+ launch it through `cmd /c` and include `-y` so the first run never blocks on the
558
+ npx install prompt:
555
559
 
556
560
  ```json
557
561
  {
558
562
  "mcpServers": {
559
563
  "homeassistant": {
560
- "command": "uvx",
564
+ "command": "cmd",
561
565
  "args": [
566
+ "/c",
567
+ "npx",
568
+ "-y",
562
569
  "mcp-remote",
563
- "http://your-server:3000/mcp"
570
+ "https://your-server.example/mcp",
571
+ "--header",
572
+ "Authorization: Bearer <your-jwt-token>"
564
573
  ]
565
574
  }
566
575
  }
567
576
  }
568
577
  ```
569
578
 
579
+ > ⚠️ **Do not use `${VAR}` placeholders in the `--header` value.** A config like
580
+ > `"Authorization: Bearer ${MCP_AUTH_TOKEN}"` with a matching `env` block does **not**
581
+ > work on Windows: `cmd /c` only expands `%VAR%` (not `${VAR}`), and mcp-remote does
582
+ > not substitute it either. The literal text `${MCP_AUTH_TOKEN}` is sent as the token,
583
+ > the server replies `401`, and mcp-remote then falls into a failing OAuth flow that
584
+ > surfaces as **"Server disconnected"**. Inline the actual JWT instead. (On macOS/Linux
585
+ > you can instead let your shell expand the variable before the client launches.)
586
+
570
587
  ## Network Configuration Notes
571
588
 
572
589
  - **`host.docker.internal`** - Use this to access services on your host machine from Docker
@@ -604,6 +621,18 @@ Connect to a remote MCP server using mcp-remote:
604
621
  - Using environment variable substitution if supported by your client
605
622
  - Never committing config files with real tokens to version control
606
623
 
624
+ ## Server Instructions
625
+
626
+ The server provides MCP Server Instructions during initialization to help LLMs understand how to optimally use the available tools. Instructions are dynamically generated based on enabled plugins and include:
627
+
628
+ - **Entity Queries**: Guidance on pagination, attribute inclusion, and using specialized tools like `listPersons`
629
+ - **Device Control**: When to use specialized control tools vs generic `callService`
630
+ - **Automation Workflows**: Best practices for creating and testing automations
631
+ - **Omada Operations**: Site context requirements, client vs device distinction, rate limiting safety
632
+ - **Cross-Plugin Integration**: How HA presence detection correlates with Omada network clients
633
+
634
+ Instructions follow MCP best practices: concise, actionable, and focused on tool relationships rather than repeating individual tool descriptions.
635
+
607
636
  ## Troubleshooting
608
637
 
609
638
  ### Claude Desktop / LM Studio Not Connecting
@@ -624,6 +653,25 @@ docker run --rm -i \
624
653
  ghcr.io/coffeerunhobby/mcp-ha-connect:latest
625
654
  ```
626
655
 
656
+ ### mcp-remote Shows "Server disconnected" (401)
657
+
658
+ If `/health` returns `200` but the client shows **"Server disconnected"**, the
659
+ auth header is almost certainly malformed. Most common cause: a `${VAR}`
660
+ placeholder in the `--header` value that never got expanded (see the warning under
661
+ [With Remote MCP Proxy](#with-remote-mcp-proxy-mcp-remote)). Verify the endpoint
662
+ accepts your token directly:
663
+
664
+ ```bash
665
+ curl -i -X POST https://your-server.example/mcp \
666
+ -H "Authorization: Bearer <your-jwt-token>" \
667
+ -H "Content-Type: application/json" \
668
+ -H "Accept: application/json, text/event-stream" \
669
+ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"diag","version":"1.0"}}}'
670
+ ```
671
+
672
+ A `200` with an `initialize` result means the server and token are fine — fix the
673
+ client config (inline the literal token). A `401` means the token itself is wrong.
674
+
627
675
  ### Docker `host.docker.internal` Not Working (Linux)
628
676
 
629
677
  Add host gateway:
package/dist/index.js CHANGED
@@ -52,18 +52,26 @@ async function main() {
52
52
  let omadaClient;
53
53
  if (config.omadaPluginEnabled) {
54
54
  if (config.omadaBaseUrl && config.omadaClientId && config.omadaClientSecret && config.omadacId) {
55
- omadaClient = new OmadaClient({
56
- baseUrl: config.omadaBaseUrl,
57
- clientId: config.omadaClientId,
58
- clientSecret: config.omadaClientSecret,
59
- omadacId: config.omadacId,
60
- siteId: config.siteId,
61
- strictSsl: config.omadaStrictSsl,
62
- requestTimeout: config.requestTimeout,
63
- });
64
- // Test Omada connection by listing sites
65
- const sites = await omadaClient.listSites();
66
- logger.info('Connected to Omada controller', { siteCount: sites.length });
55
+ try {
56
+ omadaClient = new OmadaClient({
57
+ baseUrl: config.omadaBaseUrl,
58
+ clientId: config.omadaClientId,
59
+ clientSecret: config.omadaClientSecret,
60
+ omadacId: config.omadacId,
61
+ siteId: config.siteId,
62
+ strictSsl: config.omadaStrictSsl,
63
+ requestTimeout: config.requestTimeout,
64
+ });
65
+ // Test Omada connection by listing sites
66
+ const sites = await omadaClient.listSites();
67
+ logger.info('Connected to Omada controller', { siteCount: sites.length });
68
+ }
69
+ catch (error) {
70
+ logger.warn('Omada controller not available - Omada tools will be disabled', {
71
+ error: error instanceof Error ? error.message : String(error),
72
+ });
73
+ omadaClient = undefined;
74
+ }
67
75
  }
68
76
  else {
69
77
  logger.warn('Omada plugin enabled but required config not set (OMADA_BASE_URL, OMADA_CLIENT_ID, OMADA_CLIENT_SECRET, OMADA_OMADAC_ID)');
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -116,11 +116,20 @@ export class AuthManager {
116
116
  }
117
117
  const data = (await response.json());
118
118
  if (data.errorCode !== 0) {
119
+ // Error code -44106 is returned by Omada for both invalid client credentials
120
+ // AND an incorrect omadacId — the API does not distinguish between them.
121
+ const hint = data.errorCode === -44106
122
+ ? ' Check OMADA_CLIENT_ID, OMADA_CLIENT_SECRET, and OMADA_OMADAC_ID.'
123
+ : '';
124
+ const message = `${data.msg ?? 'Omada authentication failed'} (errorCode=${data.errorCode})${hint}`;
119
125
  logger.error('Omada authentication error', {
120
126
  errorCode: data.errorCode,
121
127
  message: data.msg,
128
+ ...(data.errorCode === -44106 && {
129
+ hint: 'Verify OMADA_CLIENT_ID, OMADA_CLIENT_SECRET, and OMADA_OMADAC_ID are all correct',
130
+ }),
122
131
  });
123
- throw new Error(data.msg ?? 'Omada authentication failed');
132
+ throw new Error(message);
124
133
  }
125
134
  const token = data.result ?? {};
126
135
  this.setToken(token);
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/omadaClient/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/omadaClient/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,2BAA2B,GAAG,EAAE,CAAC;AAWvC;;GAEG;AACH,MAAM,OAAO,WAAW;IACZ,WAAW,CAAU;IAErB,YAAY,CAAU;IAEtB,cAAc,CAAU;IAEf,OAAO,CAAS;IAChB,QAAQ,CAAS;IACjB,YAAY,CAAS;IACrB,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,SAAS,CAAU;IAEpC,YAAY,MAAyB;QACjC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc;QACvB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,UAAU;QACb,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,iBAAiB;QAC3B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9E,OAAO;QACX,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;gBACzC,OAAO;YACX,CAAC;YAAC,MAAM,CAAC;gBACL,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,SAAiD;QACxE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE9D,uBAAuB;QACvB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC9E,CAAC;YACD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,IAAI,GAA2B;YACjC,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,aAAa,EAAE,IAAI,CAAC,YAAY;SACnC,CAAC;QAEF,IAAI,SAAS,KAAK,oBAAoB,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,CAAC;QAED,IAAI,CAAC;YACD,8EAA8E;YAC9E,gFAAgF;YAChF,MAAM,0BAA0B,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;YAC5E,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,GAAG,CAAC;YACnD,CAAC;YAED,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACD,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;oBACnC,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACL,cAAc,EAAE,kBAAkB;wBAClC,MAAM,EAAE,kBAAkB;qBAC7B;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;iBAC5C,CAAC,CAAC;YACP,CAAC;oBAAS,CAAC;gBACP,2BAA2B;gBAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBAClB,IAAI,0BAA0B,KAAK,SAAS,EAAE,CAAC;wBAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;oBACpD,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,0BAA0B,CAAC;oBAC1E,CAAC;gBACL,CAAC;YACL,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACxC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE;oBAC5C,SAAS;oBACT,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;oBAC/B,IAAI,EAAE,SAAS;iBAClB,CAAC,CAAC;gBACH,MAAM,IAAI,KAAK,CAAC,gCAAgC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3E,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAkC,CAAC;YAEtE,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;gBACvB,6EAA6E;gBAC7E,yEAAyE;gBACzE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK;oBAClC,CAAC,CAAC,mEAAmE;oBACrE,CAAC,CAAC,EAAE,CAAC;gBACT,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,6BAA6B,eAAe,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBACpG,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE;oBACvC,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,OAAO,EAAE,IAAI,CAAC,GAAG;oBACjB,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,KAAK,IAAI;wBAC7B,IAAI,EAAE,kFAAkF;qBAC3F,CAAC;iBACL,CAAC,CAAC;gBACH,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAK,EAAkB,CAAC;YACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;gBACxC,SAAS;gBACT,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,KAAkB;QAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QAEvC,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,2BAA2B,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;QACvF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;IACnD,CAAC;CACJ"}
@@ -1,4 +1,4 @@
1
- import type { ActiveClientInfo, ClientActivity, ClientPastConnection, ClientRateLimitSetting, GetClientActivityOptions, ListClientsPastConnectionsOptions, OmadaClientInfo, RateLimitProfile } from '../types/index.js';
1
+ import type { ActiveClientInfo, ClientActivity, ClientBlockStatus, ClientPastConnection, ClientRateLimitSetting, GetClientActivityOptions, ListClientsPastConnectionsOptions, OmadaClientInfo, RateLimitProfile } from '../types/index.js';
2
2
  import type { RequestHandler } from './request.js';
3
3
  import type { SiteOperations } from './site.js';
4
4
  /**
@@ -79,4 +79,21 @@ export declare class ClientOperations {
79
79
  * @returns Updated rate limit setting
80
80
  */
81
81
  disableClientRateLimit(clientMac: string, siteId?: string): Promise<ClientRateLimitSetting>;
82
+ /**
83
+ * Block a client from the network.
84
+ * The client is denied network access until it is unblocked.
85
+ *
86
+ * @param clientMac - MAC address of the client to block
87
+ * @param siteId - Optional site ID, uses default from config if not provided
88
+ * @returns Status object confirming the client was blocked
89
+ */
90
+ blockClient(clientMac: string, siteId?: string): Promise<ClientBlockStatus>;
91
+ /**
92
+ * Unblock a previously blocked client, restoring its network access.
93
+ *
94
+ * @param clientMac - MAC address of the client to unblock
95
+ * @param siteId - Optional site ID, uses default from config if not provided
96
+ * @returns Status object confirming the client was unblocked
97
+ */
98
+ unblockClient(clientMac: string, siteId?: string): Promise<ClientBlockStatus>;
82
99
  }
@@ -169,5 +169,32 @@ export class ClientOperations {
169
169
  const response = await this.request.patch(this.buildPath(`/sites/${encodeURIComponent(resolvedSiteId)}/clients/${encodeURIComponent(clientMac)}/ratelimit`), requestBody);
170
170
  return this.request.ensureSuccess(response);
171
171
  }
172
+ /**
173
+ * Block a client from the network.
174
+ * The client is denied network access until it is unblocked.
175
+ *
176
+ * @param clientMac - MAC address of the client to block
177
+ * @param siteId - Optional site ID, uses default from config if not provided
178
+ * @returns Status object confirming the client was blocked
179
+ */
180
+ async blockClient(clientMac, siteId) {
181
+ const resolvedSiteId = this.site.resolveSiteId(siteId);
182
+ const response = await this.request.post(this.buildPath(`/sites/${encodeURIComponent(resolvedSiteId)}/clients/${encodeURIComponent(clientMac)}/block`));
183
+ this.request.ensureSuccess(response);
184
+ return { mac: clientMac, siteId: resolvedSiteId, blocked: true };
185
+ }
186
+ /**
187
+ * Unblock a previously blocked client, restoring its network access.
188
+ *
189
+ * @param clientMac - MAC address of the client to unblock
190
+ * @param siteId - Optional site ID, uses default from config if not provided
191
+ * @returns Status object confirming the client was unblocked
192
+ */
193
+ async unblockClient(clientMac, siteId) {
194
+ const resolvedSiteId = this.site.resolveSiteId(siteId);
195
+ const response = await this.request.post(this.buildPath(`/sites/${encodeURIComponent(resolvedSiteId)}/clients/${encodeURIComponent(clientMac)}/unblock`));
196
+ this.request.ensureSuccess(response);
197
+ return { mac: clientMac, siteId: resolvedSiteId, blocked: false };
198
+ }
172
199
  }
173
200
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/omadaClient/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/omadaClient/client.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ActiveClientInfo, ClientActivity, ClientPastConnection, ClientRateLimitSetting, GetClientActivityOptions, GetDeviceStatsOptions, GetThreatListOptions, ListClientsPastConnectionsOptions, OmadaClientInfo, OmadaDeviceInfo, OmadaDeviceStats, OmadaSiteSummary, OswStackDetail, PaginatedResult, RateLimitProfile, ThreatInfo } from '../types/index.js';
1
+ import type { ActiveClientInfo, ClientActivity, ClientBlockStatus, ClientPastConnection, ClientRateLimitSetting, GetClientActivityOptions, GetDeviceStatsOptions, GetThreatListOptions, ListClientsPastConnectionsOptions, OmadaClientInfo, OmadaDeviceInfo, OmadaDeviceStats, OmadaSiteSummary, OswStackDetail, PaginatedResult, RateLimitProfile, ThreatInfo } from '../types/index.js';
2
2
  import { type RequestOptions } from './request.js';
3
3
  export interface OmadaClientOptions {
4
4
  baseUrl: string;
@@ -38,6 +38,8 @@ export declare class OmadaClient {
38
38
  setClientRateLimit(clientMac: string, downLimit: number, upLimit: number, siteId?: string): Promise<ClientRateLimitSetting>;
39
39
  setClientRateLimitProfile(clientMac: string, profileId: string, siteId?: string): Promise<ClientRateLimitSetting>;
40
40
  disableClientRateLimit(clientMac: string, siteId?: string): Promise<ClientRateLimitSetting>;
41
+ blockClient(clientMac: string, siteId?: string): Promise<ClientBlockStatus>;
42
+ unblockClient(clientMac: string, siteId?: string): Promise<ClientBlockStatus>;
41
43
  getThreatList(options: GetThreatListOptions): Promise<PaginatedResult<ThreatInfo>>;
42
44
  getInternetInfo(siteId?: string): Promise<unknown>;
43
45
  getPortForwardingStatus(type: 'User' | 'UPnP', siteId?: string, page?: number, pageSize?: number): Promise<PaginatedResult<unknown>>;
@@ -90,6 +90,13 @@ export class OmadaClient {
90
90
  async disableClientRateLimit(clientMac, siteId) {
91
91
  return await this.clientOps.disableClientRateLimit(clientMac, siteId);
92
92
  }
93
+ // Client block operations
94
+ async blockClient(clientMac, siteId) {
95
+ return await this.clientOps.blockClient(clientMac, siteId);
96
+ }
97
+ async unblockClient(clientMac, siteId) {
98
+ return await this.clientOps.unblockClient(clientMac, siteId);
99
+ }
93
100
  // Security operations
94
101
  async getThreatList(options) {
95
102
  return await this.securityOps.getThreatList(options);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/omadaClient/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/omadaClient/index.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,10 @@ export declare class RequestHandler {
29
29
  * Make a PATCH request to the Omada API.
30
30
  */
31
31
  patch<T>(path: string, data?: unknown): Promise<T>;
32
+ /**
33
+ * Make a POST request to the Omada API.
34
+ */
35
+ post<T>(path: string, data?: unknown): Promise<T>;
32
36
  /**
33
37
  * Make an arbitrary HTTP request to the Omada API.
34
38
  */