71 lines
2.2 KiB
Python
71 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""Verifica P5: tool live Loogle Casa + Home Assistant."""
|
|
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
sys.path.insert(0, "/srv" if os.path.isdir("/srv/app") else os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
|
|
def main() -> int:
|
|
from app.integrations import casa, homeassistant
|
|
from app.mcp import tools
|
|
|
|
user = os.environ.get("MCP_TEST_USER", "daniele")
|
|
claims = {
|
|
"sub": user,
|
|
"scope": "home:read context:read knowledge:read gitea:read admin",
|
|
}
|
|
errors = []
|
|
|
|
print("=== P5 integrations ===")
|
|
print("casa configured:", casa.is_configured(user))
|
|
print("ha configured:", homeassistant.is_configured())
|
|
|
|
if casa.is_configured(user):
|
|
for tool, args in (
|
|
("get_home_dashboard", {}),
|
|
("get_home_weather", {}),
|
|
("get_network_overview", {}),
|
|
("get_network_failover_status", {}),
|
|
):
|
|
try:
|
|
out = tools.call_tool(tool, args, claims)
|
|
text = out["content"][0]["text"]
|
|
data = json.loads(text)
|
|
print(f"OK {tool}: keys={list(data.keys())[:8]}")
|
|
except Exception as exc:
|
|
print(f"FAIL {tool}: {exc}")
|
|
errors.append(tool)
|
|
else:
|
|
errors.append("casa-not-configured")
|
|
|
|
if homeassistant.is_configured():
|
|
try:
|
|
cfg = homeassistant.get_config()
|
|
print(f"OK ha config: version={cfg.get('version')}")
|
|
except Exception as exc:
|
|
print(f"FAIL ha config: {exc}")
|
|
errors.append("ha-config")
|
|
try:
|
|
out = tools.call_tool("list_ha_entities", {"domain": "switch", "limit": 5}, claims)
|
|
data = json.loads(out["content"][0]["text"])
|
|
print(f"OK list_ha_entities: count={len(data.get('entities', []))}")
|
|
except Exception as exc:
|
|
print(f"FAIL list_ha_entities: {exc}")
|
|
errors.append("list_ha_entities")
|
|
else:
|
|
errors.append("ha-not-configured")
|
|
|
|
if errors:
|
|
print("P5 FAILED:", errors)
|
|
return 1
|
|
print("P5 OK")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|