🌐 노르니르 MCP 서버
Nornir 및 NAPALM 기반의 네트워크 자동화 도구를 제공하는 FastMCP 서버입니다.
이 서버는 브리지 역할을 하며 Nornir/NAPALM 네트워크 작업을 MCP(대규모 동시 처리) 도구로 공개하여 호환 가능한 MCP 클라이언트(예: FastMCP 웹 UI)에서 쉽게 액세스할 수 있도록 합니다.
✨ 주요 특징
Nornir를 활용하여 네트워크 장치에 대한 재고 관리 및 동시 작업 실행을 수행합니다.
여러 공급업체의 장치 상호 작용(정보 수집, 명령 실행)에 NAPALM을 사용합니다.
다양한 전송(이 구성에서는 SSE)을 사용하여 MCP 클라이언트와 원활하게 통합하기 위해 FastMCP로 구축되었습니다.
Docker🐳로 컨테이너화되어 쉽게 설정하고 배포할 수 있습니다.
컨테이너 내에서 빠른 Python 종속성 관리를 위해
uv사용합니다 ⚡.
Related MCP server: Cloudflare API MCP Server
🔧 필수 조건
시작하기 전에 다음 사항이 설치되어 있는지 확인하세요.
Docker Compose (일반적으로 Docker Desktop에 포함됨)
⚙️ 구성
서버를 실행하기 전에 네트워크 인벤토리와 장치 자격 증명을 구성 해야 합니다 .
프로젝트의
conf/디렉토리로 이동합니다.hosts.yaml: 네트워크 장치를 정의합니다. 관리 IP/호스트 이름, 플랫폼(예:ios,junos,eos), 자격 증명(기본값을 사용하지 않는 경우)을 지정하고, 필요한 경우 그룹에 할당합니다.groups.yaml: 플랫폼이나 연결 옵션 등 공유 속성을 사용하여 장치 그룹을 정의합니다. 여기에서 설정한 내용은 기본값을 재정의할 수 있습니다.defaults.yaml: 기본 자격 증명(username,password) 및 연결 옵션(비밀번호를 활성화하기 위한 NAPALMsecret또는 기본platform등)을 설정합니다.⚠️ 중요 보안 참고 사항: 기본 구성은 YAML 파일에서 일반 텍스트 자격 증명을 사용합니다. 이는 테스트/랩 환경에 적합합니다. 프로덕션 환경에서는 민감한 정보를 구성 파일에 직접 저장하지 않도록 Nornir의 기본 제공 비밀 관리 기능(예: 환경 변수, HashiCorp Vault 플러그인)을 사용하는 것이 좋습니다 . 비밀 공급자를 구현하는 경우
nornir_ops.py와 구성을 수정하세요.
config.yaml. 인벤토리 파일 경로(host_file,group_file,defaults_file)가conf/디렉터리 내 파일을 올바르게 가리키는지 확인하세요(기본적으로 그래야 합니다). 필요한 경우 러너 옵션(num_workers)을 조정하세요.
▶️ 서버 실행
구성이 완료되면 Docker Compose를 사용하여 서버를 쉽게 실행할 수 있습니다.
위에 설명한 대로
conf/디렉토리를 구성했는지 확인하세요.프로젝트의 루트 디렉토리(
Dockerfile및docker-compose.yml파일과 같은 디렉토리)에서 터미널이나 명령 프롬프트를 엽니다.다음 명령을 실행하세요.
지엑스피1
--build플래그는 Docker Compose에Dockerfile기반으로 처음으로 이미지를 빌드하거나 프로젝트 파일(예:.py파일 또는pyproject.toml)이 변경된 경우 이미지를 빌드하도록 지시합니다.이 명령은 Docker 컨테이너에서 Nornir MCP 서버를 시작합니다.
서버 로그는 터미널에 표시됩니다. 기본적으로 호스트 머신(localhost)의
8000포트를 통해 접근할 수 있습니다.서버를 중지하려면
docker-compose실행 중인 터미널에서Ctrl+C누르세요. 그 후 컨테이너를 제거하려면docker-compose down실행하세요.
🔌 MCP 클라이언트에 추가
MCP 클라이언트(공식 FastMCP 웹 UI 또는 기타 호환 클라이언트 등)에서 이 서버가 제공하는 도구를 사용하려면:
Nornir MCP 서버가 실행 중인지 확인합니다(
docker-compose up사용).MCP 클라이언트 애플리케이션을 엽니다.
MCP 서버 연결을 추가하거나 관리하는 옵션을 찾으세요.
다음 세부 정보를 사용하여 새 연결을 추가하세요.
서버 URL : 이 서버는 SSE(Server-Sent Events) 전송을 사용하고 기본적으로 포트 8000에서 실행되므로 URL은 다음과 같습니다.
sse://localhost:8000(Docker 호스트에 클라이언트가 액세스할 수 있는 다른 IP 주소가 있는 경우
연결 이름 : 설명적인 이름을 지정합니다(예:
Nornir Lab Server.
새로 추가된 서버를 저장하고 연결합니다.
MCP 클라이언트가
Nornir_MCP서비스를 검색하고 사용 가능한 모든 도구(예:get_facts,send_command등)를 나열합니다. 이제 클라이언트 인터페이스를 통해 이러한 도구를 사용할 수 있습니다! 🎉
🛠️ 사용 가능한 도구 및 리소스
MCP 클라이언트를 통해 연결하면 일반적으로 다음 도구를 사용할 수 있습니다(서비스 이름 아래에 있음):
목록:
list_all_hosts: Nornir 인벤토리(conf/hosts.yaml)에 구성된 장치를 나열합니다.
NAPALM 게터: (정보 검색)
get_factsget_interfacesget_interfaces_ipget_interfaces_countersget_config(retrieve옵션 포함: 실행 중, 시작, 후보)get_arp_tableget_mac_address_tableget_usersget_vlansget_snmp_informationget_bgp_neighbors(사용 가능 여부는 장치 플랫폼 및 NAPALM 드라이버 지원에 따라 다름)
실행:
send_command: 장치에 단일 읽기 전용 명령을 보내고 출력을 받습니다.
스트리밍 리소스:
sse://updates: 간단한 하트비트 이벤트 스트림을 제공합니다. (SSE 리소스를 지원하는 클라이언트에서 구독 가능)
📄 라이센스
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다.
🙌 기여하기
기여, 이슈, 기능 요청은 언제든지 환영합니다! 프로젝트 저장소를 통해 자유롭게 제출해 주세요.