이번 포스팅에서는 칼리리눅스에 클로드 MCP를 붙여 사용하는 방법에 대해 다뤄보겠습니다.
1. PREREQUISITES
먼저, APT(Advanced Package Tool) 업데이트를 진행합니다.
ζ sudo apt update
[sudo] password for soneg:
Hit:1 http://http.kali.org/kali kali-last-snapshot InRelease
1300 packages can be upgraded. Run 'apt list --upgradable' to see them.그 다음으로 칼리리눅스 전용 MCP 서버 소스를 깃허브로부터 다운로드 합니다.
ζ git clone https://github.com/Wh0am123/MCP-Kali-Server.git
Cloning into 'MCP-Kali-Server'...
remote: Enumerating objects: 119, done.
remote: Counting objects: 100% (82/82), done.
remote: Compressing objects: 100% (49/49), done.
remote: Total 119 (delta 62), reused 36 (delta 33), pack-reused 37 (from 3)
Receiving objects: 100% (119/119), 6.65 MiB | 14.78 MiB/s, done.
Resolving deltas: 100% (64/64), done.의존성 충돌을 방지하기 위해 MCP 서버를 구동할 가상환경을 만들고 필요한 라이브러리들을 다운로드 해줍니다.
ζ python -m venv MCP-Kali-Server
ζ source MCP-Kali-Server/bin/activate
(MCP-Kali-Server) # soneg@soneg: ~/MCP-Kali-Server <main ✘ [*]> (13:58:09)
ζ pip install -r requirements.txt 
2. RUN MCP SERVER
모든 준비가 완료되었으면 MCP-Kali-Server 디렉토리에서 server.py 파일을 실행하여 MCP 서버를 실행해줍니다.
--ip옵션을 0.0.0.0 로 지정해주는 이유는 VM/WSL의 네트워크 인터페이스로 들어오는 연결을 받도록 하기 위함입니다.- 이렇게 설정을 해줘야 WSL 가상 NIC로 들어오는 연결을 받고 처리할 수 있게 됩니다.
- 칼리리눅스 MCP 서버의 포트는 따로 설정하지 않으면 5000번 포트가 기본적으로 사용됩니다.
만약, MCP CLINET/SERVER를 로컬 환경에서만 사용한다면 IP 옵션을 루프백 주소로 지정해줘도 됩니다.

3. RUN MCP CLIENT
MCP 서버 실행이 완료되었으니, 이제 클라이언트 쪽 설정을 진행해줘야 합니다.
제 환경에서 MCP 클라이언트는 PC(Windows)이고 MCP 서버는 WSL에서 실행중인 칼리리눅스입니다.
- MCP-Kali-Server 깃허브에서 ZIP 파일을 다운로드 해줍니다.

다운로드 받은 압축파일을 푼 다음 MCP 서버와 동일하게 가상환경을 만들어준 후 필요한 라이브러리를 다운로드 합니다.
> python -m venv MCP-Kali-Server
> .\MCP-Kali-Server\Scripts\Activate.ps1
[ . . . ]
> pip install -r .\requirements.txt
Collecting Flask>=3.0.0 (from -r .\requirements.txt (line 1))
Downloading flask-3.1.3-py3-none-any.whl (103 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 103.4/103.4 kB 2.9 MB/s eta 0:00:00
Collecting requests>=2.31.0 (from -r .\requirements.txt (line 2))
Downloading requests-2.32.5-py3-none-any.whl (64 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 64.7/64.7 kB 3.4 MB/s eta 0:00:00
Collecting mcp>=1.0.0 (from -r .\requirements.txt (line 3))
Downloading mcp-1.26.0-py3-none-any.whl (233 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 233.6/233.6 kB 14.0 MB/s eta 0:00:00
[ . . . ]이제 client.py 파일을 실행해주면 되는데요. 이 때 서버의 URL은 MCP SERVER가 실행되고 있는 URL로 설정하면 됩니다.

4. CLAUDE DESKTOP CONFIGURATION
마지막으로, 아래 가이드를 참고하여 클로드 데스크탑에 설정파일을 추가해줍니다.
”claude_desktop_config.json” 파일은 아래 링크에서 다운로드 받으면 됩니다.

칼리리눅스 MCP 사용을 위한 클로드 데스크톱 설정파일 양식은 아래와 같습니다.
”args”의 1번째, 3번째 인자 값만 알맞은 값으로 변경해주면 됩니다.
- 만약 사용하는 MCP 서버가 여러개면 “mcpServers” 하위에 해당 MCP 서버 설정을 추가해주면 됩니다.

설정파일(claude_desktop_config.json)을 수정했으므로 이제 클로드 데스크탑을 실행할 때마다
자동으로 칼리리눅스 MCP 클라이언트가 실행됩니다. (정상적으로 연결되기 위해서는 칼리에서 서버를 실행해놔야 합니다.)

5. TESTING ON CLAUDE DESKTOP
버프스위트 MCP와 동일하게 클로드 데스크톱 채팅창에서 원하는 명령을 MCP 서버로 요청하면 됩니다.
현재 칼리리눅스 MCP 서버에서는 NMAP, GOBUSTER, DIRB, NIKTO, SQLMAP, METASPLOIT, ETC 등의 기능을 제공해주고 있습니다.

MCP 서버에서 명령 수행이 완료되면 그 결과를 아래와 같이 정리하여 텍스트로 출력해줍니다.
만약, 텍스트 형식이 아니라 파일 형식으로 받고 싶다면 “MD 파일로 만들어줘”와 같이 명령을 추가하면 됩니다.

지금 당장은 테스트 용도로만 작업을 했지만 반복적인 작업을 자동화 하거나,
스킬(Skills) 기능을 이용해서 MCP 서버에서 제공하는 명령어를 커스텀하여 사용하거나,
작업 수행 결과를 정리해서 파일로 출력하도록 설정하는 등 다양하게 활용해 볼 수 있을 거 같습니다.
( 조금 더 사용해보고 괜찮은 방법이 있으면 다시 소개해 드리도록 하겠습니다. )