Skip to main content
Glama
colinkkk

MyHealth Companion MCP

by colinkkk
README.md
# 건강주치의 (MyHealth Companion) MCP

어려운 검사·약·음식을 **내 정보에 맞춰** 풀어주는 AI 건강 동반자. 카카오 PlayMCP 공모전(AGENTIC PLAYER 10) 출품용.

> 진단·처방이 아닙니다. 공식·큐레이션 데이터에 기반한 **참고 정보**만 제공하며, 모든 응답에 디스클레이머가 포함됩니다. 개인화는 호스트 LLM이 대화 맥락으로 수행(stateless).

## Tools (3, stateless)
| tool | 기능 |
|------|------|
| `interpret_lab` | 검사 항목+수치 → 표준 참고치 비교·의미 (검진 결과지 해석) |
| `food_check` | 음식 + 내 프로필(약·상태·검사수치) → 알려진 상호작용/주의 (근거 기반) |
| `lookup_medication` | 약명 → 식약처 e약은요 공식 정보 (효능·복용법·주의·상호작용·부작용) |

## 구조
```
server.py                 FastMCP (tool 3종, annotations 5종, 디스클레이머)
medical_helper/
  data/lab_reference.py   표준 검사 참고치 + 해석 (큐레이션)
  data/food_caution.py    음식-약/상태 주의 룰 (큐레이션, 환각 방지)
  data/mfds.py            식약처 e약은요 OpenAPI 클라이언트 (MFDS_SERVICE_KEY)
  guardrail.py            디스클레이머 + 진단 단정어 자가점검
tests/smoke.py            tool 등록·시나리오·가드레일 검증
```

## 개발
```bash
/opt/homebrew/bin/python3.11 -m venv .venv
.venv/bin/pip install mcp requests
.venv/bin/python tests/smoke.py
.venv/bin/python server.py                  # stdio
npx @modelcontextprotocol/inspector .venv/bin/python server.py   # Inspector
```

## Claude Desktop 연결 (로컬 테스트)
`~/Library/Application Support/Claude/claude_desktop_config.json`에 등록됨:
```json
"mcpServers": {
  "myhealth-companion": {
    "command": "/Users/taejin/medical-helper-mcp/.venv/bin/python",
    "args": ["/Users/taejin/medical-helper-mcp/server.py"]
  }
}
```
→ Claude Desktop **완전 종료 후 재시작** → 입력창 도구 아이콘에 myhealth-companion 표시 → 대화로 tool 3종 호출.

## ⚠️ 미해결 (배포 전)
- **MFDS_SERVICE_KEY 발급**(공공데이터포털 15075057) → 약 tool 라이브.
- 멀티모달: 카톡 첨부 이미지→tool 전달 지원 확인 시 검사지/처방전 OCR 보강.
- stdio → Streamable HTTP(Remote·stateless) → 카카오클라우드 배포 → PlayMCP 등록.
- 데이터 커버리지: 검사 28항목·음식 50+종·룰 16개(추가 확대 여지).

## 공모전 제약 준수
- [x] tool 3개 / 입력 텍스트·JSON / annotations 5종 / 'kakao' 미포함 / 영문+서비스명 병기
- [x] 의료법 가드레일(진단·처방 금지, 디스클레이머, 자가점검) / stateless
- [ ] Streamable HTTP·Remote / 카카오클라우드 배포 / e약은요 키