Loading...
What WhatsApp MCP — Hebrew-Compatible Fork can do
SQLite LOWER() only handles ASCII — instr() handles everything
The upstream repo uses LOWER(column) LIKE LOWER(?) for text search. This silently breaks for Hebrew, Arabic, emoji, and CJK because SQLite's LOWER() only converts A-Z. Our fork replaces this with instr()-based matching: instr(LOWER(content), LOWER(?)) > 0 OR instr(content, ?) > 0. The dual check handles both case-insensitive Latin matches and direct Unicode byte-level matching. Applied to contact search, message content search, and chat listing.
# Upstream (broken for Hebrew):
WHERE LOWER(chats.name) LIKE LOWER(?)
# → "שלום" passes through LOWER() unchanged
# → LIKE fails to match substrings
# Our fork (works for all Unicode):
WHERE instr(LOWER(chats.name), LOWER(?)) > 0
OR instr(chats.name, ?) > 0
# → instr() does byte-level substring match
# → Works for Hebrew, Arabic, emoji, CJKThe fix across 3 search functions: list_chats, list_messages, search_contacts
Personal and business WhatsApp from one MCP server
The MCP server auto-detects which bridge database to use. If whatsapp-bridge-business/store/messages.db exists, it uses the business bridge. Otherwise it falls back to whatsapp-bridge/store/messages.db. Override with WHATSAPP_DB_PATH and WHATSAPP_API_URL env vars. Run both bridges simultaneously on different ports (8741 personal, 8742 business).
def _default_db_path():
# Check for business bridge first
biz = "whatsapp-bridge-business/store/messages.db"
personal = "whatsapp-bridge/store/messages.db"
if os.path.exists(biz):
return biz
return personal
# Override with env vars:
# WHATSAPP_DB_PATH=".../messages.db"
# WHATSAPP_API_URL="http://localhost:8742/api"Auto-detection with env var override for explicit control
Let Claude read everything, but only send to you
Set WHATSAPP_OWNER_JID to your phone number to restrict all send operations (send_message, send_file, send_audio_message) to your own Saved Messages. Claude can read and search all chats for context, but can't accidentally message your contacts. Phone numbers are normalized (strips +, whitespace, appends @s.whatsapp.net).
Full read + write access to WhatsApp
9 query tools for reading messages, searching contacts, listing chats, getting context around specific messages, and downloading media. 4 write tools for sending text messages, files (images, videos, documents), and voice messages with automatic Opus/OGG conversion via FFmpeg.
Community contribution opportunities
Potential features for this fork or upstream contribution. Message reactions (send/receive emoji). Quote/reply with structured reply-to. Read receipts checking. Media type filtering (all images from chat X). Auto-translation between Hebrew and English via local LLM. Real-time webhooks instead of polling SQLite. Contact categorization and tagging.