Skip to main content
Glama

EPICS MCP Server

by eunsang284
README_IOC_Integration.md4.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. 시스템 관리자에게 문의

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eunsang284/EPICS-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server