delete_user_variable
Delete a user variable from Domoticz by providing its IDX or name. Removes the variable from the system.
Instructions
Delete a user variable by IDX or Name.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| idx | No | ||
| name | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- src/domoticz_mcp/server.py:755-766 (handler)The 'delete_user_variable' tool handler function. It is decorated with @mcp.tool(), accepts idx or name, resolves the user variable idx using _resolve_user_variable_idx, calls the Domoticz API to delete the user variable, invalidates the cache, and returns the response.
@mcp.tool() async def delete_user_variable(idx: int | None = None, name: str | None = None) -> str: """Delete a user variable by IDX or Name.""" if idx is None and name is None: return '{"status": "error", "message": "Must provide either idx or name"}' async with create_client() as client: resolved_idx = await _resolve_user_variable_idx(client, idx, name) if resolved_idx is None: return '{"status": "error", "message": "User variable not found"}' response = await _do_request(client, "GET", f"{DOMOTICZ_API_URL}?type=command¶m=deleteuservariable&idx={resolved_idx}") _user_variable_cache["timestamp"] = 0 # Invalidate cache return response.text - src/domoticz_mcp/server.py:383-385 (helper)The '_resolve_user_variable_idx' helper function used by delete_user_variable to resolve a user variable name to its idx by querying the cached user variables.
async def _resolve_user_variable_idx(client: "httpx.AsyncClient", idx: Optional[int] = None, name: Optional[str] = None) -> Optional[int]: """Resolve a user variable to its idx.""" return await _resolve_idx(client, idx, name, _user_variable_cache, f"{DOMOTICZ_API_URL}?type=command¶m=getuservariables") - src/domoticz_mcp/server.py:354-370 (helper)The generic '_resolve_idx' helper function that resolves an entity to its idx by name, used by _resolve_user_variable_idx.
async def _resolve_idx( client: "httpx.AsyncClient", idx: Optional[int], name: Optional[str], cache: Dict[str, Any], api_url: str ) -> Optional[int]: """Resolve an entity to its idx by either using the provided idx or looking up by name.""" if idx is not None: return idx if not name: return None items = await _get_cached_data(client, cache, api_url) for item in items: if item.get("Name", "").lower() == name.lower(): return int(str(item.get("idx"))) return None - tests/test_server.py:213-221 (registration)Test for delete_user_variable tool. Shows usage with name='DeleteMe' and the expected mocked HTTP calls.
# delete_user_variable # Mock resolution first respx.get(f"{DOMOTICZ_API_URL}?type=command¶m=getuservariables").mock( return_value=Response(200, json={"result": [{"idx": "5", "Name": "DeleteMe"}]}) ) respx.get(f"{DOMOTICZ_API_URL}?type=command¶m=deleteuservariable&idx=5").mock( return_value=Response(200, json={"status": "OK"}) ) await delete_user_variable(name="DeleteMe")