brunch

말로 하는 AMBARI (feat. MCP)

MCP-Ambari-API with OpenWebUI+MCPO

by JungIn

Intro

MCP 서버로 무엇을 해볼지 잠시 고민한 끝에, 관심의 대상은 어디까지나 MCP 서버이므로 최근까지 불가피(?)하게 다루어야 했던 Ambari 클러스터를 대상으로 잡았다. 추가 학습에 따른 오버헤드도 거의 없다는 점도 크게 작용했다. 잘 준비된 Ambari REST API를 통해 필요한 정보를 수집하고 이를 LLM 기반으로 정리된 결과로 받아보는 ‘MCP 서버 만들기 실습’을 진행하였으며, 이하에서는 그 과정을 기록으로 남김.


결과물 예시


먼저 실습 결과 중 하나로, 구축한 MCP 서버가 Claude Desktop과 성공적으로 연동되어 만족스러운 성과를 얻을 수 있었다. (참고로, 데모에 사용된 UI 환경은 OpenWebUI 를 활용)

{
"mcpServers": {
"ambari-api": {
"command": "uvx",
"args": ["--python", "3.11", "mcp-ambari-api"],
"env": {
"AMBARI_HOST": "localhost",
"AMBARI_PORT": "7070",
"AMBARI_USER": "admin",
"AMBARI_PASS": "changeme!@34",
"AMBARI_CLUSTER_NAME": "TEST-AMBARI",
"AMBARI_LOG_LEVEL": "INFO"
}
}
}
}
ex-screenshot-claude-desktop-001.png


실습 환경 구성

Windows11(23H2)

WSL2(2.6.0.0) (networkingMode = bridged)

DockerDesktop(4.39.0)

VSCode(1.102.3) + Copilot(GPT-4.1 또는 Claude Sornet 4)

Ambari-3.0 Cluster

(선택사항) OpenWebUI + MCPO(MCP OpenAPI Proxy)


MCP-Ambari-API 저장소

https://github.com/call518/MCP-Ambari-API.git


MCP 참고 문서

- MCP - Architecture Overview

- An LLM dose not need to understand MCP


Workflow & Details

요즘은 참 세상이 좋아진 것 같다. 구구절절 코드 흐름이나 로직 설명을 따로 작성한다는 게 무슨 의미가 있을까 싶을 정도다. 아래 링크로 가면 아주 상세히 분석 및 정리된 자료가 있으니 필요하면 참조.

https://deepwiki.com/call518/MCP-Ambari-API (갱신 주기: 7일)


QuickStart

(Info) Ambari 클러스터를 위한 MCP다 보니, 테스트용 Ambari Cluster가 먼저 준비되어 있어야 한다.


Ambari Cluster 구성

마침 얼마 전 다른 일로, Ambari 3.0 Demo Cluster 구성을 해보고 기록한 문서가 있다. Install Ambari 3.0 with Docker 참고해서 Ambari 클러스터를 준비한다.

ex-ambari.png


Github 저장소 받기

MCP 서버만 필요한 경우, "pip install mcp-ambari-api" 명령만으로 설치/사용이 가능하나, 본 과정인 QuickStart 데모를 진행하려면 저장소 Clone 필요함.

$ git clone https://github.com/call518/MCP-Ambari-API.git
$ cd MCP-Ambari-API


mcp-config.json 생성

먼저 다음 명령으로 템플릿을 복사하고, 환경에 맞게 값을 수정.

$ cp mcp-config.json.local mcp-config.json
$ vi mcp-config.json


MCP 데모 컨테이너 그룹 기동 (/w docker-compose)

docker-compose.yml 파일을 보면 알겠지만, 2개의 컨테이너가 기동 됨.

하나는, 사용자가 LLM과 상호작용 할 수 있는 웹기반 인터페이스인 OpenWebUI 컨테이너.

다른 하나는, MCP서버를 OpenAPI 호환 프로토콜로 Wrap해주는 MCPO-Proxy 컨테이너.

$ docker-compose up -d
2025-08-10 00 42 59.png


MCP 컨테이너 확인

(NOTE) 포트 번호는 충돌로 변경될 수 있으니 docker-compose.yml을 확인하세요.

응답 포트(기본값): 8001

MCPO API Docs URL: http://localhost:8001/docs

Swagger 기반 API 문서 제공

2025-08-10 00 58 07.png


OpenWebUI 확인

응답 포트(기본값): 3001

URL: http://localhost:3001/

최초 접속 시, 관리자 계정 등록/로그인

[설정] - [도구]에서, "ambari-api" 도구의 API 주소(MCPO Swagger에 표시된 링크 주소)인, "http://localhost:8001/ambari-api" 등록/추가.

2025-08-10 01 02 50.png

[관리자 패널] - [설정] - [연결]에서, OpenAI API Key 등록. (다른 AI도구도 가능)

2025-08-10 01 04 18.png

테스트 작업으로 "암바리 클러스터 정보 보여줘" 작업 요청.

(NOTE) 당연한 이야기지만, 모델 수준에 따라 응답 품질 차이 있을 수 있음.


Demo 환경 구성 완료



활용 예시

Ambari 클러스터 상태 확인

2025-08-10 01 09 39.png


호스트 목록 확인

2025-08-10 01 11 35.png


호스트별 상황 확인

2025-08-10 01 13 54.png


Configuratin 확인 및 검토

2025-08-10 01 16 57.png


YARN 서비스 중지/시작

2025-08-10 01 47 55.png
2025-08-10 01 47 38.png
2025-08-10 01 50 35.png
2025-08-10 01 48 53.png


전체 서비스 전체 재시작

2025-08-10 01 57 48.png
2025-08-10 01 58 21.png


작업 상태 확인

2025-08-10 01 58 12.png
2025-08-10 02 01 33.png
2025-08-10 02 01 07.png


테스트 완료


맺음

이번 MCP 서버 구현 실습을 통해 MCP 서버 동작 방식과 덤으로 MCPO도 알게 되었으며, 샘플 구현체인 Ambari API 통해, API를 통한 운용/관리의 MCP의 실용성과 자동화 가능성을 체감할 수 있었음.



Other Links

이 글이 도움이 되셨다면, 다른 글도 함께 읽어보세요

LLM-Based Log Analyzer - https://github.com/call518/LogSentinelAI


keyword
작가의 이전글Install Ambari 3.0 with Docker