MCP 서버 구현
이름: 에스테반 니콜라스 학번: A20593170
I. MCP 기능 구현
1 데이터 리소스 1.1 HDF5 파일 목록
- 디렉토리 구조에 모의 HDF5 파일을 나열합니다.
- 매개변수:
path_pattern
(선택적 파일 경로 패턴)
2 도구 2.1 Slurm 작업 제출
- Slurm 스케줄러에 작업 제출을 시뮬레이션합니다.
- 매개변수:
script_path
(필수),cores
(선택 사항, 기본값=1)
2.2 CPU 코어 보고
- 시스템에서 사용 가능한 CPU 코어 수를 보고합니다.
- 매개변수가 필요하지 않습니다
2.3 CSV 시각화
- CSV 파일에서 두 개의 열을 표시합니다(기본값은 처음 두 개의 열입니다)
- 매개변수:
csv_path
(필수),column x
,column y
(둘 다 선택 사항)
II. 설치 지침
- 가상 환경 생성
uv venv -p python3.10 .venv\Scripts\activate # Unix의 경우: source .venv/bin/activate
- 종속성 설치
자외선 동기화 자외선 잠금
- 환경 구성 이 프로젝트는 종속성 관리를 위해 pyproject.toml을 사용합니다. 주요 종속성은 다음과 같습니다.
패스트API
유비콘
피단틱
팬더
맷플롯립
파이테스트
파이테스트-아신시오
- MCP 서버 실행
서버를 시작합니다 cd src uvicorn server:app --reload
서버는 다음 위치에서 사용할 수 있습니다.
API 엔드포인트: http://localhost:8000/mcp 상태 점검: http://localhost:8000/health
III 테스트
- 모든 테스트를 실행합니다.
pytest 테스트/ 특정 테스트 파일 실행:
pytest 테스트/test_capabilities_plot_vis.py pytest 테스트/test_capabilities_hdf5.py pytest 테스트/test_capabilities_cpu_core.py pytest 테스트/test_capabilities_slurm.py pytest 테스트/test_mcp_handler.py
- 예제 요청 2.1 사용 가능한 리소스 나열
curl -X POST http://localhost:8000/mcp
-H "콘텐츠 유형: application/json"
-d '{"jsonrpc":"2.0","메소드":"mcp/listResources","id":1}'
2.2 HDF5 파일 나열
curl -X POST http://localhost:8000/mcp
-H "콘텐츠 유형: application/json"
-d '{"jsonrpc":"2.0","메소드":"mcp/callTool","매개변수":{"도구":"hdf5_file_listing","경로_패턴":"/data/sim_run_123"},"id":2}'
2.3 Slurm 작업 제출
curl -X POST http://localhost:8000/mcp
-H "콘텐츠 유형: application/json"
-d '{"jsonrpc":"2.0","메소드":"mcp/callTool","매개변수":{"도구":"slurm_job_submission","스크립트_경로":"/jobs/analysis.sh","코어":4},"id":3}'
2.4 CSV 열 플롯
curl -X POST http://localhost:8000/mcp
-H "콘텐츠 유형: application/json"
-d '{"jsonrpc":"2.0","메소드":"mcp/callTool","매개변수":{"도구":"plot_vis_columns","csv_path":"data.csv","열 x":"시간","열 y":"온도"},"id":4}'
IV 구현 노트
- 모의 구현:
-HDF5 파일 목록은 시뮬레이션된 디렉토리 구조를 사용합니다. -Slurm 작업 제출은 모의 작업 ID를 생성합니다. -CPU 코어 보고는 os.cpu_count()를 사용합니다.
- CSV 시각화:
- plots_results 디렉토리에 플롯을 생성합니다. - 지정하지 않으면 처음 두 열을 기본값으로 사용합니다. - 생성된 PNG 파일의 경로를 반환합니다.
- 오류 처리:
- 적절한 JSON-RPC 2.0 오류 응답 - 모든 매개변수에 대한 입력 검증 - 누락된 파일/잘못된 경로에 대한 우아한 처리
This server cannot be installed
사용자가 HDF5 파일 작업, Slurm 작업 제출, CPU 정보 검색, 표준화된 API 엔드포인트를 통한 CSV 데이터 시각화를 수행할 수 있도록 하는 FastAPI 기반 JSON-RPC 2.0 서버 구현입니다.