README_IOC_Integration.md•4.2 kB
# EPICS-MCP-Server with IOC Monitor Integration
## 개요
EPICS-MCP-Server에 IOC Monitor API를 통합하여 EPICS PV 제어와 IOC 모니터링을 동시에 수행할 수 있습니다.
## 통합된 기능
### 1. EPICS PV 제어 (기존)
- **get_pv_value**: PV 값 읽기
- **set_pv_value**: PV 값 설정
- **get_pv_info**: PV 정보 조회
- **suggest_pvs**: PV 검색 및 제안
- **get_all_pvs**: 모든 PV 목록 조회
### 2. IOC Monitor 모니터링 (신규)
- **get_system_status**: 시스템 전체 상태 조회
- **get_ioc_count**: IOC 개수 조회
- **get_ioc_list**: IOC 목록 조회
- **get_ioc_details**: IOC 상세 정보 조회
- **get_faulted_iocs**: 장애 IOC 정보 조회
- **get_ioc_logs**: 특정 IOC 로그 조회
- **get_control_states**: 제어 상태 조회
## 사용 방법
### 1. 서버 실행
```bash
cd Apps/EPICS-MCP-Server/src/epics-mcp-server
python server_by_stdio.py
```
### 2. MCP 클라이언트에서 사용 예시
#### 시스템 상태 확인
```python
# 시스템 전체 상태 조회
result = await client.call_tool("get_system_status", {})
print(result)
```
#### IOC 목록 조회
```python
# 모든 IOC 목록 조회
result = await client.call_tool("get_ioc_list", {})
print(result)
```
#### IOC 상세 정보 조회
```python
# 모든 IOC의 상세 정보 조회
result = await client.call_tool("get_ioc_details", {})
print(result)
```
#### 장애 IOC 확인
```python
# 현재 장애 상태인 IOC 조회
result = await client.call_tool("get_faulted_iocs", {})
print(result)
```
#### 특정 IOC 로그 조회
```python
# 특정 IOC의 이벤트 로그 조회
result = await client.call_tool("get_ioc_logs", {"ioc_name": "IOC_NAME"})
print(result)
```
#### EPICS PV와 IOC 모니터링 동시 사용
```python
# PV 값 읽기
pv_result = await client.call_tool("get_pv_value", {"pv_name": "PV_NAME"})
# IOC 상태 확인
ioc_result = await client.call_tool("get_system_status", {})
print(f"PV Value: {pv_result}")
print(f"IOC Status: {ioc_result}")
```
## 응답 형식
### 시스템 상태 응답 예시
```
System Status:
- IOC Monitor Control IOC: 🟢 RUNNING
- SSH Server: 🟢 RUNNING
- IOC Info Cache Server: 🟢 RUNNING
- IOC Monitor Web Server: 🟢 RUNNING
- Alive Server: 🟢 RUNNING
```
### IOC 목록 응답 예시
```
Found 15 IOCs
IOC List:
- IOC_NAME_1
- IOC_NAME_2
- IOC_NAME_3
...
```
### IOC 상세 정보 응답 예시
```
Found 15 IOCs
IOC Details:
- IOC_NAME_1: ONLINE (192.168.1.100)
- IOC_NAME_2: OFFLINE (192.168.1.101)
- IOC_NAME_3: ONLINE (192.168.1.102)
...
```
## 설정
### IOC Monitor 서버 주소
기본적으로 `http://192.168.70.235:5001`을 사용합니다.
다른 주소를 사용하려면 `IOCMonitorClient` 클래스의 `base_url`을 수정하세요.
```python
ioc_monitor_client = IOCMonitorClient(base_url="http://YOUR_SERVER:PORT")
```
### 타임아웃 설정
기본 타임아웃은 10초입니다. 네트워크 환경에 따라 조정할 수 있습니다.
```python
ioc_monitor_client = IOCMonitorClient(timeout=15)
```
## 에러 처리
모든 IOC Monitor API 호출은 에러 처리가 포함되어 있습니다:
- 네트워크 연결 실패
- 타임아웃
- 잘못된 응답 형식
- 서버 오류
에러 발생 시 `{"error": "에러 메시지", "success": false}` 형태로 응답됩니다.
## 확장 가능성
추가적인 IOC Monitor 기능이 필요하다면:
1. `EpicsTools` enum에 새로운 도구 추가
2. `IOCMonitorClient`에 해당 메서드 구현
3. `handle_list_tools`에 도구 정의 추가
4. `handle_call_tool`에 처리 로직 추가
## 주의사항
1. **네트워크 연결**: IOC Monitor 서버와의 네트워크 연결이 필요합니다.
2. **권한**: 일부 API는 관리자 권한이 필요할 수 있습니다.
3. **성능**: 대량의 IOC 데이터 조회 시 응답 시간이 길어질 수 있습니다.
4. **동시성**: 여러 클라이언트가 동시에 접근할 수 있으므로 적절한 에러 처리가 필요합니다.
## 지원
문제가 발생하거나 추가 기능이 필요한 경우:
1. IOC Monitor 서버 상태 확인
2. 네트워크 연결 상태 확인
3. 로그 파일 확인
4. 시스템 관리자에게 문의