Skip to main content
Glama
kunwarvivekpratapsingh

alarm-management MCP Server

Multi-MCP Enterprise Operations Copilot

플랜트 운영자를 위한 코파일럿입니다. 자연어 질문에 대해 목적에 맞게 구축된 MCP 서버를 통해 알람 관리 API를 호출하고, 운영 문서 말뭉치에서 관련 구절을 검색한 후, 두 정보를 결합하여 인용문과 가시적인 실행 추적을 포함한 단일 근거 기반 답변을 제공합니다.

git clone <repository-url> && cd senior-copilot-mcp-rag-assignment
cp .env.example .env
docker compose up --build

그런 다음 **http://localhost:5173**을 열고 승인 질문을 하세요. API 키가 필요하지 않습니다. 스택은 기본적으로 LLM 없이 동일한 워크플로를 실행하는 결정론적 공급자를 사용합니다. 생성된 산문을 위해서는 LLM_PROVIDER=anthropicANTHROPIC_API_KEY를 설정하세요.


1 · 선정된 사용 사례

Multi-MCP Enterprise Operations Copilot. 코파일럿은 하드코딩된 통합 대신 두 개의 MCP 서버에서 도구를 발견하고 조정하며, 구조화된 데이터를 비구조화된 문서 증거와 하나의 워크플로에서 결합합니다.

필수 승인 시나리오:

지난 90일 동안 Boiler Feed Pump 101에 대해 반복적으로 발생한 높은 심각도의 알람을 조사하고, 가능한 기여 요인을 식별하며, 관련 운영 절차를 검색하고, 출처 증거와 함께 권장 조치를 제공하십시오.

해당 시나리오는 자동화된 테스트로 실행됩니다(tests/e2e/test_acceptance_scenario.py). 실제 HTTP 서페이스에서 5단계가 실행되고, 2단계가 1단계에서 생성된 자산 ID를 수신했으며, 1단계에서 해결된 자산 이름으로 검색이 좁혀졌으며, 답변에 [tool: …][source: …] 마커가 모두 포함되어 있는지 확인합니다.

소스 시스템에 대한 참고 사항

요약서에 설명된 알람 관리 API는 실행 중인 서비스로 존재하지 않습니다. 제공된 Postman 컬렉션이 사양입니다. 따라서 여기서도 services/alarm-simulator/로 구축되었습니다. 15개의 엔드포인트, Bearer 인증, 추적 헤더, 오류 봉투, 결정론적 시드 데이터를 포함하며, 제공된 컬렉션의 모든 체이닝 어설션이 비어 있지 않은 결과를 반환하도록 설계되었습니다. make contract는 모든 세 컬렉션을 실행합니다. CI는 모든 푸시에서 동일하게 수행합니다.

2 · 주요 기능

  • 실시간 알람 데이터 및 운영 문서에 대한 자연어 채팅

  • 두 MCP 서버 간의 런타임 도구 검색 — 하드코딩된 도구 목록 없음

  • 다단계 도구 체이닝: 한 도구의 출력이 다음 도구의 입력이 됨

  • 하이브리드 문서 검색(BM25 + 밀집 벡터, 상호 순위 융합)과 인라인 인용

  • 구조화된 도구 결과와 비구조화된 문서 증거를 결합한 하나의 답변

  • 전체 실행 추적: 어떤 서버, 어떤 도구, 어떤 인수, 소요 시간, 어떤 결과

  • 쓰기 전 명시적 인간 확인 (도구 계약에 명시)

  • 도구 실패, 시간 초과, 잘못된 스키마, 빈 검색 결과, 모델 거부, API 키 누락 시 정상적 저하

3 · 기술 스택

계층

선택

백엔드 / 오케스트레이션

Python 3.11, FastAPI, SSE

MCP

공식 MCP Python SDK — 후보자가 구축한 두 서버, 17개 도구

소스 시스템

Postman 계약에 따라 구축된 FastAPI + SQLAlchemy + SQLite 시뮬레이터

LLM

교체 가능한 LLMProvider 프로토콜 뒤의 anthropic SDK를 통한 claude-opus-5

검색

Chroma(임베디드) + rank-bm25, 상호 순위 융합

프론트엔드

React 18 + TypeScript (Vite), 이미지 내 nginx

패키징

Docker Compose (5개 서비스), GitHub Actions CI

품질

pytest (269개 테스트, 89% 적용 범위), 보안 규칙 포함 ruff, mypy, newman 계약 검사

4 · 아키텍처 요약

5개의 서비스. GUI는 REST 및 SSE를 통해 FastAPI 오케스트레이터와 통신합니다. 오케스트레이터는 두 MCP 서버에서 런타임에 발견한 도구 레지스트리에 대해 일련의 단계를 계획하고, 각 단계의 인수(이전 단계에서 생성된 값 포함)를 해결하며, 검색을 단계 중 하나로 실행하고, 하나의 인용된 답변을 구성합니다.

Browser ──HTTP/SSE──▶ backend ──MCP──▶ mcp-alarm-management ──HTTPS+bearer──▶ alarm-simulator
                         │      └────▶ mcp-github-issues    ──────────────▶ GitHub (mocked)
                         └─embedded──▶ Chroma index over rag/documents

MCP 서버만이 그 뒤에 있는 시스템의 자격 증명을 보유합니다. 코파일럿은 알람 관리 API를 직접 호출하지 않습니다. 따라서 언어 모델은 Bearer 토큰에 대한 코드 경로가 없습니다. 토큰을 읽거나, 요청하거나, 프롬프트 인젝션을 통해 공개하도록 유도할 수 없습니다.

아키텍처

5 · MCP 서버 및 도구

후보자가 구축한 두 서버. 전체 계약(입출력 스키마, 인증 동작, 오류 동작, 시간 초과 및 실제 예제 요청 및 응답 포함)은 docs/mcp-tool-catalog.md에 있으며, 이는 라이브 list_tools() 호출에서 생성되고 CI에서 확인되므로 코드와의 불일치가 발생할 수 없습니다.

alarm-management — 14개 도구

도구

목적

search_assets

자유 텍스트 장비 이름을 자산 레코드로 확인합니다. 여기서 시작하세요.

get_asset_metadata

하나의 자산에 대한 전체 속성 및 현재 알람 수

get_alarms

필터링, 페이지 매김, 정렬된 알람 목록

get_alarm_by_id

하나의 알람 전체

get_alarm_summary

집계된 수 및 KPI, 그룹화

get_alarm_trends

버킷화된 시계열

get_alarm_correlation

함께 발생하는 알람, 지원/신뢰도/향상도

get_flood_analysis

알람 속도가 운영자 용량을 초과한 기간

get_rationalization_candidates

재조정 또는 억제가 필요한 알람

get_priority_score

하나의 알람에 대한 가중치 우선순위

get_operator_recommendations

권장 조치 및 자산 및 이력 컨텍스트

generate_calculation

범위에 대한 명명된 계산 준비

execute_calculation

준비된 계산 실행

get_kpi_definitions

각 KPI의 의미 및 계산 방식

github-issues — 3개 도구

도구

목적

search_issues

읽기 전용 중복 확인

draft_issue

순수 함수 — 제목, 본문, 레이블을 구성합니다. 아무것도 쓰지 않습니다.

create_issue

confirmed: true가 없으면 CONFIRMATION_REQUIRED로 거부

단독 실행

python -m alarm_mcp                      # stdio, for a local MCP client
python -m alarm_mcp --transport http     # streamable HTTP, as in compose
python scripts/mcp_smoke.py              # chain two tools, no GUI and no LLM

6 · RAG 말뭉치 및 수집

10개의 마크다운 문서(운영 절차, 문제 해결 가이드, 표준, 안전 지침, 공급업체 게시판) → 49개의 제목 정렬 청크 → 임베디드 Chroma 인덱스.

python -m rag.ingestion.cli --docs ./rag/documents --reset

검색은 BM25와 밀집 벡터를 융합하고, 이전 도구 호출에서 해결된 자산별로 필터링하며, 약한 일치를 꾸미는 대신 low_confidence를 보고합니다. 하나의 말뭉치 문서에는 라이브 프롬프트 인젝션 페이로드가 포함되어 있어, 신뢰 경계가 주장되는 것이 아니라 테스트됩니다.

전체 설계 — 청킹, 메타데이터, 융합, 인용 구성, 신뢰도, 인젝션 방어, 새로 고침: docs/rag-design.md.

7 · 구성

모든 값은 환경 변수입니다. .env.example은 각 키를 안전한 플레이스홀더와 함께 문서화합니다. 비밀은 커밋되지 않으며, 데모를 실행하는 데 필요하지 않습니다.

기본값

효과

LLM_PROVIDER

rule_based

anthropic은 생성된 산문을 위해 사용됨. 키가 없으면 폴백

ANTHROPIC_API_KEY

replace-me

LLM_PROVIDER=anthropic인 경우에만 필요

ALARM_API_TOKEN

demo-token

Bearer 토큰, MCP 서버만 보유

EMBEDDING_MODEL

hashing

또는 rag-transformers 추가 기능이 있는 sentence-transformers 모델

RETRIEVAL_MIN_SCORE

0.35

이 값 미만이면 답변에 관련 절차를 찾을 수 없다고 명시

GITHUB_MOCK

true

인메모리 이슈 백엔드; 자격 증명 필요 없음, 네트워크 필요 없음

전체 참조(유형, 기본값, 소비 서비스 포함): docs/lld.md §9.

8 · 빌드 및 실행

make가 표준이며 CI가 사용하는 방식입니다. make가 없는 Windows에서는 tasks.ps1이 동일한 대상 이름을 제공합니다.

작업

make

PowerShell

설치 (편집 가능, 개발 도구 포함)

make install

.\tasks.ps1 install

린트 (ruff, 보안 규칙 포함)

make lint

.\tasks.ps1 lint

타입 체크 (mypy)

make typecheck

.\tasks.ps1 typecheck

스택 시작

make up

.\tasks.ps1 up

스택 중지 및 볼륨 제거

make down

.\tasks.ps1 down

RAG 인덱스 구축

make ingest

.\tasks.ps1 ingest

MCP 스모크 테스트

make smoke

.\tasks.ps1 smoke

문서 재생성

make docs

.\tasks.ps1 docs

포트: GUI 5173, 백엔드 8080, 시뮬레이터 8000 (Postman 컬렉션이 실행할 수 있도록 노출), MCP 서버 9000 / 9001 (내부).

이미 사용 중인 포트가 있으면 .env에서 호스트 쪽을 재정의하세요. 컨테이너 포트는 변경되지 않습니다. VITE_API_BASE_URL을 백엔드 포트와 일치하도록 설정하세요. Vite가 빌드 시 GUI에 인라인으로 포함하기 때문입니다:

BACKEND_HOST_PORT=8090 VITE_API_BASE_URL=http://localhost:8090 docker compose up --build

Docker 없이: make install, 그런 다음 네 개의 Python 서비스를 별도의 터미널에서 실행 — uvicorn alarm_simulator.main:app --port 8000, python -m alarm_mcp --transport http, python -m github_mcp --transport http, make ingest, uvicorn copilot_backend.api.app:app --port 8080 — 그리고 apps/frontend에서 npm run dev.

9 · 테스트

작업

make

PowerShell

모든 것 (실행 중인 서비스 불필요)

make test

.\tasks.ps1 test

단위만

make test-unit

.\tasks.ps1 test-unit

통합 (MCP 클라이언트 ↔ 실제 서버)

make test-integration

.\tasks.ps1 test-integration

종단 간 승인 시나리오

make test-e2e

.\tasks.ps1 test-e2e

적용 범위 보고서

make coverage

.\tasks.ps1 coverage

API 계약 vs Postman

make contract

.\tasks.ps1 contract

make contract는 newman이 필요합니다(npm install -g newman) 및 실행 중인 시뮬레이터가 필요합니다.

269개의 테스트, 모두 통과, 89% 라인 커버리지 — 세부 내용은 docs/coverage.md에 있습니다. 이들이 커버하는 내용:

영역

예시

Simulator contract

모든 엔드포인트의 형태, 필터, 페이지네이션, 인증, 추적 헤더, 오류 봉투

Analytics

상관관계, 플러드 탐지, 합리화, 우선순위 점수 매기기, KPI 공식

Connector

요청 구성, 인증 주입, 4xx/5xx → 타입화된 예외, 5xx에서만 재시도

MCP server

디스커버리, 스키마 검증, 인증 헤더, 오류 매핑, 추적 전파

MCP client

연결성, 네트워크 전에 거부된 잘못된 인수, 알 수 없는 도구, 부분 실패, 성능 저하된 서버

RAG

수집, 청킹, 메타데이터, 필터링, 인용, 낮은 신뢰도, 프롬프트 인젝션

Orchestration

체이닝, 동일 워크플로우 내 RAG, 종속 항목 건너뛰기, 환각 도구 제거, 상충되는 증거, 쓰기 승인

LLM providers

계획 타이핑, 캐시 중단점 배치, 제거된 샘플링 매개변수, stop_reason == "refusal"

End-to-end

HTTP를 통한 수용 시나리오, "응답 어디에도 비밀 정보가 나타나지 않음" 포함

LLM은 엔드 투 엔드를 포함한 모든 곳에서 모킹되므로, 스위트는 빠르고 무료이며 반복 가능합니다. 이것이 의미하는 바는 docs/known-limitations.md를 참조하세요.

10 · 샘플 상호작용

반복 알람 (수용 시나리오). 다섯 단계: 자산 식별 → 높은 심각도의 알람 요약 → 동시 발생 쌍 상관관계 → 합리화 후보 찾기 → 방금 식별된 자산으로 필터링된 절차 검색. 답변은 Discharge Pressure Low 다음에 Suction Strainer DP High가 31회 발생(리프트 2.29, 평균 지연 393초) [tool: alarm-management/get_alarm_correlation]이라고 보고하며, 이를 [source: OP-BFP-101#…]의 격리 및 검사 단계와 짝지어 줍니다.

운영자 응답 효율성. generate_calculationexecute_calculation (calculation_id로 체인됨) → 승인 지연 트렌드 → STD-OPRESP의 해당 표준.

에스컬레이션. 활성 알람 → 최상위 알람의 우선순위 점수 → 관련 알람 컨텍스트가 포함된 권장 조치 → 해당 알람 철학 섹션.

이슈 제기. 알람 요약 → 중복 확인 → draft_issue. create_issueconfirmation.required로 실행을 중단합니다. GUI는 정확한 인수를 표시하고 승인 후에만 진행합니다. MCP 서버는 UI가 무엇을 하든 관계없이 거부합니다.

지원 문서가 없는 질문. 검색이 low_confidence를 보고합니다. 답변은 일반 지식으로 대체하는 대신 관련 절차를 찾을 수 없다고 명확히 말합니다.

11 · 저장소 레이아웃

apps/backend/          FastAPI orchestrator, MCP client, LLM providers
apps/frontend/         React + TypeScript GUI
mcp-servers/           alarm-management (14 tools), github-issues (3 tools)
services/              alarm-simulator — the candidate-built source system
connectors/alarm_api/  Reusable HTTP client, deliberately separate from the MCP server
packages/schemas/      Shared Pydantic tool contracts
rag/                   documents, ingestion, retrieval, tests
tests/                 unit, integration, e2e
docs/                  architecture, HLD, LLD, tool catalog, RAG design, decisions, limits
postman/               The supplied collections — the Alarm API specification

제출 가이드라인 §3의 구조에서 두 가지 문서화된 이탈:

  • services/alarm-simulator/ — 브리프는 별도로 후보자가 구축한 백엔드를 요구하며, 이는 미리 명명된 폴더 중 하나가 아닙니다. 시뮬레이터(통합 대상 시스템)를 connectors/(그것에 도달하는 클라이언트)와 분리하여 유지하는 것이 둘을 합치는 것보다 더 깔끔한 분리입니다.

  • docs/hld.mddocs/lld.md — 필수 docs/architecture.md(진입점 유지)와 함께 추가되었습니다.

가이드라인은 명확히 문서화된 경우 동등한 구조를 허용합니다. 의무화된 디렉토리 이름은 하이픈으로 연결되어 유효한 Python 패키지 이름이 아니기 때문에, 각각은 pyproject.toml에서 최상위 임포트로 매핑된 올바르게 명명된 패키지(mcp-servers/alarm-management/alarm_mcp/)를 보유합니다.

12 · 가정

  1. Alarm Management API는 존재하지 않으므로, Postman 컬렉션은 그 사양으로 취급되며 시뮬레이터는 이를 정확히 충족하도록 구축됩니다. 컬렉션이 침묵한 경우(예: 체이닝 컬렉션에만 나타나는 필터) 컬렉션의 어설션이 권위자입니다.

  2. 알람 ID, 자산 ID, 타임스탬프는 재현 가능합니다. 시드가 고정되어 있어 데모, 테스트, Postman 실행 모두 동일한 데이터를 봅니다.

  3. 상관관계는 동일한 자산의 지연 창 내에서 동시 발생을 의미합니다. 통계적 유의성 검정은 합성 데이터의 범위를 벗어납니다.

  4. 단일 테넌트, 단일 사이트 에스테이트. 검색 또는 도구 권한 부여에 테넌트 식별자가 스레드되지 않습니다.

  5. GUI-백엔드 홉은 인증되지 않습니다. 이는 로컬 데모에 허용 가능하며 제한 사항에서 언급됩니다.

  6. docker compose up이 지원되는 경로입니다. 수동 경로는 §8에 문서화되어 있지만 CI가 실행하는 것은 compose 파일입니다.

13 · 알려진 제한 사항 및 향후 개선 사항

정직한 범위 경계, 각각 더 많은 시간이 있었다면 다르게 할 것에 대한 설명: docs/known-limitations.md. 다음으로 올 것, 제가 할 순서대로: docs/future-improvements.md.

14 · 데모

스크린샷

make screenshots로 실행 중인 스택에서 캡처하여, 재생성 가능하고 오래되지 않습니다: docs/screenshots/.

실행 타임라인

쓰기 확인

실행 타임라인 — 각 단계의 서버, 도구, 지속 시간, 상태

쓰기 확인create_issue가 정확한 인수를 보여주며 게이트됨

도구 검색

RAG 증거

도구 검색 — 두 서버에 걸쳐 17개의 도구와 JSON 스키마

RAG 증거 — 섹션과 점수가 포함된 검색된 구절

또한 캡처됨: 빈 상태인용 칩이 포함된 답변.

비디오

링크: 추가 예정 — 녹화된 워크스루 스크립트는 docs/demo.md 참조.

수용 시나리오 전체, 스키마 검사가 포함된 도구 검색, 실행 타임라인, 증거로 해석되는 인용 칩, 쓰기 확인 게이트, 그리고 실패 경로를 다룹니다. 시뮬레이터가 세션 중간에 중지되어 재시도, 성능 저하된 답변, 정직한 공백을 보여줍니다.

라이선스

MIT — LICENSE 참조.

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • AI research on companies and industries — one MCP tool per research domain.

  • Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.

  • An AI concierge that turns static forms into adaptive AI conversations. From any MCP client.

View all MCP Connectors

Latest Blog Posts

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/kunwarvivekpratapsingh/senior-copilot-mcp-rag-assignment'

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