카카오톡 공식 API? 없습니다. 벽타기? 이제 안 해도 됩니다.
bash install.sh한 방이면, Claude Code에서 카톡 읽고 보내기 끝.
AI 시대인데 나만 뒤처지는 것 같은 느낌, 다들 한 번쯤 받아보셨죠?
MCP니 에이전트니 하는 얘기가 쏟아지는데, 막상 카카오톡 하나 자동화하려면 공식 API는 없고, 셀레니움 돌리고, ADB 붙이고, 별의별 벽타기를 해야 합니다. 그 과정에서 포기하는 분들이 많습니다.
그래서 만들었습니다. AI 지식 격차에 FOMO를 느끼며, 벽타기하느라 고생하는 분들이 한 방에 해결할 수 있도록.
이 MCP 서버 하나면 Claude Code가 카카오톡을 자연어로 제어합니다. "홍길동한테 카톡 보내줘" 하면 진짜 보냅니다.
kmsg CLI를 MCP(Model Context Protocol)로 래핑했고, macOS Accessibility API를 사용하기 때문에 비공식 API 크롤링 없이 안정적으로 동작합니다.
면책 조항: 이 도구는 개인 생산성 향상 목적으로 제작되었습니다. 카카오톡 이용약관을 준수하며 사용해 주세요. 스팸, 대량 발송, 자동화 도배 등 남용으로 인한 계정 제재는 본인 책임입니다. 우리 다 어른이니까, 알아서 잘 쓰시리라 믿습니다. 강제로 쓰라고 한 적 없어요!
| 도구 | 설명 |
|---|---|
kmsg_read |
카카오톡 채팅방의 최근 메시지 읽기 |
kmsg_send |
카카오톡 채팅방에 텍스트 메시지 보내기 |
kmsg_send_image |
카카오톡 채팅방에 이미지 보내기 |
kmsg_send_file |
카카오톡 채팅방에 파일 보내기 (문서, 압축파일 등) |
kmsg_download_file |
카카오톡 채팅방에서 파일 첨부 다운로드 (자동 스크롤 탐색) |
- macOS (카카오톡 데스크톱은 macOS 전용)
- KakaoTalk 데스크톱 앱 설치 및 로그인
- Python 3.8+ (macOS 기본 포함)
- Homebrew (설치)
- Claude Code (설치)
git clone https://github.com/hadamyeedady12-dev/kmsg-mcp.git
cd kmsg-mcp
bash install.sh- kmsg 설치
brew install channprj/tap/kmsg- MCP 서버 복사
mkdir -p ~/.local/share/kmsg-mcp
cp kmsg-mcp.py ~/.local/share/kmsg-mcp/
cp VERSION ~/.local/share/kmsg-mcp/- Claude Code MCP 설정
~/.claude.json 파일에 아래 내용을 추가하세요:
{
"mcpServers": {
"kmsg": {
"type": "stdio",
"command": "python3",
"args": ["-u", "~/.local/share/kmsg-mcp/kmsg-mcp.py"],
"env": {
"KMSG_BIN": "/opt/homebrew/bin/kmsg",
"PYTHONUNBUFFERED": "1"
}
}
}
}
KMSG_BIN경로는which kmsg로 확인할 수 있습니다.
- Claude Code 재시작
kmsg는 macOS Accessibility API를 사용하여 카카오톡을 제어합니다. 터미널 앱에 권한을 부여해야 합니다:
- 시스템 설정 > 개인정보 보호 및 보안 > 손쉬운 사용
- 사용 중인 터미널 앱 추가 (Terminal, iTerm2, Warp 등)
- Claude Code를 IDE에서 사용하는 경우, 해당 IDE도 추가 (VS Code, Cursor 등)
Claude Code에서 자연어로 사용하면 됩니다:
# 메시지 읽기
"홍길동 카카오톡 메시지 읽어줘"
"개발팀 단톡방 최근 메시지 50개 보여줘"
# 메시지 보내기
"홍길동한테 카카오톡으로 '회의 시간 변경됐어' 보내줘"
# 이미지 보내기
"홍길동한테 ./screenshot.png 이미지 카카오톡으로 보내줘"
# 파일 보내기
"개발팀 단톡방에 ./report.pdf 파일 보내줘"
# 파일 다운로드
"홍길동 채팅방에서 파일 다운로드해줘"
"회장님 채팅방에서 '회의록.hwpx' 파일 다운로드해줘"
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
chat |
string | O | 채팅방 또는 사용자 이름 |
limit |
integer | X | 읽을 메시지 수 (1-100, 기본값: 20) |
deep_recovery |
boolean | X | 윈도우 복구 모드 (기본값: false) |
keep_window |
boolean | X | 자동 열린 창 유지 (기본값: false) |
trace_ax |
boolean | X | AX 디버깅 로그 포함 (기본값: false) |
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
chat |
string | O | 채팅방 또는 사용자 이름 |
message |
string | O | 보낼 메시지 |
confirm |
boolean | X | true면 전송 전 확인 요청 (기본값: false) |
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
chat |
string | O | 채팅방 또는 사용자 이름 |
image_path |
string | O | 이미지 파일 경로 |
confirm |
boolean | X | true면 전송 전 확인 요청 (기본값: false) |
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
chat |
string | O | 채팅방 또는 사용자 이름 |
file_path |
string | O | 보낼 파일의 절대 경로 |
confirm |
boolean | X | true면 전송 전 확인 요청 (기본값: false) |
keep_window |
boolean | X | 자동 열린 창 유지 (기본값: false) |
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
chat |
string | O | 채팅방 또는 사용자 이름 |
filename |
string | X | 다운로드할 파일명 (예: 회의록.txt). 생략 시 가장 최근 파일 |
save_dir |
string | X | 저장 디렉토리 (기본값: ~/Downloads) |
max_scroll |
integer | X | 파일 탐색을 위한 최대 스크롤 횟수 (0-20, 기본값: 5) |
icon_template_path |
string | X | 다운로드 아이콘 템플릿 이미지 경로 |
keep_window |
boolean | X | 자동 열린 창 유지 (기본값: false) |
filename을 지정하면 채팅방을 위로 스크롤하며 해당 파일을 찾습니다. 화면에 바로 보이지 않는 파일도 자동 탐색합니다.
kmsg가 설치되지 않았거나 PATH에 없습니다.
brew install channprj/tap/kmsg
which kmsg # 경로 확인터미널 앱에 Accessibility 권한이 없습니다.
시스템 설정 > 개인정보 보호 및 보안 > 손쉬운 사용에서 터미널 앱을 추가하세요.
카카오톡이 실행되지 않았거나 최소화 상태입니다.
- 카카오톡을 열고 로그인하세요
deep_recovery: true옵션을 사용해보세요
채팅방 이름이 정확하지 않습니다.
- 카카오톡에서 표시되는 정확한 이름을 사용하세요
- 띄어쓰기에 주의하세요
| 변수 | 설명 | 기본값 |
|---|---|---|
KMSG_BIN |
kmsg 바이너리 경로 | which kmsg |
KMSG_DEFAULT_DEEP_RECOVERY |
기본 deep recovery 활성화 | false |
KMSG_TRACE_DEFAULT |
기본 AX 트레이스 활성화 | false |
KMSG_MCP_VERSION |
서버 버전 오버라이드 | VERSION 파일 |
Claude Code
-> stdio -> kmsg-mcp.py (Python MCP 서버)
-> subprocess -> kmsg (네이티브 바이너리)
-> macOS Accessibility API
-> KakaoTalk.app
- 순수 Python 표준 라이브러리 - 외부 패키지 설치 불필요
- MCP Protocol 2024-11-05 준수
- JSON-RPC 2.0 over stdio
MIT License - LICENSE 참조