MCP (실시간 데이터 게이트웨이)
AI 관리 콘솔 › MCP 게이트웨이 › 서버 에 PlantPulse Platform 줄(종류 «플랫폼»)이 있습니다. 거기서 상태 · 도구 수 · 마지막 발견을 보고
재발견으로 도구 목록을 다시 받습니다. 이 줄은 설치 env 의 PP_API_URL · PP_API_TOKEN 으로 붙으므로 화면에서 이름 · 주소를 고치거나
지울 수 없고(끄기만 됩니다), 플랫폼 도구는 처음부터 전부 켜져 있습니다 → MCP 게이트웨이
2026.10 재릴리즈(2026-10-20) 전에는 이 줄이 코파일럿 관리 콘솔의 도구 서버(MCP)(/admin/mcp)에 있었습니다. 그 화면은 없어졌습니다.
개요
PlantPulse 통합 MCP는 PlantPulse IIoT 플랫폼의 모든 실시간 데이터를 AI가 접근할 수 있도록 하는 MCP(Model Context Protocol) 데이터 게이트웨이입니다.
읽기 전용 데이터 도구를 통해 공장 계층 구조, 센서 데이터, 알람, OEE, 작업지시, 에너지, 시스템 상태 등 공장 운영의 모든 데이터를 AI에게 제공합니다. 온톨로지(지식 그래프) 도구도 이 통합 MCP에 포함됩니다.
MCP(Model Context Protocol)는 Anthropic이 제안한 AI 모델과 데이터 소스 간의 표준 연동 프로토콜입니다.
2026-07 개편: 통합 MCP는 이제 PlantPulse 플랫폼 server-web의 엔드포인트 /api/v5/mcp(api_key 인증)로 제공됩니다. 구 독립 서비스였던 plantpulse-mcp-server(:50000)와 plantpulse-ontology(:8888)는 아카이브되었고, 온톨로지 도구는 통합 MCP에 흡수되었습니다. MCP 게이트웨이가 tools/list로 도구를 동적 발견해 코파일럿(묻기)에 넘깁니다(2026.10 재릴리즈(2026-10-20) — 그 전에는 코파일럿이 직접 발견했습니다).
다룰 수 있는 데이터
공장 구조
사이트 → 구역 → 라인 → 설비 → 태그 계층 전체를 조회합니다. 계층만 필요하면 자산 트리, 구성 개요와 태그 개수까지 필요하면 온톨로지, 영향 전파는 관계 그래프로 나뉩니다.
이름으로 물을 때는 search_domains 가 먼저 ID 를 찾아 줍니다 — 사이트·설비·태그·오더·사용자 등 14개 도메인을 이름·ID·설명 부분일치로 검색합니다.
실시간 값과 이력
- 태그 현재값 일괄 조회 (한 번에 최대 100개)
- 태그 기간 이력
- 설비의 전 태그 스냅샷 — 태그를 하나씩 지정하지 않고 설비 단위로 현재 상태를 받습니다
알람
- 알람 목록 조회 (기간·심각도 필터)
- 알람 원인 진단 번들 — 알람 하나를 두고 관련 태그·상태 변화를 묶어서 받습니다
- 알람 확인 처리 — 도구는 있지만 채팅에서는 실행되지 않습니다(아래 「승인 게이트」)
생산 지표 (OEE / RAM / EMS)
설비를 축으로 조회합니다.
| 필요한 것 | 도구 |
|---|---|
| 오더마다 한 줄씩 (어느 오더가 문제였나) | get_asset_kpi |
| 기간 전체를 한 줄로 (이번 주 어땠나) | get_asset_stats |
| 오더 하나의 상세 | get_order_metrics |
OEE 같은 비율값은 백분율이 아니라 0~1 범위입니다. 화면에 85% 로 보이는 값이
도구 응답에서는 0.85 입니다.
수집 상태
엣지 게이트웨이 상태와 건강 이력, OPC 수집 연결 목록을 조회합니다. "데이터가 안 들어온다" 는 질문은 대개 여기서 답이 나옵니다.
설비 문서
설비에 첨부된 문서 목록을 조회합니다. 문서 내용 검색은 MCP 가 아니라 RAG 담당입니다.
제공 도구 (22개)
통합 MCP 가 제공하는 도구 전량입니다. 도구를 늘리거나 줄이면 플랫폼의 계약 테스트가 실패하므로, 이 목록이 곧 실제 목록입니다.
시간
| 도구 | 돌려주는 것 |
|---|---|
get_current_time | 서버 현재 시각 — 상대 시간("어제", "지난주")을 해석하는 기준 |
구조 — 무엇이 어디에 있나
| 도구 | 돌려주는 것 |
|---|---|
search_domains | 엔티티 검색 (이름 → ID 해소) |
get_asset_tree | 자산 계층 트리 |
get_ontology | 사이트 온톨로지 개요 (구조 + 설비별 태그 개수) |
query_ontology | 자산 관계 그래프 탐색 (영향 전파) |
query_sparql | 온톨로지 SPARQL 질의 |
get_asset_documents | 설비 첨부 문서 목록 |
search_domains대부분의 도구는 ID 를 받습니다. 사용자는 "대전 3라인 주입기" 처럼 이름으로 말하므로,
AI 는 search_domains 로 ID 를 해소한 뒤 본 도구를 호출합니다. 답이 "설비를 찾을 수 없다" 로
돌아온다면 대개 이름이 플랫폼 등록명과 다른 경우입니다.
연결 — 수집이 살아 있나
| 도구 | 돌려주는 것 |
|---|---|
get_edge_status | 엣지 게이트웨이 상태 |
get_edge_health_history | 엣지 건강 이력 (일자별 구간) |
list_connections | OPC 수집 연결 목록 |
데이터 — 태그
| 도구 | 돌려주는 것 |
|---|---|
get_tag_values | 태그 현재값 |
get_tag_history | 태그 기간 이력 |
데이터 — 알람
| 도구 | 돌려주는 것 |
|---|---|
list_alarms | 알람 목록 |
get_alarm_context | 알람 원인 진단 번들 |
ack_alarm | 알람 확인 처리 |
데이터 — 설비
| 도구 | 돌려주는 것 |
|---|---|
get_asset_snapshot | 설비 전 태그 스냅샷 |
get_asset_timeline | 설비 이벤트 타임라인 |
get_asset_stats | 설비 기간 비즈니스 통계 |
생산
| 도구 | 돌려주는 것 |
|---|---|
list_orders | 워크오더 목록 |
get_order_metrics | 워크오더 상세·KPI |
get_asset_kpi | 설비 오더별 KPI (OEE / EMS / RAM) |
롤업
| 도구 | 돌려주는 것 |
|---|---|
get_health | 자산 계층 건강 롤업 |
22개 중 ack_alarm 만 플랫폼 상태를 바꿉니다 — 알람을 확인 처리합니다.
나머지 21개는 전부 읽기 전용입니다. 설비를 제어하거나 설정을 바꾸는 도구는 없습니다.
승인 게이트 — 상태를 바꾸는 도구는 채팅에서 돌지 않습니다
코파일럿은 AI 가 부르는 도구를 조회 도구와 변경 도구로 가릅니다. 플랫폼 통합 MCP 는
도구마다 「조회 전용인가」를 스스로 알려 주고, ack_alarm 은 변경 도구로 알려 옵니다.
변경 도구는 승인 없이는 실행하지 않습니다(기본값). 그런데 묻기에는 이런 도구를 그 자리에서 승인하는 단추가 없습니다. 그래서 채팅에서 「이 알람 확인해줘」라고 해도 알람은 확인 처리되지 않고:
- 답 위 도구 줄(「도구 N개 사용 · N초」)을 펼치면 그 호출이 실패로 남고
- AI 는 「이 도구는 채팅에서 바로 실행할 수 없습니다 … 제안 화면에서 그 이상 접수를 열고 조치 단추로 실행하세요」 라는 거부를 받아 그대로 안내합니다.
알람 · 이상 접수 조치는 제안의 이상 접수 상세에서 사람이 누르는 길이 따로 있습니다. 이 게이트와는 별개입니다. 묻기 답 밑의 행동 카드(다른 시스템에 초안 하나)도 이 게이트와는 다른 길입니다 → 묻기 — 행동 카드
| 설정 | 뜻 | 기본값 |
|---|---|---|
copilot.agent.tools.approval.enabled (CO_AGENT_TOOL_APPROVAL_ENABLED) | 변경 도구 승인 게이트 | true |
copilot.agent.tools.readonly (CO_AGENT_TOOLS_READONLY) | 스스로 알려 주지 않는 도구를 조회 도구로 볼 이름 목록(글롭) | get_* · list_* · search_* 등 조회 동사 |
게이트를 꺼도 모든 도구 호출은 원장(agent_tool_call_log)에 남습니다 — 누가 · 언제 ·
어떤 도구를 · 어떤 인자로(비밀값은 가림) · 결과(성공 · 오류 · 거부). 이 기록은 끌 수
없습니다 → 데이터베이스 모델
주요 설정
통합 MCP는 플랫폼 server-web에서 제공되므로 코파일럿(copliot-web)은 클라이언트 측 접속 설정만 관리합니다.
| 항목 | 설명 | 기본값 |
|---|---|---|
platform.api.url (CO_PLATFORM_API_URL) | 플랫폼 server-web 베이스 URL — 통합 MCP 도 여기로 | (설치 시 설정) |
platform.api.token (CO_PLATFORM_API_TOKEN) | 플랫폼 api_key 인증 토큰 | (설치 시 설정) |
mcp.tools.enabled (CO_MCP_TOOLS_ENABLED) | 통합 MCP 도구 사용 여부 | true |
옛 이름 mcp.api.url · mcp.api.token 은 없습니다 — 그 이름으로 주면 아무 일도 일어나지
않습니다. URL 이나 토큰이 비어 있으면 채팅에서 플랫폼 도구가 빠집니다.
환경변수 접두사는 2026.10 에서 CH_ → CO_ 로 바뀌었습니다. 옛 CH_* 이름은 읽지 않습니다
→ 환경 설정
엔드포인트는 <platform.api.url>/api/v5/mcp이며, JSON-RPC 2.0(tools/list·tools/call) 방식으로 통신합니다. 페이지네이션·알람 조회 기간 등 서버 측 정책은 플랫폼 server-web 설정을 따릅니다.
특징
완전한 데이터 커버리지
공장 운영에 필요한 모든 데이터 도메인을 단일 MCP로 제공합니다. 센서 raw 데이터부터 KPI 집계까지 계층별 조회가 가능합니다.
좁은 쓰기 범위
데이터 조회 도구는 전부 읽기 전용이고, 상태를 바꾸는 것은 알람 확인(ack_alarm) 하나뿐입니다. 설비 제어나 설정 변경 수단이 아예 없으므로, AI 가 공정에 개입할 위험 없이 연동할 수 있습니다.
MCP 표준 프로토콜
Anthropic MCP 표준을 준수합니다. JSON-RPC 2.0 기반 HTTP POST 통신, JSON Schema 기반 입력 검증을 지원합니다.
서버 시간대 기준
시간은 플랫폼 서버의 시간대로 해석합니다. get_current_time 이 그 시간대 이름(예: Asia/Seoul)을 함께
돌려주고, _iso 접미사 필드로 사람이 읽기 쉬운 시간 형식을 제공합니다.