AI 에이전트에게 자신의 메신저 대화를 맡기고 싶은 수요는 커지고 있지만, 메신저 사업자 대부분은 개인 메시지를 외부에서 읽어갈 수 있는 공식 경로를 열어두지 않는다. 최근 공개된 오픈소스 프로젝트 whatsapp-mcp는 이 공백을 사용자가 직접 운영하는 작은 서버로 메우려는 시도다. 이 서버는 MCP(Model Context Protocol)를 따르는 읽기 전용 서버로, 클로드 코드나 클로드 데스크톱처럼 MCP를 지원하는 클라이언트가 사용자 본인의 왓츠앱 대화를 검색하고 읽을 수 있게 해준다. 중요한 전제는 '읽기 전용'이라는 점이다. 전화번호에 이름을 붙여 기억하는 정도는 가능하지만 메시지를 보내는 기능은 없다.
동작 방식과 설치 요건
구조적으로 이 서버는 왓츠앱 웹과 동일한 방식으로 동작한다. 사용자가 휴대폰에서 QR 코드를 스캔해 '연결된 기기'로 한 번 등록하면, 이후 에이전트는 이 서버를 통해 대화 내역에 접근한다. 화면을 스캔할 수 없는 상황이라면 전화번호 입력 방식도 지원한다. 휴대폰이 여전히 원본(source of truth)이고 서버는 그 곁가지로 붙은 연결 기기에 불과하다는 설계가 핵심이다. 서버는 왓츠앱에 상시 접속해 있지 않다. 에이전트가 무언가를 요청할 때, 그리고 하루에 한 번, 접속해서 지난번 이후 큐에 쌓인 내용을 가져와 자체 데이터베이스에 기록한 뒤 연결을 끊는다. 그동안 휴대폰은 평소대로 알림을 받으며 정상 작동한다.
설치에는 클라우드플레어 Workers 유료 요금제, Node 20 이상, 그리고 휴대폰이 필요하다. 배포하면 Wrangler가 workers.dev 형태의 URL을 출력하고, 그 페이지에서 왓츠앱 연결과 /mcp 비밀번호 로그인이라는 두 단계를 마치면 된다. 유료 요금제가 필요한 이유는 기술적이다. 과거 대화 내역을 한꺼번에 가져올 때 많은 데이터를 디코딩해야 하는데, 무료 플랜의 기본 CPU 제한으로는 부족하다. 설정 파일에서 이 한도를 올리는 동작 자체가 유료 플랜(월 몇 달러 수준)을 전제로 한다. 제작자는 무료 플랜에서는 시도하지 않았고, 사용한다면 첫 import가 불안정할 것이라고 밝혀두었다.
데이터는 어디에 머무는가
실무자 관점에서 가장 눈여겨볼 지점은 데이터 거주 위치다. 메시지는 사용자 본인 클라우드플레어 계정 안, Durable Object 내부의 SQLite 데이터베이스에 저장되며 그 밖으로는 아무것도 나가지 않는다. 하나의 Durable Object가 Baileys 인증 저장소와 메시지 저장소를 겸하고, Worker 자체는 OAuth 토큰용 KV를 제외하면 상태를 갖지 않는다. 즉 제3자 서버를 거치지 않고 자기 인프라 안에서 완결되는 구조라, 외부 SaaS에 대화 전체를 위탁하는 방식과 비교하면 통제권 측면의 성격이 분명히 다르다. 다만 그만큼 운영 책임도 사용자에게 돌아온다.
연락처 이름 처리 방식도 이 '자기 완결' 철학을 따른다. 왓츠앱은 연결 기기에 모든 연락처 이름을 넘겨주지 않기 때문에, 저장되지 않은 상대는 전화번호로만 표시된다. 서버가 직접 구글 연락처 같은 서비스에 로그인하려면 클라우드 프로젝트와 동의 화면, 앱 심사까지 필요해지므로, 대신 이름 매칭 작업은 에이전트에게 넘긴다. 에이전트가 이름 없는 대화 목록을 불러와 자신이 이미 가진 연락처 도구로 번호를 조회하고 결과를 저장하는 식이다. 서버는 연락처 서비스에 스스로 접속하지 않는다.
한계와 리스크
이 도구의 한계는 솔직하게 명시돼 있다. 우선 비공식이다. 왓츠앱은 개인 메시지를 읽어가는 API를 제공하지 않으며, 이 프로젝트는 오픈소스 라이브러리 Baileys를 통해 왓츠앱 웹 프로토콜을 사용한다. 이는 왓츠앱 이용약관에 반하는 행위다. 읽기만 하는 연결 기기라는 점에서 실질적 위험은 낮다고 보지만 0은 아니며, 본인 계정에서만 쓰고 메시지 전송에는 쓰지 말라고 권고한다. 또한 가져올 수 있는 내역은 전적으로 왓츠앱이 신규 기기에 넘겨주는 범위에 달려 있어 전부가 아닐 수 있고, 이 import는 연결당 한 번만 일어난다. 누락분은 재연결로 보완할 수 있으며 저장된 메시지는 유지된다. 사진이나 음성 메모, 문서 같은 미디어는 내려받지 않고 [image]나 [voice note 12s] 같은 라벨과 캡션만 표시되며 음성 변환도 하지 않는다.
마지막으로 이 서버는 철저히 1인용이다. 하나의 배포가 하나의 왓츠앱 계정과 한 명의 소유자에 대응한다. 각 배포가 전체 대화 내역과 계정에 대한 실시간 로그인을 품고 있기 때문에, 공유하지 말고 각자 자신의 것을 돌리라는 설계 의도가 깔려 있다. 결국 이 프로젝트는 개인 데이터를 자신의 인프라 안에서 AI 에이전트에 연결하되, 공식 지원이 없는 영역에서 약관 위반과 운영 책임을 스스로 감수하는 방식이다. 개인 생산성 실험으로는 흥미롭지만, 조직 차원의 도입이나 민감한 업무 대화에 적용하기 전에는 이 전제들을 분명히 따져볼 필요가 있다.