[FIX] Removed invalid helpers usage

This commit is contained in:
Martin 2026-02-10 16:51:19 -05:00
parent 15f5918e20
commit 8a3025081a

View File

@ -16,13 +16,12 @@ from homeassistant.core import (
SupportsResponse, SupportsResponse,
) )
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from homeassistant.helpers import area_registry as ar
from homeassistant.helpers.typing import ConfigType from homeassistant.helpers.typing import ConfigType
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
DOMAIN = "mcp_bridge" DOMAIN = "mcp_bridge"
# Label to mark scripts as MCP-accessible
MCP_ACCESSIBLE_LABEL = "mcp_accessible" MCP_ACCESSIBLE_LABEL = "mcp_accessible"
@ -31,16 +30,14 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
_LOGGER.info("Setting up MCP Bridge integration") _LOGGER.info("Setting up MCP Bridge integration")
async def get_exposed_entities(call: ServiceCall) -> ServiceResponse: async def get_exposed_entities(call: ServiceCall) -> ServiceResponse:
"""Get all entities exposed to conversation / voice assistants.""" """Return entities exposed to conversation."""
entity_reg = er.async_get(hass) entity_reg = er.async_get(hass)
area_reg = hass.helpers.area_registry.async_get(hass) area_reg = ar.async_get(hass)
exposed_entities: list[dict[str, Any]] = [] exposed_entities: list[dict[str, Any]] = []
for state in hass.states.async_all(): for state in hass.states.async_all():
entity_id = state.entity_id entity_entry = entity_reg.async_get(state.entity_id)
entity_entry = entity_reg.async_get(entity_id)
if not entity_entry: if not entity_entry:
continue continue
@ -57,13 +54,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
exposed_entities.append( exposed_entities.append(
{ {
"entity_id": entity_id, "entity_id": state.entity_id,
"state": state.state, "state": state.state,
"friendly_name": state.attributes.get( "friendly_name": state.attributes.get(
"friendly_name", entity_id "friendly_name", state.entity_id
), ),
"area": area_name, "area": area_name,
"domain": entity_id.split(".")[0], "domain": state.entity_id.split(".", 1)[0],
"device_class": state.attributes.get("device_class"), "device_class": state.attributes.get("device_class"),
"supported_features": state.attributes.get( "supported_features": state.attributes.get(
"supported_features", 0 "supported_features", 0
@ -74,8 +71,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
} }
) )
_LOGGER.debug("Found %s exposed entities", len(exposed_entities))
return ServiceResponse( return ServiceResponse(
{ {
"entities": exposed_entities, "entities": exposed_entities,
@ -84,14 +79,12 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
) )
async def get_exposed_scripts(call: ServiceCall) -> ServiceResponse: async def get_exposed_scripts(call: ServiceCall) -> ServiceResponse:
"""Get all scripts marked as MCP-accessible.""" """Return scripts marked as MCP-accessible."""
entity_reg = er.async_get(hass) entity_reg = er.async_get(hass)
exposed_scripts: list[dict[str, Any]] = [] exposed_scripts: list[dict[str, Any]] = []
for entity_id in hass.states.async_entity_ids("script"): for entity_id in hass.states.async_entity_ids("script"):
entity_entry = entity_reg.async_get(entity_id) entity_entry = entity_reg.async_get(entity_id)
if not entity_entry: if not entity_entry:
continue continue
@ -113,8 +106,6 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
} }
) )
_LOGGER.debug("Found %s exposed scripts", len(exposed_scripts))
return ServiceResponse( return ServiceResponse(
{ {
"scripts": exposed_scripts, "scripts": exposed_scripts,
@ -123,7 +114,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
) )
async def get_entity_metadata(call: ServiceCall) -> ServiceResponse: async def get_entity_metadata(call: ServiceCall) -> ServiceResponse:
"""Get detailed metadata for a specific entity.""" """Return detailed metadata for a single entity."""
entity_id = call.data.get(CONF_ENTITY_ID) entity_id = call.data.get(CONF_ENTITY_ID)
if not entity_id: if not entity_id:
@ -133,17 +124,17 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
) )
entity_reg = er.async_get(hass) entity_reg = er.async_get(hass)
area_reg = hass.helpers.area_registry.async_get(hass) area_reg = ar.async_get(hass)
entity_entry = entity_reg.async_get(entity_id)
state = hass.states.get(entity_id) state = hass.states.get(entity_id)
if not state: if not state:
return ServiceResponse( return ServiceResponse(
{"error": f"Entity {entity_id} not found"}, {"error": f"Entity {entity_id} not found"},
success=False, success=False,
) )
entity_entry = entity_reg.async_get(entity_id)
area_name = None area_name = None
if entity_entry and entity_entry.area_id: if entity_entry and entity_entry.area_id:
area = area_reg.async_get_area(entity_entry.area_id) area = area_reg.async_get_area(entity_entry.area_id)
@ -157,7 +148,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"friendly_name", entity_id "friendly_name", entity_id
), ),
"area": area_name, "area": area_name,
"domain": entity_id.split(".")[0], "domain": entity_id.split(".", 1)[0],
"device_class": state.attributes.get("device_class"), "device_class": state.attributes.get("device_class"),
"supported_features": state.attributes.get( "supported_features": state.attributes.get(
"supported_features", 0 "supported_features", 0
@ -197,5 +188,4 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
) )
_LOGGER.info("MCP Bridge services registered successfully") _LOGGER.info("MCP Bridge services registered successfully")
return True return True