아이폰이 AI를 위한 로컬 서버가 된다
애스크마이헬스, 애플 건강 데이터를 기기 안에서 에이전트에 개방
개발자 베른하르트 헤링이 아이폰을 애플 건강(Apple Health) 데이터의 로컬 MCP(Model Context Protocol) 서버로 바꾸는 앱 '애스크 마이 헬스(Ask My Health)'를 선보였다. 코덱스(Codex) 같은 AI 에이전트가 최근 운동 기록을 읽고 부족한 데이터를 짚은 뒤, 애플 워치용 운동 계획까지 준비하되 실제 예약은 아이폰에서 사용자가 승인해야 최종 반영되는 구조다.
무슨 일인가
애플 건강에는 운동 종류·시간·거리·심박수·파워·케이던스·심박변이도(HRV)·최대산소섭취량(VO2max) 같은 유용한 맥락이 이미 쌓여 있다. 하지만 보통 외부 에이전트는 이 데이터를 읽지 못한다. 애스크 마이 헬스는 아이폰에서 로컬 서버를 띄우고, 같은 네트워크의 신뢰된 클라이언트에게만 작은 도구 집합을 노출한다. 건강 데이터가 또 하나의 원격 계정으로 새어 나가지 않고 기기에 머무는 것이 이 방식의 핵심 가치다.
핵심 짚어보기
서버는 로컬 네트워크 전용이다. 코덱스는 스트리머블 HTTP와 베어러 토큰 인증으로 아이폰 엔드포인트에 접속하며, 클라우드 계정이나 별도 백엔드 없이 MCP 설정에 서버를 추가할 수 있다. 토큰은 앱에서 발급되고, 개발자는 이를 스크린샷·커밋·블로그에 넣지 않고 시연 후 폐기한다고 강조한다.
에이전트가 쓰는 도구는 권한 상태 확인, 읽기 권한 요청, 운동 조회, 부하 지표 계산 등으로 나뉜다. 설계에서 가장 중요한 대목은 '데이터가 없을 때'다. 읽을 파워 값이 없으면 훈련 강도(TSS)를 지어내지 말고, HRV가 없으면 없다고 말하도록 프롬프트를 짠다. 건강 데이터는 소프트웨어가 빈칸을 자신 있게 채우기 시작하는 순간 급격히 오염되기 때문이다. 운동 계획을 예약하기 전에는 워크아웃킷(WorkoutKit)으로 검증하고, 마지막 예약 호출은 반드시 아이폰 승인을 거친다. 이 앱은 의료 앱이 아니며 에이전트가 의학적 조언을 하지 않도록 선을 긋는다.
1인기업 실전 적용 포인트
- 민감한 개인·업무 데이터를 클라우드에 올리지 않고도 에이전트에 붙이고 싶다면, '로컬 서버 + 베어러 토큰 + 같은 네트워크' 패턴을 그대로 복제해 데이터를 기기·사내에 묶어둘 수 있다.
- 에이전트 프롬프트에 "없는 값은 지어내지 말고 없다고 말하라"를 명시하는 것만으로 환각으로 인한 잘못된 결론을 크게 줄일 수 있다. 건강뿐 아니라 매출·재고 분석에도 통하는 원칙이다.
- 되돌리기 힘든 행동(예약·발송·결제)은 에이전트가 준비만 하고 최종 실행은 사람이 승인하는 2단계 구조로 설계해 사고를 막는다.
- 데모용 토큰은 시연 후 즉시 폐기·회전(rotate)하는 습관을 규칙으로 만든다. 토큰이 스크린샷에 남는 사고를 원천 차단한다.
전망 / 주의점
로컬 방식은 클라우드 로그인보다 손이 더 간다. 아이폰과 맥이 같은 네트워크에 있어야 하고, 토큰을 복사하고, 권한 시트를 승인해야 한다. 그럼에도 '건강 데이터가 조용히 원격 계정이 되지 않게 한다'는 원칙 아래서는 이 정도 수고가 옳은 절충이라는 게 개발자의 판단이다. 민감 데이터를 다루는 에이전트 설계의 좋은 참고 사례다.
출처: Hacker News (https://bernhardhering.de/blog/ask-my-health-codex-workout-plan/)