
whatsapp-mcp nima qiladi
whatsapp-mcp MCP bilan mos keluvchi AI agentiga WhatsApp xabarlaringizni o‘qish va qidirish imkonini beruvchi kichik serverdir. U o‘zingizning Cloudflare hisobingizda ishlaydi va telefoningizga WhatsApp Web uslubidagi ulangan qurilma sifatida ulanadi.
Dastlabki sozlashdan so‘ng Claude Code, Claude Desktop yoki boshqa MCP ilovalari kabi mijozlar quyidagi savollarga javob bera oladi:
- Dana parvozlar haqida nima dedi?
- Barcha chatlarda ijara shartnomasi tilga olingan har bir xabarni toping.
- Bu hafta oilaviy guruhda nimalarni o‘tkazib yuborganimni qisqacha bayon qiling.
Server ataylab faqat o‘qish rejimida ishlaydi: u xabarlarni yig‘ishi, qidirishi va ko‘rsatishi mumkin, ammo WhatsApp xabarlarini yubora olmaydi.
Tizim qanday ishlaydi
Telefoningiz asosiy ma’lumot manbai bo‘lib qoladi. Cloudflare joylashtiruvi ulangan qurilma sifatida ishlaydi va WhatsApp’ga faqat ma’lumotlarni sinxronlash zarur bo‘lganda yoki hisobni ulayotganingizda ulanadi.
Agent ma’lumot so‘raganida, server saqlangan nusxa o‘n daqiqadan eski bo‘lsa, WhatsApp’dan navbatdagi yangilanishlarni oladi. Rejalashtirilgan yuklab olish jarayoni ham kuniga bir marta ishlaydi. Xabarlar yig‘ilgach, server yana uziladi. Telefoningiz odatdagidek ishlashda davom etadi va bildirishnomalarni qabul qiladi.
Xabarlar hisobingizdagi Cloudflare Durable Object ichidagi SQLite ma’lumotlar bazasida saqlanadi. Server xabarlar tarixingizni tashqi saqlash xizmatiga yubormaydi.
Zarur shartlar
O‘rnatishdan oldin quyidagilarni tayyorlang:
- Workers Paid tarifidagi Cloudflare hisobi.
- Node.js 20 yoki undan keyingi versiyasi.
- Ulamoqchi bo‘lgan WhatsApp hisobingiz o‘rnatilgan telefon.
- Claude Code yoki Claude Desktop kabi MCP mijozi.
Workers’ning pullik tarifi muhim, chunki katta hajmdagi WhatsApp tarixini import qilish standart CPU limitidan oshib ketishi mumkin. Repozitoriy wrangler.jsonc faylida bu limitni oshiradi, Cloudflare esa yuqoriroq limit uchun pullik tarifni talab qiladi.
O‘rnatish va joylashtirish
Repozitoriyni klonlang, uning bog‘liqliklarini o‘rnating, kerakli KV nomlar maydonini yarating, egasi parolini saqlang va Worker’ni joylashtiring:
git clone https://github.com/finereli/whatsapp-mcp
cd whatsapp-mcp
npm install
npx wrangler kv namespace create OAUTH_KV
npx wrangler secret put OWNER_PASSWORD
npm run deployParol kamida 12 ta belgidan iborat bo‘lishi kerak. Joylashtirish tugagach, Wrangler https://whatsapp-mcp.your-name.workers.dev ga o‘xshash URL manzilini chiqaradi. Sozlashni davom ettirish uchun ushbu URL’ni oching.
Maxsus domendan foydalanmoqchi bo‘lsangiz, wrangler.jsonc faylining pastidagi izohlarga amal qiling.
WhatsApp hisobingizni ulang
Joylashtirish sahifasida qolgan sozlash bosqichlari ko‘rsatiladi.
- WhatsApp’ni ulash variantini tanlang.
- Telefoningizda WhatsApp’ni oching va Sozlamalar, Ulangan qurilmalar, keyin Qurilmani ulash bo‘limlariga o‘ting.
- Server ko‘rsatgan QR kodni skanerlang. Agar ayni telefondan foydalanayotgan bo‘lsangiz va uning ekranini skanerlay olmasangiz, telefon raqami orqali ulash variantidan foydalaning.
- Birinchi ulash jarayoni WhatsApp yangi qurilmaga taqdim etadigan tarixni import qilguncha kuting.
Sahifada import jarayoni ko‘rsatiladi va jarayon davom etayotgan paytda uni yopishingiz mumkin. Dastlabki import barcha tarixiy xabarlarni o‘z ichiga olmasligi mumkin, chunki yangi ulangan qurilmaga qaysi tarixni taqdim etishni WhatsApp belgilaydi.
MCP mijozini ulang
Claude Code’da joylashtirilgan serverni uning /mcp endpointi bilan ro‘yxatdan o‘tkazing:
claude mcp add --transport http whatsapp https://your-url/mcpKeyin Claude Code’da /mcp buyrug‘ini ishga tushiring va egasi paroli bilan kiring. Boshqa MCP mijozlari ham xuddi shu URL bilan sozlanishi kerak:
https://your-url/mcpAutentifikatsiyadan so‘ng agentdan chatlar ro‘yxatini ko‘rsatishni, xabarlarni olishni yoki tarixingizni qidirishni so‘rang.
Mavjud vositalardan foydalaning
MCP serveri mahalliy xabarlar nusxasini o‘qish va boshqarish uchun maxsus vositalarni taqdim etadi:
list_chatschatlarni eng yangisidan boshlab ko‘rsatadi; nom yoki raqam bo‘yicha ixtiyoriy filtrlashni qo‘llab-quvvatlaydi.get_messagesbitta chatdagi xabarlarni o‘qiydi va sana bo‘yicha oldinga yoki orqaga sahifalashni qo‘llab-quvvatlaydi.search_messagesbarcha chatlarda yoki tanlangan chat ichida to‘liq matnli qidiruvni amalga oshiradi.unnamed_chatsfaqat telefon raqami orqali tanilgan chatlarni topadi, eng faol chatlarga ustuvorlik beradi va boshqa kishining eng so‘nggi xabarini ko‘rsatadi.set_contact_namestelefon raqamlari uchun nomlarni saqlaydi, shunda ular guruh chatlarida ham to‘g‘ri ko‘rsatiladi.sync_nowyangi xabarlarni darhol yuklab oladi.link_statushisob ulanganmi-yo‘qmi, oxirgi sinxronlash qachon amalga oshirilgani va qancha ma’lumot saqlanayotganini ko‘rsatadi.relinkjoriy ulanishni olib tashlaydi va ulash jarayonini qaytadan boshlaydi. Saqlangan xabarlar mavjud bo‘lib qoladi.
O‘qish vositalari saqlangan nusxa o‘n daqiqadan eski bo‘lsa, avval avtomatik sinxronlanadi. Shu sababli har bir so‘rov uchun sync_now buyrug‘ini qo‘lda chaqirmasdan, tabiiy tilda so‘rov yuborishingiz mumkin.
Faqat telefon raqamlari ko‘rsatiladigan chatlarni aniqlang
Ayrim chatlar telefon raqami sifatida ko‘rinadi, chunki WhatsApp har bir ulangan qurilmaga kontakt nomini taqdim etmaydi. Bu bir martalik suhbatlar yoki WhatsApp kontaktlaringizda saqlanmagan kishilar bilan suhbatlar uchun keng tarqalgan.
Agentingizdan so‘rang:
Nomlanmagan chatlarim uchun nomlarni toping.Agent unnamed_chats vositasini chaqirishi, raqamlarni o‘zida mavjud kontaktlar integratsiyasi bilan solishtirishi va mosliklarni set_contact_names orqali yuborishi mumkin. Masalan, Google Contacts yoki Gmail ulagichi mos nomlarni taqdim etishi mumkin. Serverning o‘zi kontaktlar xizmatiga kirmaydi.
Saqlangan nomlar telefon raqami bilan bog‘lanadi va shu sababli guruh suhbatlarida ham ishlatilishi mumkin. Mos keluvchi kontakt mavjud bo‘lmasa, ayrim raqamlar nomlanmagan holda qoladi.
Media va xabarlar tarixini tushunish
Media fayllari yuklab olinmaydi. Rasmlar, ovozli qaydlar va hujjatlar [image] yoki [voice note 12s] kabi yorliqlar bilan ifodalanadi. WhatsApp taqdim etgan bo‘lsa, izohlar saqlanadi, ammo ovozli xabarlar matnga aylantirilmaydi.
Birinchi ulash WhatsApp yuborishni tanlagan barcha tarixni import qiladi. Tarix odatda har bir ulash uchun bir marta yuboriladi. Agar import to‘liq bo‘lmasa, allaqachon saqlangan xabarlarni saqlab qolgan holda, qayta ulash orqali boshqa import so‘rash mumkin. Qabul qilish jarayoni idempotent qilib ishlab chiqilgan, shuning uchun qayta import qilish qatorlarning ataylab takrorlanishiga olib kelmaydi.
Hisobni qayta ulash
WhatsApp qurilma olib tashlanganini bildirsa yoki ulash jarayonini qaytadan boshlamoqchi bo‘lsangiz, qayta ulang. Agentingizdan relink buyrug‘ini ishga tushirishni so‘rang yoki /setup manzilini ochib, Ulashni bekor qilish va qayta skanerlash bandini tanlang.
So‘ralganda yangi QR kodni skanerlang. Avval saqlangan xabarlar saqlanib qoladi, yangi ulash esa yetishmayotgan tarixni to‘ldirishi mumkin.
Kengaytirilgan konfiguratsiya
Standart joylashtirishda parol orqali autentifikatsiya ishlatiladi. Asosiy konfiguratsiya qiymatlari quyidagilarni o‘z ichiga oladi:
OWNER_PASSWORD: egasining paroli, uzunligi kamida 12 ta belgidan iborat bo‘lishi kerak.OWNER_EMAIL: login-xizmati rejimi ishlatilganda ruxsat etilgan yagona elektron pochta manzili.OPERATOR_NAME: maxfiylik sahifasida ko‘rsatiladigan ixtiyoriy ism.DEFAULT_COUNTRY_CODE: agent mamlakat kodisiz raqam saqlaganda ishlatiladigan, faqat raqamlardan iborat mamlakat kodi.LOGIN_ORIGIN: joylashtirishni login-xizmati rejimiga o‘tkazadi.ALLOWED_ORIGINS: login-xizmati tokenlari uchun qabul qilinadigan manbalar.PIN:x-pinsarlavhasi orqali himoyalangan nosozliklarni aniqlash yo‘llarini yoqadigan, ixtiyoriy, 32 yoki undan ortiq belgidan iborat qiymat.OAUTH_KVvaWA: ilova foydalanadigan KV va Durable Object bog‘lanishlari.
Domen, KV ID va elektron pochta kabi joylashtirishga xos qiymatlarni git tomonidan e’tiborga olinmaydigan wrangler.local.jsonc faylida saqlang. Mahalliy konfiguratsiyani quyidagicha joylashtiring:
npm run deploy:localSinxronlash muammolarini aniqlash
Agar PIN ni sozlasangiz, server himoyalangan diagnostika endpointlarini taqdim etadi. PIN kodni x-pin sarlavhasida yuboring:
/debugsessiya bosqichi, ulanish holati, hisoblagichlar va so‘nggi sessiya hodisalarini ko‘rsatadi./debug/pullsinxronlashni darhol boshlaydi./debug/chats?q=,/debug/messages?chat=,/debug/search?q=va/debug/typessaqlangan ma’lumotlarni tekshiradi./debug/unnamedunnamed_chatsqaytargan chatlarni ko‘rsatadi./debug/sql?q=xotiraga qarshi faqat o‘qish uchun bittaSELECTso‘rovini ishga tushiradi./debug/logoutqayta ulash bilan bir xil amalni bajaradi.
Muvaffaqiyatli joylashtirishdan so‘ng foydali tekshiruv ketma-ketligi quyidagicha: /debug bo‘sh sessiya va ulangan hisobni ko‘rsatayotganini tekshiring, /debug/pull ni ishga tushiring, so‘ng chatlar ro‘yxatini, xabarlarni olishni, to‘liq matnli qidiruvni, nomlanmagan chatlar bilan ishlashni va kontakt nomlarini tekshiring.
Mahalliy ishlab chiqish
Mahalliy ishlab chiqish uchun yetarlicha uzun parolni o‘z ichiga olgan .dev.vars faylini yarating va Worker’ni ishga tushiring:
OWNER_PASSWORD=your-12-character-or-longer-password
npm run devMahalliy ishlab chiqishda bo‘sh xotiraga ega alohida Durable Object ishlatiladi. U tizimga kirish jarayonini sinab ko‘rish va haqiqiy QR kodni ko‘rsatish imkonini beradi, ammo telefonni mahalliy tarzda ulash yana bir ulangan qurilma yaratadi.
Koddagi o‘zgarishlarni yuborishdan oldin quyidagilarni ishga tushiring:
npm run typecheck
npm testTestlar to‘plami store kodini Node 22.13 yoki undan keyingi versiyadagi Node’ning ichki SQLite tizimida ishga tushiradi. To‘liq matnli qidiruv ushbu SQLite muhitida qamrab olinmagan, shuning uchun joylashtirishdan keyin qidiruvni ham sinab ko‘ring.
Muhim xavfsizlik va platformaga oid jihatlar
Bu loyiha rasmiy WhatsApp integratsiyasi emas. WhatsApp shaxsiy xabarlarni o‘qish uchun API taqdim etmaydi va bu loyiha ochiq manbali Baileys kutubxonasi orqali WhatsApp Web bilan bir xil protokoldan foydalanadi. Bunday foydalanish WhatsApp shartlarini buzishi mumkin. Undan faqat o‘z hisobingiz bilan foydalaning va faqat o‘qish uchun ulangan qurilmada amaliy xavf past bo‘lsa-da, nolga teng emasligini yodda tuting.
Bitta joylashtirish bir kishi va bitta WhatsApp hisobi uchun mo‘ljallangan. Har bir joylashtirish to‘liq xabarlar tarixini va faol hisobga kirishni saqlaydi, shuning uchun foydalanuvchilar bitta joylashtirishni bo‘lishish o‘rniga alohida joylashtirishlarni ishga tushirishlari kerak.
Xabarlar Durable Object’ning SQLite xotirasida qoladi, ammo joylashtirish ma’lumotlariga yoki egasining autentifikatsiyasiga ega bo‘lgan har qanday kishi saqlangan tarixga kira olishi mumkin. Parol, Cloudflare hisobi, maxfiy ma’lumotlar va har qanday nosozliklarni aniqlash PIN kodini ehtiyotkorlik bilan himoya qiling.
Xulosa
whatsapp-mcp WhatsApp’ning ulangan qurilmalar protokoli va MCP mijozlari o‘rtasida amaliy ko‘prikni taqdim etadi. Uni Cloudflare’ga joylashtiring, telefoningizni bir marta ulang, agentni /mcp ga ulang va o‘zingizning xabarlar arxivingizni ko‘rish uchun search_messages, get_messages va set_contact_names kabi vositalardan foydalaning. Uning faqat o‘qishga mo‘ljallangan dizayni, shaxsiy Durable Object xotirasi, rejalashtirilgan sinxronlashi va aniq qayta ulash jarayoni joylashtirishni nazorat ostida saqlagan holda shaxsiy xabarlarni qidirish uchun mos keladi.
