# Show GN: 기존 kali-mcp를 Go로 제구현 해봤습니다.

> Clean Markdown view of GeekNews topic #28450. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=28450](https://news.hada.io/topic?id=28450)
- GeekNews Markdown: [https://news.hada.io/topic/28450.md](https://news.hada.io/topic/28450.md)
- Type: show
- Author: [foundcake21](https://news.hada.io/@foundcake21)
- Published: 2026-04-13T03:19:22+09:00
- Updated: 2026-04-13T03:19:22+09:00
- Original source: [github.com/found-cake](https://github.com/found-cake/kali-mcp-go)
- Points: 1
- Comments: 0

## Topic Body

안녕하세요. 정보보호학과를 재학 중인 대학생입니다.  
  
모의 해킹 / 트래픽 테스트 / CTF 자동화 작업에 [kali-mcp](https://github.com/Wh0am123/MCP-Kali-Server)를 즐겨 사용해왔는데, 여러 에이전트를 동시에 붙이는 환경에서 병목을 겪게 되어 Go로 직접 재구현해봤습니다.  
  
**GitHub: https://github.com/found-cake/kali-mcp-go**  
  
---  
  
##### 기존 kali-mcp 구조와 한계  
  
원본은 Flask + Python으로 구현되어 있고, `CommandExecutor` 클래스가 요청마다 `subprocess.Popen`을 생성한 뒤 stdout/stderr 각각을 읽기 위한 daemon thread 2개를 추가로 띄우는 구조입니다.  
  
단일 에이전트에서는 충분하지만, multi-agent 환경에서 동시 요청이 몰리면 다음과 같은 문제가 생깁니다.  
  
- Flask 기본 단일 워커 — 에이전트들이 서로를 블로킹  
- 요청마다 프로세스 + thread 생성 오버헤드  
- 에이전트가 응답 지연을 타임아웃으로 오인해 동일 작업 재시도  
  
---  
  
##### 주요 변경 사항  
  
**서버**  
- 기존: Flask (기본 단일 워커)  
- 변경: Fiber v3 / fasthttp — 완전 동시성  
  
**출력 수집**  
- 기존: daemon thread 2개로 readline 루프  
- 변경: goroutine 2개 + WaitGroup으로 동기화, stdout/stderr 수집 시점을 명확히 맞춰 출력 누락 없이 처리  
  
**timeout/cancel**  
- 기존: `process.wait(timeout=...)` + 강제 kill  
- 변경: context 기반 — 파이프까지 정확하게 닫힘  
  
**Metasploit 임시파일**  
- 기존: `/tmp/mks_msf_resource.rc` 하드코딩 — 동시 요청 시 레이스 컨디션 가능  
- 변경: `os.CreateTemp` — 각 요청마다 고유 파일명으로 안전하게 처리  
  
**tshark 지원**  
- 기존: 없음  
- 변경: 전용 엔드포인트 추가  
  
  
---  
  
##### 아키텍처  
  
기존과 동일한 2티어 구조를 유지하면서 내부를 교체했습니다.  
```txt  
[AI Client]  →(MCP stdio)→  [mcp-client]  →(HTTP + Bearer token)→  [kali-server]  →(exec)→  [nmap, tshark, ...]  
```

## Comments



_No public comments on this page._
