import os, cv2, face_recognition from pathlib import Path from dotenv import load_dotenv from mcp.server.fastmcp import FastMCP load_dotenv();mcp=FastMCP("Alfred Face Recognition");DB=Path(os.getenv('FACE_DB','/home/hermes/faces'));T=float(os.getenv('FACE_TOLERANCE','0.48')) def encodings(): known=[] for person in DB.iterdir() if DB.exists() else []: if not person.is_dir():continue for f in person.glob('*'): try: im=face_recognition.load_image_file(str(f)); es=face_recognition.face_encodings(im) if es:known.append((person.name,es[0])) except Exception:pass return known @mcp.tool() def identify_people(camera_index:int=0): cap=cv2.VideoCapture(camera_index);ok,frame=cap.read();cap.release() if not ok:raise RuntimeError('Caméra indisponible') rgb=cv2.cvtColor(frame,cv2.COLOR_BGR2RGB); locs=face_recognition.face_locations(rgb); es=face_recognition.face_encodings(rgb,locs); known=encodings();out=[] for e in es: name='inconnu';best=T for n,k in known: d=face_recognition.face_distance([k],e)[0] if d