96분
Step 1: 통합 데이터 모델 & MCP Server
Day 5: 트러블슈팅 멀티에이전트 시스템 (주간 프로젝트)
Step 1: 통합 데이터 모델 & MCP Server
AI Agent 심화 > Day 5: 트러블슈팅 멀티에이전트 시스템 (주간 프로젝트)
학습 목표
- 설비/품질/생산 통합 데이터 모델을 설계한다
- MCP Server로 시스템 데이터를 제공한다
- 조치를 위험도로 나누고, 되돌릴 수 없는 조치는 사람 승인을 거쳐야 실행되게 만든다
Step 1: 데이터 기반 구축
모든 Agent가 사용할 데이터를 MCP Server로 제공한다.
데이터 모델
공장 데이터
├── 설비 데이터 (equipment)
│ ├── 설비 목록 + 상태
│ ├── 센서 실시간 값
│ └── 정비 이력
├── 품질 데이터 (quality)
│ ├── 라인별 불량률
│ ├── 불량 유형 분석
│ └── SPC 데이터
└── 생산 데이터 (production)
├── 라인별 생산 실적
├── 계획 대비 달성률
└── 납기 현황구현 범위
- 3개 도메인의 MCP Resources 정의
- 조회 Tools (센서·품질·생산)
- 기록 Tools (알림 생성, 승인 대기 목록 조회)
- 제어 Tool (정비 요청·라인 이관·긴급 정지) — 위험도에 따라 승인 관문을 거친다
조치를 위험도로 나눈다
에이전트가 판단하고 에이전트가 곧바로 실행하면, 판단이 틀렸을 때 막아설 자리가 없다. LLM은 센서 값 하나를 잘못 읽어도 그럴듯한 문장으로 정지 명령을 만든다. 그래서 무엇을 되돌릴 수 있는지로 조치를 가른다.
| 위험도 | 조치 | 실행 방식 |
|---|---|---|
| 낮음 | 조회, 알림 생성, 정비 요청 접수 | 바로 실행한다. 기록만 남으므로 지우면 된다 |
| 높음 | 라인 이관, 긴급 정지 | 실행하지 않는다. 승인 요청을 만들고 「승인 대기」를 돌려준다 |
목록에 없는 조치는 높음으로 본다. 모르는 조치를 자동으로 실행하지 않는다.
승인 기능은 Tool로 만들지 않는다. 승인을 Tool로 주면 에이전트가 스스로 승인하고
스스로 실행하므로 관문이 아니게 된다. 승인은 운전 담당자가 콘솔에서 하고,
에이전트는 그 승인 번호를 approval_id 로 넘겨 다시 부를 때에만 실행에 도달한다.
python factory_mcp_server.py # MCP Server (stdio)
python factory_mcp_server.py approvals # 승인 대기 목록
python factory_mcp_server.py approve APR-0001 김반장 # 승인
설치
pip install "mcp>=1.30,<2"
mcp 2.x 에는 저수준 Server 의 데코레이터 API가 없다. 버전을 고정하지 않으면 이 코드는 돌지 않는다.
에디터 로딩 중...
힌트 보기
- • 이 MCP Server는 프로젝트의 데이터 레이어입니다
- • 모든 A2A Agent가 이 Server의 Tools를 사용합니다
- • Resources는 정보 조회, Tools는 액션 수행에 사용합니다
- • 관문이 도는지 보려면 approval_id 없이 emergency_stop을 불러 보세요. 실행되지 않고 APR 번호만 돌아와야 합니다
- • 승인 대기는 pending_approvals.json에 남습니다. 승인 없이 실행되는 경로가 하나라도 있으면 관문이 아닙니다
정답 보기
에디터 로딩 중...
AI로 학습하기 — 꿀팁
통합 데이터 모델 + MCP Server 생성AI 학습 팁
AI에게 설비·품질·생산 통합 데이터 클래스와 각 도메인 Resource/Tool을 노출하는 MCP Server 뼈대를 함께 생성시키세요.
Python dataclass로 제조 설비·품질·생산 통합 데이터 모델을 정의하고, 이 모델의 데이터를 제공하는 MCP Server를 작성해줘. Resources(설비상태·품질지표·생산계획)와 Tools(알람생성·설비정지요청·보고서요청)를 포함하되, 설비를 멈추는 조치는 승인 번호 없이 실행되지 않도록 승인 관문을 넣고, 승인 기능 자체는 Tool로 노출하지 말아줘. 타입 힌트를 완전히 달아줘.
이 팁이 도움이 됐나요?