Skip to main content
Glama
la1av1a

hospital-fee-mcp

by la1av1a
README.md
# 병원 비급여 진료비 조회 MCP 서버

건강보험심사평가원의 비급여 진료비 정보를 조회할 수 있는 MCP(Model Context Protocol) 서버입니다.

## 주요 기능

- 🏥 **병원 검색**: 병원명으로 병원 검색
- 💰 **비급여 항목 검색**: 지역별, 항목별 비급여 진료비 검색
- 📍 **지역 필터링**: 시/도, 시/군/구 단위 필터링 지원
- ⚡ **캐싱**: 동일 요청에 대한 빠른 응답 (5분 TTL)
- 🔒 **CSRF 토큰 관리**: 자동 토큰 갱신
- 🏗️ **멀티모듈 구조**: 클린 아키텍처 기반 설계

## 설치

### 필요 사항

- Python 3.10 이상
- Claude Desktop 또는 MCP 호환 클라이언트

### 설정

1. 저장소 클론:
```bash
git clone https://github.com/yourusername/hospital-fee-mcp.git
cd hospital-fee-mcp
```

2. 가상환경 생성 및 활성화:
```bash
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
```

3. 의존성 설치:
```bash
pip install -r requirements.txt
```

4. Claude Desktop 설정 (`~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
  "mcpServers": {
    "hospital-fee": {
      "command": "/path/to/hospital-fee-mcp/venv/bin/python",
      "args": ["/path/to/hospital-fee-mcp/hospital_fee_mcp.py"]
    }
  }
}
```

5. Claude Desktop 재시작

## 사용 예시

### 항목별 검색

```
부산 해운대구에서 라섹이 제일 싼 곳은 어디야?
```

```
서울 강남구 라섹 가격 알려줘
```

```
광명시 독감 예방접종 가격
```

### 병원별 검색

```
서울연세안과 라섹 가격
```

## 제공 도구

### `search_item_by_name`
항목명과 지역으로 비급여 진료비 검색

**파라미터:**
- `item_name` (필수): 검색할 항목명 (예: 라섹, 크라운, 독감)
- `sido_name` (선택): 시/도 (예: 서울, 부산, 경기)
- `sggu_name` (선택): 시/군/구 (예: 강남구, 부산해운대구)
- `emdong_name` (선택): 읍/면/동
- `hospital_type` (선택): 병원 유형

### `search_hospital`
병원명으로 병원 검색

**파라미터:**
- `hospital_name` (필수): 병원명

### `get_hospital_fee`
특정 병원의 비급여 진료비 상세 조회

**파라미터:**
- `hospital_name` (필수): 병원명
- `hospital_index` (필수): 검색 결과 인덱스

## 프로젝트 구조

```
hospital-fee-mcp/
├── apps/
│   └── mcp_server/          # MCP 서버 구현
│       ├── main.py          # 진입점
│       └── server.py        # FastMCP 서버
├── core/
│   └── hospital_fee/        # 비즈니스 로직
│       ├── services.py      # 서비스 계층
│       ├── region_codes.py  # 지역 코드 관리
│       └── constants.py     # 상수 정의
├── infra/
│   ├── hira_client/         # 건강보험심사평가원 API 클라이언트
│   │   ├── hira_api.py     # API 호출
│   │   ├── csrf.py         # CSRF 토큰 관리
│   │   └── settings.py     # API 설정
│   └── cache/               # 캐싱
│       └── memory_cache.py # 메모리 캐시 구현
├── common/
│   ├── logging_config.py   # 로깅 설정
│   └── settings.py         # 공통 설정
├── data/
│   └── region_codes.json   # 지역 코드 데이터
└── hospital_fee_mcp.py     # MCP 서버 진입점
```

## 기술 스택

- **FastMCP**: MCP 서버 프레임워크
- **HTTPX**: 비동기 HTTP 클라이언트
- **Playwright**: CSRF 토큰 획득용 브라우저 자동화
- **asyncio**: 비동기 프로그래밍

## 주요 기술 특징

### 지역 코드 자동 추출
- API의 `sidoCd`는 `sgguCd`의 앞 2자리를 사용
- 예: `sgguCd=230005` (대구수성구) → `sidoCd=23`

### 메모리 캐싱
- TTL 기반 캐싱 (기본 5분)
- 동일 요청에 대한 빠른 응답

### CSRF 토큰 관리
- Playwright를 통한 자동 토큰 획득
- 토큰 만료 시 자동 갱신

## 데이터 출처

이 서버는 [건강보험심사평가원](https://www.hira.or.kr)의 공개 데이터를 활용합니다.

## 면책 조항

⚠️ **중요**: 이 서버가 제공하는 비급여 진료비 정보는 참고용입니다.

- 비급여 항목의 경우 추가비용 등으로 실제 가격과 상이할 수 있습니다.
- 정확한 가격은 해당 의료기관에 직접 문의해주세요.
- 이 정보를 기반으로 한 의료 결정에 대해 개발자는 책임지지 않습니다.
- 최신 정보는 건강보험심사평가원 공식 사이트를 참고하세요.

## 라이센스

MIT License - 자세한 내용은 [LICENSE](LICENSE) 파일을 참고하세요.