@iobroker/mcp-server 1.8.1 → 1.9.1

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
@@ -167,7 +167,8 @@ MCP session runs as (the logged-in user, or the Default User without authenticat
167
167
 
168
168
  A session is not even offered the tools that need a right the groups of its user lack: without the write right for
169
169
  states no `set_state`/`set_states`, without the write right for objects no `set_object`, `create_state`,
170
- `start_instance`, ..., without the write right for files no `write_file`, without **execute** no `install_package`,
170
+ `start_instance`, ..., without the delete right for states no `delete_orphan_states`, without the write right for
171
+ files no `write_file`, without **execute** no `install_package`,
171
172
  without **sendto** no `send_to`. The rights are read when the session starts; every call is checked anyway.
172
173
 
173
174
  `check_permissions` shows these rights and the ACLs of given objects.
@@ -200,7 +201,7 @@ Point your MCP client at:
200
201
  |-----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
201
202
  | `get_states` | Retrieve the current value of one or multiple states; IDs may contain wildcards (e.g. `hue.0.*.brightness`); an ID without a state is returned with `exists: false` or a hint |
202
203
  | `wait_for_state` | Wait until a state has a `value` (or, without `value`, until it is updated), optionally only with `ack`; gives up after `timeout` seconds (default 30, at most 50) with `reached: false` |
203
- | `find_orphan_states` | Find states without object (e.g. `system.adapter.vis.0.alive` of a deleted instance) by an ID `pattern`, except the upload progress `system.adapter.<adapter>.upload`, which has no object on purpose; delete them on the host with `iobroker state del <id>`|
204
+ | `find_orphan_states` | Find states without object (e.g. `system.adapter.vis.0.alive` of a deleted instance) by an ID `pattern`, except the upload progress `system.adapter.<adapter>.upload`, which has no object on purpose; delete them with `delete_orphan_states` or on the host with `iobroker state del <id>`|
204
205
  | `get_object` | Read a single object by its ID |
205
206
  | `check_permissions` | Show the user and groups of the MCP session, the rights of its groups and, for given object IDs, whether it may read/write/delete the object and read/write the state |
206
207
  | `search_objects` | Search objects/states by keyword (matched against ID and name); optional filters for object `type`, `role`, `room` and source `adapter` instance |
@@ -228,6 +229,7 @@ Point your MCP client at:
228
229
  | `clear_notifications` | Acknowledge system notifications, optionally of one scope/category/instance — requires *Allow setting states* |
229
230
  | `set_object` | Create/update an object (merges common/native) — requires *Allow object/file changes* |
230
231
  | `delete_object` | Delete an object, optionally with all children — requires *Allow object/file changes* |
232
+ | `delete_orphan_states` | Delete states without object, given by their IDs or by patterns like `system.adapter.vis.0.*`; each state is checked again first, so a state with an object and the upload progress of an adapter are never deleted — requires *Allow object/file changes* |
231
233
  | `create_state` | Create a new state object with type/role/unit/min/max and optional initial value — requires *Allow object/file changes* |
232
234
  | `create_scene` | Create or update a scene for the ioBroker `scenes` adapter (state/value pairs applied together) — requires *Allow object/file changes* |
233
235
  | `create_alias` | Create an alias (`alias.0.*`) pointing to a state, optionally with a separate write state — requires *Allow object/file changes* |
@@ -335,6 +337,12 @@ client calls it and its result is verified:
335
337
  Placeholder for the next version (at the beginning of the line):
336
338
  ### **WORK IN PROGRESS**
337
339
  -->
340
+ ### 1.9.1 (2026-10-29)
341
+ * (@GermanBluefox) `list_devices`: a name (`smartName` without `smartType`) on one state of a detected device now names that device instead of splitting the state off as a device of its own without room, without the other states (e.g. the switch next to the level) and with a guessed type. Named states that stay devices of their own now get the room and function of their channel or device too
342
+
343
+ ### 1.9.0 (2026-10-27)
344
+ * (@GermanBluefox) Added the `delete_orphan_states` tool: deletes the states without object found by `find_orphan_states`, but never a state with an object
345
+
338
346
  ### 1.8.1 (2026-10-26)
339
347
  * (@GermanBluefox) `find_orphan_states` no longer reports the upload progress of the adapters (`system.adapter.<adapter>.upload`), which js-controller writes without object on purpose
340
348
 
package/build/devices.js CHANGED
@@ -268,15 +268,38 @@ async function controls(adapter, lang, options) {
268
268
  idsWithSmartName.push(id);
269
269
  }
270
270
  });
271
+ /**
272
+ * The room and the function of a control: those of the object itself, else those of its channel or device
273
+ * (e.g. an alias state under a channel that carries the room assignment).
274
+ *
275
+ * @param id ID of the control's object
276
+ */
277
+ const placeOf = (id) => {
278
+ const ids = [id, getChannelId(id, devicesObject), getDeviceId(id, devicesObject)].filter((i) => !!i);
279
+ const find = (enums) => {
280
+ for (const i of ids) {
281
+ const found = enums.find(e => e?.common?.members?.includes(i));
282
+ if (found) {
283
+ return found;
284
+ }
285
+ }
286
+ return undefined;
287
+ };
288
+ return { room: find(rooms), functionality: find(functionalities) };
289
+ };
271
290
  // collect first all smart names and remove them from the auto-groups
272
291
  const detectedControls = [];
273
292
  const detector = new type_detector_1.default();
274
293
  const patterns = type_detector_1.default.getPatterns();
275
- // process states with defined smartName
276
- for (let s = 0; s < idsWithSmartName.length; s++) {
277
- const id = idsWithSmartName[s];
294
+ /**
295
+ * A device of its own for a state with a smartName: the state is the required state of the pattern of
296
+ * `smartType` (default: boolean → socket, number → dimmer).
297
+ *
298
+ * @param id ID of the state
299
+ * @param smartName its smartName
300
+ */
301
+ const addNamedControl = (id, smartName) => {
278
302
  const common = devicesObject[id].common;
279
- const smartName = getSmartNameFromObj(devicesObject[id], adapter.namespace);
280
303
  // try to convert the state to typeDetector format
281
304
  // "smartName": {
282
305
  // "de": "Rote Lampe",
@@ -300,55 +323,80 @@ async function controls(adapter, lang, options) {
300
323
  }
301
324
  }
302
325
  // try to simulate typeDetector format
303
- if (patterns[smartName.smartType]) {
304
- const control = JSON.parse(JSON.stringify(patterns[smartName.smartType]));
305
- // find first required
306
- const state = control.states.find(state => state.required);
307
- if (state) {
308
- state.id = id;
309
- // process control
310
- // remove all unassigned control register
311
- control.states = control.states.filter(s => s.id);
312
- // take all smartNames if any
313
- control.states.forEach(s => {
314
- s.smartName = getSmartNameFromObj(devicesObject[s.id], adapter.namespace);
315
- s.common = {
316
- min: devicesObject[s.id]?.common?.min,
317
- max: devicesObject[s.id]?.common?.max,
318
- type: devicesObject[s.id]?.common?.type,
319
- states: devicesObject[s.id]?.common?.states,
320
- unit: devicesObject[s.id]?.common?.unit,
321
- role: devicesObject[s.id]?.common?.role,
322
- name: devicesObject[s.id]?.common?.name,
323
- icon: devicesObject[s.id]?.common?.icon,
324
- color: devicesObject[s.id]?.common?.color,
325
- };
326
- });
327
- devicesObject[id].common.smartName = smartName;
328
- control.object = {
329
- id,
330
- type: devicesObject[id].type,
331
- common: devicesObject[id].common,
332
- autoDetected: false,
333
- toggle: smartName?.toggle,
334
- };
335
- // remove id from the groups
336
- let pos = list.indexOf(id);
337
- if (pos !== -1) {
338
- list.splice(pos, 1);
339
- }
340
- const channelId = getChannelId(id, devicesObject);
341
- if (channelId) {
342
- pos = list.indexOf(channelId);
343
- if (pos !== -1) {
344
- list.splice(pos, 1);
345
- }
346
- }
347
- const name = smartName[lang] || smartName.en || smartName.de;
348
- control.groupNames = name?.split(',').map(n => n.trim()) || [];
349
- detectedControls.push(control);
326
+ if (!patterns[smartName.smartType]) {
327
+ return;
328
+ }
329
+ const control = JSON.parse(JSON.stringify(patterns[smartName.smartType]));
330
+ // find first required
331
+ const state = control.states.find(state => state.required);
332
+ if (!state) {
333
+ return;
334
+ }
335
+ state.id = id;
336
+ // process control
337
+ // remove all unassigned control register
338
+ control.states = control.states.filter(s => s.id);
339
+ // take all smartNames if any
340
+ control.states.forEach(s => {
341
+ s.smartName = getSmartNameFromObj(devicesObject[s.id], adapter.namespace);
342
+ s.common = {
343
+ min: devicesObject[s.id]?.common?.min,
344
+ max: devicesObject[s.id]?.common?.max,
345
+ type: devicesObject[s.id]?.common?.type,
346
+ states: devicesObject[s.id]?.common?.states,
347
+ unit: devicesObject[s.id]?.common?.unit,
348
+ role: devicesObject[s.id]?.common?.role,
349
+ name: devicesObject[s.id]?.common?.name,
350
+ icon: devicesObject[s.id]?.common?.icon,
351
+ color: devicesObject[s.id]?.common?.color,
352
+ };
353
+ });
354
+ devicesObject[id].common.smartName = smartName;
355
+ control.object = {
356
+ id,
357
+ type: devicesObject[id].type,
358
+ common: devicesObject[id].common,
359
+ autoDetected: false,
360
+ toggle: smartName?.toggle,
361
+ };
362
+ // remove id from the groups
363
+ let pos = list.indexOf(id);
364
+ if (pos !== -1) {
365
+ list.splice(pos, 1);
366
+ }
367
+ const channelId = getChannelId(id, devicesObject);
368
+ if (channelId) {
369
+ pos = list.indexOf(channelId);
370
+ if (pos !== -1) {
371
+ list.splice(pos, 1);
372
+ }
373
+ }
374
+ const name = smartName[lang] || smartName.en || smartName.de;
375
+ control.groupNames = name?.split(',').map(n => n.trim()) || [];
376
+ const { room, functionality } = placeOf(id);
377
+ control.room = room ? { id: room._id, common: room.common } : undefined;
378
+ control.functionality = functionality ? { id: functionality._id, common: functionality.common } : undefined;
379
+ detectedControls.push(control);
380
+ };
381
+ // A smartName without a smartType on a state of a channel or device that is detected anyway only names the
382
+ // detected device (e.g. a name for an alias light written on one of its states). As a device of its own, the
383
+ // state would take the place of the whole channel: the switch next to the level would be lost, and so would
384
+ // the type of the device.
385
+ const namingStates = [];
386
+ // process states with defined smartName
387
+ for (const id of idsWithSmartName) {
388
+ const smartName = getSmartNameFromObj(devicesObject[id], adapter.namespace);
389
+ if (!smartName.smartType && devicesObject[id].type === 'state') {
390
+ const channelId = getChannelId(id, devicesObject);
391
+ const deviceId = getDeviceId(id, devicesObject);
392
+ if (list.includes(id) ||
393
+ (channelId && channelId !== id && list.includes(channelId)) ||
394
+ (deviceId && list.includes(deviceId))) {
395
+ namingStates.push(id);
396
+ continue;
350
397
  }
351
398
  }
399
+ addNamedControl(id, smartName);
352
400
  }
353
401
  // initialize iobroker type detector
354
402
  const usedIds = [];
@@ -387,11 +435,6 @@ async function controls(adapter, lang, options) {
387
435
  color: devicesObject[s.id]?.common?.color,
388
436
  };
389
437
  });
390
- // find out the room the found control is in; if the state itself is not a member of any
391
- // room, fall back to its channel or device parent (e.g. an alias state under a channel
392
- // that carries the room assignment).
393
- const parentChannelId = getChannelId(id, devicesObject);
394
- const parentDeviceId = getDeviceId(id, devicesObject);
395
438
  // For alias devices the state name is often generic (e.g. "SET"); prefer the name of the
396
439
  // immediate enclosing alias channel/device (cf. ioBroker.iot getObjectName on the channel/
397
440
  // device object). Falls back to the state's own name below.
@@ -399,17 +442,7 @@ async function controls(adapter, lang, options) {
399
442
  const aliasParentName = aliasParent && (aliasParent.type === 'channel' || aliasParent.type === 'device')
400
443
  ? aliasParent.common?.name
401
444
  : undefined;
402
- const room = rooms.find(r => r?.common?.members?.includes(id)) ||
403
- (parentChannelId ? rooms.find(r => r?.common?.members?.includes(parentChannelId)) : undefined) ||
404
- (parentDeviceId ? rooms.find(r => r?.common?.members?.includes(parentDeviceId)) : undefined);
405
- // find out the functionality the found control is assigned to (same parent fallback)
406
- const functionality = functionalities.find(f => f?.common?.members?.includes(id)) ||
407
- (parentChannelId
408
- ? functionalities.find(f => f?.common?.members?.includes(parentChannelId))
409
- : undefined) ||
410
- (parentDeviceId
411
- ? functionalities.find(f => f?.common?.members?.includes(parentDeviceId))
412
- : undefined);
445
+ const { room, functionality } = placeOf(id);
413
446
  const smartName = getSmartNameFromObj(devicesObject[id], adapter.namespace);
414
447
  iotControl.object = {
415
448
  id,
@@ -444,6 +477,19 @@ async function controls(adapter, lang, options) {
444
477
  }
445
478
  });
446
479
  });
480
+ for (const id of namingStates) {
481
+ const smartName = getSmartNameFromObj(devicesObject[id], adapter.namespace);
482
+ const control = detectedControls.find(c => c.object?.autoDetected && c.states.some(s => s.id === id));
483
+ if (!control) {
484
+ // the detector did not take the state into any device: it stays a device of its own
485
+ addNamedControl(id, smartName);
486
+ continue;
487
+ }
488
+ const name = smartName[lang] || smartName.en || smartName.de;
489
+ if (name && !control.groupNames?.length) {
490
+ control.groupNames = name.split(',').map(n => n.trim());
491
+ }
492
+ }
447
493
  return detectedControls;
448
494
  }
449
495
  function getName(name, lang, id) {
@@ -1 +1 @@
1
- {"version":3,"file":"devices.js","sourceRoot":"","sources":["../src/devices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devices.js","sourceRoot":"","sources":["../src/devices.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -392,6 +392,21 @@ export default class McpServer {
392
392
  * @returns how many states were checked, and the states without object
393
393
  */
394
394
  private findOrphanStates;
395
+ /**
396
+ * The states without object among the given IDs, for deleting them. A pattern selects its states without object
397
+ * like {@link findOrphanStates}; an ID without wildcard is skipped, with the reason, if it is no such state.
398
+ *
399
+ * @param ids IDs of the states, wildcards allowed
400
+ * @returns the sorted IDs of the states without object, and the skipped IDs
401
+ */
402
+ private selectOrphanStates;
403
+ /**
404
+ * Delete states without object. Each one is checked once more right before, as an adapter may have created its
405
+ * object meanwhile, e.g. while the user was asked for confirmation.
406
+ *
407
+ * @param ids IDs of the states without object
408
+ */
409
+ private deleteOrphanStates;
395
410
  /** Coerce an arbitrary value to the given ioBroker state type. */
396
411
  private static coerceValue;
397
412
  /**
package/build/index.js CHANGED
@@ -64,6 +64,7 @@ const TOOL_RIGHTS = {
64
64
  create_scene: objectWrite,
65
65
  create_alias: objectWrite,
66
66
  delete_object: rights => !!rights.object?.delete,
67
+ delete_orphan_states: rights => !!rights.state?.delete,
67
68
  write_file: fileWrite,
68
69
  rename_file: fileWrite,
69
70
  mkdir: fileWrite,
@@ -96,6 +97,8 @@ const STATE_POLL_INTERVAL = 250;
96
97
  * no orphan.
97
98
  */
98
99
  const UPLOAD_STATE = /^system\.adapter\.[^.]+\.upload$/;
100
+ /** How many IDs the confirmation of `delete_orphan_states` names. */
101
+ const CONFIRM_ID_COUNT = 10;
99
102
  const LOOPBACK = new node_net_1.default.BlockList();
100
103
  LOOPBACK.addSubnet('127.0.0.0', 8, 'ipv4');
101
104
  LOOPBACK.addAddress('::1', 'ipv6');
@@ -1237,6 +1240,9 @@ class McpServer {
1237
1240
  return fail(e);
1238
1241
  }
1239
1242
  });
1243
+ const orphanDeletion = this.config.allowObjectChange
1244
+ ? 'Delete the found states with delete_orphan_states.'
1245
+ : 'Found states can be deleted on the host with `iobroker state del <id>`.';
1240
1246
  server.registerTool('find_orphan_states', {
1241
1247
  title: 'Find states without object',
1242
1248
  annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
@@ -1245,8 +1251,7 @@ class McpServer {
1245
1251
  'read their old values. `pattern` selects the states to check, e.g. "system.adapter.*" or ' +
1246
1252
  '"hue.0.*"; "*" checks all states and objects, which takes a while on large installations. ' +
1247
1253
  'The upload progress of the adapters ("system.adapter.<adapter>.upload") is not reported: ' +
1248
- 'js-controller writes it without object on purpose. ' +
1249
- 'Found states can be deleted on the host with `iobroker state del <id>`.',
1254
+ `js-controller writes it without object on purpose. ${orphanDeletion}`,
1250
1255
  inputSchema: {
1251
1256
  pattern: zod_1.z
1252
1257
  .string()
@@ -1872,6 +1877,48 @@ class McpServer {
1872
1877
  return fail(e);
1873
1878
  }
1874
1879
  });
1880
+ server.registerTool('delete_orphan_states', {
1881
+ title: 'Delete states without object',
1882
+ annotations: {
1883
+ readOnlyHint: false,
1884
+ destructiveHint: true,
1885
+ idempotentHint: true,
1886
+ openWorldHint: false,
1887
+ },
1888
+ description: 'Delete states that have no object, as found by find_orphan_states, e.g. the states left ' +
1889
+ 'over from a deleted instance. `ids` are the IDs of the states, or patterns with "*" whose ' +
1890
+ 'states without object are all deleted, e.g. "system.adapter.vis.0.*". Every state is ' +
1891
+ 'checked again before it is deleted: a state with an object and the upload progress of an ' +
1892
+ 'adapter are skipped, so this tool never deletes the value of an existing state.',
1893
+ inputSchema: {
1894
+ ids: zod_1.z
1895
+ .array(zod_1.z.string().min(1))
1896
+ .min(1)
1897
+ .describe('IDs of the states without object, wildcards "*" allowed'),
1898
+ },
1899
+ }, async ({ ids }) => {
1900
+ try {
1901
+ const selected = await this.selectOrphanStates(ids);
1902
+ if (selected.orphans.length) {
1903
+ const more = selected.orphans.length - CONFIRM_ID_COUNT;
1904
+ await confirm(`Delete ${selected.orphans.length} state(s) without object: ` +
1905
+ `${selected.orphans.slice(0, CONFIRM_ID_COUNT).join(', ')}` +
1906
+ `${more > 0 ? ` and ${more} more` : ''}?`);
1907
+ }
1908
+ const { deleted, skipped, failed } = await this.deleteOrphanStates(selected.orphans);
1909
+ return ok({
1910
+ ok: true,
1911
+ data: {
1912
+ deleted,
1913
+ skipped: [...selected.skipped, ...skipped],
1914
+ ...(failed.length ? { failed } : {}),
1915
+ },
1916
+ });
1917
+ }
1918
+ catch (e) {
1919
+ return fail(e);
1920
+ }
1921
+ });
1875
1922
  server.registerTool('create_state', {
1876
1923
  title: 'Create a state',
1877
1924
  annotations: {
@@ -3569,6 +3616,62 @@ class McpServer {
3569
3616
  }
3570
3617
  return { checked: Object.keys(states).length, orphans };
3571
3618
  }
3619
+ /**
3620
+ * The states without object among the given IDs, for deleting them. A pattern selects its states without object
3621
+ * like {@link findOrphanStates}; an ID without wildcard is skipped, with the reason, if it is no such state.
3622
+ *
3623
+ * @param ids IDs of the states, wildcards allowed
3624
+ * @returns the sorted IDs of the states without object, and the skipped IDs
3625
+ */
3626
+ async selectOrphanStates(ids) {
3627
+ const orphans = new Set();
3628
+ const skipped = [];
3629
+ for (const id of ids) {
3630
+ if (id.includes('*')) {
3631
+ for (const orphan of (await this.findOrphanStates(id)).orphans) {
3632
+ orphans.add(orphan.id);
3633
+ }
3634
+ }
3635
+ else if (UPLOAD_STATE.test(id)) {
3636
+ skipped.push({ id, reason: 'The upload progress of an adapter has no object on purpose' });
3637
+ }
3638
+ else if (await this.adapter.getForeignObjectAsync(id)) {
3639
+ skipped.push({ id, reason: 'The state has an object' });
3640
+ }
3641
+ else if (!(await this.adapter.getForeignStateAsync(id))) {
3642
+ skipped.push({ id, reason: 'There is no such state' });
3643
+ }
3644
+ else {
3645
+ orphans.add(id);
3646
+ }
3647
+ }
3648
+ return { orphans: [...orphans].sort(), skipped };
3649
+ }
3650
+ /**
3651
+ * Delete states without object. Each one is checked once more right before, as an adapter may have created its
3652
+ * object meanwhile, e.g. while the user was asked for confirmation.
3653
+ *
3654
+ * @param ids IDs of the states without object
3655
+ */
3656
+ async deleteOrphanStates(ids) {
3657
+ const deleted = [];
3658
+ const skipped = [];
3659
+ const failed = [];
3660
+ for (const id of ids) {
3661
+ try {
3662
+ if (await this.adapter.getForeignObjectAsync(id)) {
3663
+ skipped.push({ id, reason: 'The state got an object meanwhile' });
3664
+ continue;
3665
+ }
3666
+ await this.adapter.delForeignStateAsync(id, { user: this.user });
3667
+ deleted.push(id);
3668
+ }
3669
+ catch (e) {
3670
+ failed.push({ id, error: e instanceof Error ? e.message : String(e) });
3671
+ }
3672
+ }
3673
+ return { deleted, skipped, failed };
3674
+ }
3572
3675
  /** Coerce an arbitrary value to the given ioBroker state type. */
3573
3676
  static coerceValue(value, type) {
3574
3677
  if (value === null || value === undefined) {