Skip to main content
Glama

Pingo - 로컬 LAN 디버깅 MCP 서버

로컬 네트워크 디버깅을 위한 완전한 도구 모음색을 제"하는 MCP 서버로, 서비스 인심사(service-per-concern) 구조로 각팅가 레이트되어 있어 확장이 쉽습니다.

공개된 하구

도구

동작

get_network_interfaces

로컬 IPv4 인터페이스를 나열합니다(이름, IP, 넷마스크, MAC).

ping_device

단일 IPv4 주소로 ping을 보내고 응답 여부/지연 시간을 보고합니다.

ping_sweep

/24-/32 CIDR을 스캔하여 활성 호스트를 탐지합니다(동시성 제한).

traceroute

호스트 또는 IP까지 OS 네이티브 traceroute/tracert로 경로를 추적합니다.

dns_lookup

호스트명을 IPv4/IPv6 주소로 변환합니다.

reverse_dns_lookup

IP 주소를 다시 호스트명(들)으로 변환합니다.

check_port

단일 TCP 포트가 열려 있는지 확인합니다.

scan_port_range

raw socket을 통해 TCP 포트 범위를 스캔합니다(최대 1024 span).

get_arp_table

OS ARP 캐시를 읽어 LAN에서 IP->MAC 매핑을 가져옵니다.

get_active_connections

netstat으로 활성 연결을 나열하며, 선택적으로 포트 필터를 적용합니다.

check_http_reachability

HTTP(S) 엔드포인트가 응답하는지 상태와 대기 시간을 함께 확인합니다.

Related MCP server: Network Ops MCP

설계 참고 사항

  • 관심사별 하나의 서비스 (src/services/*) - 각 서비스는 정확히 하나의 작업만 수행하고 컨트롤러에 주입됩니다. 따라서 새 진단 기능(예: MTU 탐색, 대역폭 테스트)을 추가할 때는 새 서비스 하나와 registerTool 호출 하나만 추가하면 되고 다른 것은 변경할 필요가 없습니다.

  • 셸 인젝션 공격 경로 없음 - 모든 OS 명령은 execFile(argv 배열, 절대 셸 문자열 아님)을 통해 실행되며, 모든 입력은 명령이나 소켓에 도달하기 전에 엄격한 허용 목록(src/utils/validators.ts)으로 검증됩니다.

  • 기본적으로 제한됨 - 포트 스캔은 1024포트 범위로 제한되고, ping_sweep은 /24까지로 제한되며, 모든 작업에 타임아웃이 있으므로 잘못된 입력이 프로세스를 중단시키거나 무제한 네트워크 스캔으로 이어질 수 없습니다.

  • DNS는 Node의 네이티브 dns/promises를 사용합니다 - 셸 명령을 전혀 쓰지 않으므로, 가장 위험하게 보이는 도구에서 exec 노출이 하나 줄어듭니다.

실행하기

pnpm install
pnpm dev        # tsx src/index.ts, hot-reload dev mode
pnpm build && pnpm start   # compiled prod run

서버는 http://localhost:3000/mcp에서 수신 대기합니다.

확장하기

  1. src/services/YourService.ts에 IYourService 인터페이스를 구현하는 파일을 추가합니다(기존 서비스처럼 동일하게: 생성자 없이, 하나 또는 두 개의 집중된 메서드).

  2. PingoMcpController.ts의 PingoServices에 추가하고, src/index.ts에서 인스턴스화합니다.

  3. registerTools() 안에 server.registerTool(...) 블록을 하나 추가합니다.

이것이 전체 확장 장입니다. 다른 파일은 변경할 필요가 없습니다.

Related MCP Connectors

Related MCP Servers