Skip to main content
Glama

Nornir MCP Server

by yhvh-chen

🌐 노르니르 MCP 서버

NornirNAPALM 기반의 네트워크 자동화 도구를 제공하는 FastMCP 서버입니다.

이 서버는 브리지 역할을 하며 Nornir/NAPALM 네트워크 작업을 MCP(대규모 동시 처리) 도구로 공개하여 호환 가능한 MCP 클라이언트(예: FastMCP 웹 UI)에서 쉽게 액세스할 수 있도록 합니다.

✨ 주요 특징

  • Nornir를 활용하여 네트워크 장치에 대한 재고 관리 및 동시 작업 실행을 수행합니다.
  • 여러 공급업체의 장치 상호 작용(정보 수집, 명령 실행)에 NAPALM을 사용합니다.
  • 다양한 전송(이 구성에서는 SSE)을 사용하여 MCP 클라이언트와 원활하게 통합하기 위해 FastMCP로 구축되었습니다.
  • Docker🐳로 컨테이너화되어 쉽게 설정하고 배포할 수 있습니다.
  • 컨테이너 내에서 빠른 Python 종속성 관리를 위해 uv 사용합니다 ⚡.

🔧 필수 조건

시작하기 전에 다음 사항이 설치되어 있는지 확인하세요.

⚙️ 구성

서버를 실행하기 전에 네트워크 인벤토리와 장치 자격 증명을 구성 해야 합니다 .

  1. 프로젝트의 conf/ 디렉토리로 이동합니다.
  2. hosts.yaml 편집 : 네트워크 장치를 정의합니다. 관리 IP/호스트 이름, 플랫폼(예: ios , junos , eos ), 자격 증명(기본값을 사용하지 않는 경우)을 지정하고, 필요한 경우 그룹에 할당합니다.
  3. groups.yaml 편집 : 플랫폼이나 연결 옵션 등 공유 속성을 사용하여 장치 그룹을 정의합니다. 여기에서 설정한 내용은 기본값을 재정의할 수 있습니다.
  4. defaults.yaml 편집 : 기본 자격 증명( username , password ) 및 연결 옵션(비밀번호를 활성화하기 위한 NAPALM secret 또는 기본 platform 등)을 설정합니다.
    • ⚠️ 중요 보안 참고 사항: 기본 구성은 YAML 파일에서 일반 텍스트 자격 증명을 사용합니다. 이는 테스트/랩 환경에 적합합니다. 프로덕션 환경에서는 민감한 정보를 구성 파일에 직접 저장하지 않도록 Nornir의 기본 제공 비밀 관리 기능(예: 환경 변수, HashiCorp Vault 플러그인)을 사용하는 것이 좋습니다 . 비밀 공급자를 구현하는 경우 nornir_ops.py 와 구성을 수정하세요.
  5. config.yaml 검토하세요 . 인벤토리 파일 경로( host_file , group_file , defaults_file )가 conf/ 디렉터리 내 파일을 올바르게 가리키는지 확인하세요(기본적으로 그래야 합니다). 필요한 경우 러너 옵션( num_workers )을 조정하세요.

▶️ 서버 실행

구성이 완료되면 Docker Compose를 사용하여 서버를 쉽게 실행할 수 있습니다.

  1. 위에 설명한 대로 conf/ 디렉토리를 구성했는지 확인하세요.
  2. 프로젝트의 루트 디렉토리( Dockerfiledocker-compose.yml 파일과 같은 디렉토리)에서 터미널이나 명령 프롬프트를 엽니다.
  3. 다음 명령을 실행하세요.지엑스피1
    • --build 플래그는 Docker Compose에 Dockerfile 기반으로 처음으로 이미지를 빌드하거나 프로젝트 파일(예: .py 파일 또는 pyproject.toml )이 변경된 경우 이미지를 빌드하도록 지시합니다.
    • 이 명령은 Docker 컨테이너에서 Nornir MCP 서버를 시작합니다.
  4. 서버 로그는 터미널에 표시됩니다. 기본적으로 호스트 머신(localhost)의 8000 포트를 통해 접근할 수 있습니다.
  5. 서버를 중지하려면 docker-compose 실행 중인 터미널에서 Ctrl+C 누르세요. 그 후 컨테이너를 제거하려면 docker-compose down 실행하세요.

🔌 MCP 클라이언트에 추가

MCP 클라이언트(공식 FastMCP 웹 UI 또는 기타 호환 클라이언트 등)에서 이 서버가 제공하는 도구를 사용하려면:

  1. Nornir MCP 서버가 실행 중인지 확인합니다( docker-compose up 사용).
  2. MCP 클라이언트 애플리케이션을 엽니다.
  3. MCP 서버 연결을 추가하거나 관리하는 옵션을 찾으세요.
  4. 다음 세부 정보를 사용하여 새 연결을 추가하세요.
    • 서버 URL : 이 서버는 SSE(Server-Sent Events) 전송을 사용하고 기본적으로 포트 8000에서 실행되므로 URL은 다음과 같습니다.
      • sse://localhost:8000
      • (Docker 호스트에 클라이언트가 액세스할 수 있는 다른 IP 주소가 있는 경우 localhost 해당 IP로 바꾸세요. 예: sse://192.168.1.100:8000 )
    • 연결 이름 : 설명적인 이름을 지정합니다(예: Nornir Lab Server .
  5. 새로 추가된 서버를 저장하고 연결합니다.
  6. MCP 클라이언트가 Nornir_MCP 서비스를 검색하고 사용 가능한 모든 도구(예: get_facts , send_command 등)를 나열합니다. 이제 클라이언트 인터페이스를 통해 이러한 도구를 사용할 수 있습니다! 🎉

🛠️ 사용 가능한 도구 및 리소스

MCP 클라이언트를 통해 연결하면 일반적으로 다음 도구를 사용할 수 있습니다(서비스 이름 아래에 있음):

  • 목록:
    • list_all_hosts : Nornir 인벤토리( conf/hosts.yaml )에 구성된 장치를 나열합니다.
  • NAPALM 게터: (정보 검색)
    • get_facts
    • get_interfaces
    • get_interfaces_ip
    • get_interfaces_counters
    • get_config ( retrieve 옵션 포함: 실행 중, 시작, 후보)
    • get_arp_table
    • get_mac_address_table
    • get_users
    • get_vlans
    • get_snmp_information
    • get_bgp_neighbors
    • (사용 가능 여부는 장치 플랫폼 및 NAPALM 드라이버 지원에 따라 다름)
  • 실행:
    • send_command : 장치에 단일 읽기 전용 명령을 보내고 출력을 받습니다.
  • 스트리밍 리소스:
    • sse://updates : 간단한 하트비트 이벤트 스트림을 제공합니다. (SSE 리소스를 지원하는 클라이언트에서 구독 가능)

📄 라이센스

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다.

🙌 기여하기

기여, 이슈, 기능 요청은 언제든지 환영합니다! 프로젝트 저장소를 통해 자유롭게 제출해 주세요.

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Nornir 및 NAPALM 작업을 MCP 도구로 공개하여 네트워크 자동화 도구를 제공하는 FastMCP 서버로, 사용자는 호환되는 MCP 클라이언트를 통해 네트워크 장치를 관리하고 상호 작용할 수 있습니다.

  1. ✨ 주요 특징
    1. 🔧 필수 조건
      1. ⚙️ 구성
        1. ▶️ 서버 실행
          1. 🔌 MCP 클라이언트에 추가
            1. 🛠️ 사용 가능한 도구 및 리소스
              1. 📄 라이센스
                1. 🙌 기여하기

                  Related MCP Servers

                  • -
                    security
                    A
                    license
                    -
                    quality
                    FastMCP is a comprehensive MCP server allowing secure and standardized data and functionality exposure to LLM applications, offering resources, tools, and prompt management for efficient LLM interactions.
                    Last updated -
                    3
                    Python
                    MIT License
                  • -
                    security
                    A
                    license
                    -
                    quality
                    A lightweight MCP server for managing DNS records, purging cache, and interacting with the Cloudflare API through natural language commands.
                    Last updated -
                    21
                    TypeScript
                    MIT License
                  • A
                    security
                    A
                    license
                    A
                    quality
                    A Model Control Protocol server that provides access to nmap network scanning functionality, allowing users to run customizable scans, store results, and analyze network security using AI prompts.
                    Last updated -
                    3
                    8
                    Python
                    MIT License
                    • Linux
                  • -
                    security
                    F
                    license
                    -
                    quality
                    A FastMCP server that enables browser automation through natural language commands, allowing Language Models to browse the web, fill out forms, click buttons, and perform other web-based tasks via a simple API.
                    Last updated -
                    3
                    Python

                  View all related MCP servers

                  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/yhvh-chen/nornir_mcp'

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