CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
adelaidasofia avatar

WhatsApp MCP

adelaidasofia/whatsapp-mcp
55 toolsauthSTDIOregistry active
Summary

Connects Claude to WhatsApp via the whatsmeow protocol with a local Go bridge and Python MCP layer. Read chats and contacts, search messages with accent-insensitive matching, transcribe voice notes locally through whisper.cpp, and send texts with a mandatory two-step confirmation flow. SQLCipher encrypts the database at rest with keys in macOS Keychain, and every inbound message passes through a prompt injection scrubber before Claude sees it. Daily CI runs govulncheck and pip-audit. Reach for this when you need WhatsApp integrated into Claude workflows but can't accept the prompt injection and instant-send risks of lighter implementations. Ships with audit logging and no telemetry.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
inference shell
inference shell
create and run specialised agents in minutes
build now →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
inference shell
inference shell
create and run specialised agents in minutes
build now →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

55 tools
manycontacts.contextGet ManyContacts account overview: WhatsApp Business channels, contact/user/tag counts, active AI agents, and enabled features. Use this first to understand the account state.

Get ManyContacts account overview: WhatsApp Business channels, contact/user/tag counts, active AI agents, and enabled features. Use this first to understand the account state.

No parameter schema in public metadata yet.

manycontacts.contacts.listList WhatsApp Business contacts with filters (tags, team, date, unread, blacklist, scheduled). Returns paginated results.12 params

List WhatsApp Business contacts with filters (tags, team, date, unread, blacklist, scheduled). Returns paginated results.

Parameters* required
assigned_tostring
Filter by assigned user ID
blackliststring
Set to 'true' for only blacklisted contacts
date_fromstring
Filter updated after date (YYYY-MM-DD)
date_tostring
Filter updated before date (YYYY-MM-DD, max 90 days range)
limitnumber
Results per page, max 200 (default 50)
openstring
Filter by open/closed status: 'true' or 'false'
pagenumber
Page number (default 1)
scheduledstring
Set to 'true' for only contacts with pending scheduled messages
stagesstring
Comma-separated funnel stage IDs
tagsstring
Comma-separated tag IDs (contacts must have ALL tags)
teamstring
Filter by team ID
unreadstring
Set to 'true' for only contacts with unread messages
manycontacts.contacts.getGet detailed information about a WhatsApp Business contact including tags, teams, and funnel stages.1 params

Get detailed information about a WhatsApp Business contact including tags, teams, and funnel stages.

Parameters* required
phonestring
Phone number with country code, e.g. 34600000000
manycontacts.contacts.createCreate a new WhatsApp Business contact in ManyContacts CRM.3 params

Create a new WhatsApp Business contact in ManyContacts CRM.

Parameters* required
namestring
Contact display name
notesstring
Internal notes about the contact
phonestring
Phone number with country code, e.g. 34600000000
manycontacts.contacts.updateUpdate an existing WhatsApp Business contact (name, notes, custom fields).4 params

Update an existing WhatsApp Business contact (name, notes, custom fields).

Parameters* required
customFieldsstring
Custom fields as JSON string
namestring
New contact name
notesstring
New contact notes
phonestring
Phone number with country code, e.g. 34600000000
manycontacts.contacts.deleteDelete a WhatsApp Business contact from ManyContacts CRM.1 params

Delete a WhatsApp Business contact from ManyContacts CRM.

Parameters* required
phonestring
Phone number with country code, e.g. 34600000000
manycontacts.contacts.assignAssign a WhatsApp Business contact to a team member.2 params

Assign a WhatsApp Business contact to a team member.

Parameters* required
phonestring
Phone number with country code, e.g. 34600000000
userIdstring
User ID to assign the contact to
manycontacts.contacts.unassignUnassign a WhatsApp Business contact (remove current user assignment).1 params

Unassign a WhatsApp Business contact (remove current user assignment).

Parameters* required
phonestring
Phone number with country code, e.g. 34600000000
manycontacts.contacts.closeClose a WhatsApp Business conversation.1 params

Close a WhatsApp Business conversation.

Parameters* required
phonestring
Phone number with country code, e.g. 34600000000
manycontacts.contacts.openReopen a closed WhatsApp Business conversation.1 params

Reopen a closed WhatsApp Business conversation.

Parameters* required
phonestring
Phone number with country code, e.g. 34600000000
manycontacts.contacts.tag.addAdd a tag to a WhatsApp Business contact.2 params

Add a tag to a WhatsApp Business contact.

Parameters* required
phonestring
Phone number with country code, e.g. 34600000000
tagIdstring
Tag ID to add
manycontacts.contacts.tag.removeRemove a tag from a WhatsApp Business contact.2 params

Remove a tag from a WhatsApp Business contact.

Parameters* required
phonestring
Phone number with country code, e.g. 34600000000
tagIdstring
Tag ID to remove
manycontacts.contacts.team.addAdd a team to a WhatsApp Business contact.2 params

Add a team to a WhatsApp Business contact.

Parameters* required
phonestring
Phone number with country code, e.g. 34600000000
teamIdstring
Team ID to add
manycontacts.contacts.team.removeRemove a team from a WhatsApp Business contact.2 params

Remove a team from a WhatsApp Business contact.

Parameters* required
phonestring
Phone number with country code, e.g. 34600000000
teamIdstring
Team ID to remove
manycontacts.contacts.set_stageMove a WhatsApp Business contact to a funnel/pipeline stage.3 params

Move a WhatsApp Business contact to a funnel/pipeline stage.

Parameters* required
funnel_idstring
Funnel ID
phonestring
Phone number with country code, e.g. 34600000000
stage_idstring
Stage ID within the funnel
manycontacts.contacts.bulkPerform bulk operations on multiple WhatsApp Business contacts (close, open, assign, add_tag, add_team).3 params

Perform bulk operations on multiple WhatsApp Business contacts (close, open, assign, add_tag, add_team).

Parameters* required
actionstring
Bulk action: close, open, assign, add_tag, or add_team
phonesstring
Comma-separated phone numbers
valuestring
Value for action (user_id for assign, tag_id for add_tag, team_id for add_team)
manycontacts.messages.listList WhatsApp Business messages for a contact. Shows the conversation history with timestamps and status.3 params

List WhatsApp Business messages for a contact. Shows the conversation history with timestamps and status.

Parameters* required
limitnumber
Messages per page (default 50)
pagenumber
Page number (default 1)
phonestring
Phone number with country code, e.g. 34600000000
manycontacts.messages.send.textSend a WhatsApp Business text message to a phone number.2 params

Send a WhatsApp Business text message to a phone number.

Parameters* required
bodystring
Message text to send
phonestring
Phone number with country code, e.g. 34600000000
manycontacts.messages.send.noteSend an internal note on a WhatsApp Business contact (not visible to the contact).2 params

Send an internal note on a WhatsApp Business contact (not visible to the contact).

Parameters* required
bodystring
Internal note text
phonestring
Phone number with country code, e.g. 34600000000
manycontacts.messages.send.templateSend a WhatsApp Business template message (for outbound messaging outside the 24h window).3 params

Send a WhatsApp Business template message (for outbound messaging outside the 24h window).

Parameters* required
phonestring
Phone number with country code, e.g. 34600000000
templateIdstring
Template ID to send
variablesstring
Template variables as JSON array, e.g. '["John","20%"]'
manycontacts.templates.listList WhatsApp Business message templates. Templates are required for sending messages outside the 24h conversation window.1 params

List WhatsApp Business message templates. Templates are required for sending messages outside the 24h conversation window.

Parameters* required
statusstring
Filter by template status: approved, pending, or rejected
manycontacts.templates.getGet details of a specific WhatsApp Business message template including components and configuration.1 params

Get details of a specific WhatsApp Business message template including components and configuration.

Parameters* required
idstring
Template ID
manycontacts.templates.syncSync WhatsApp Business templates from Meta Cloud API. Fetches the latest templates from the connected WhatsApp Business account.

Sync WhatsApp Business templates from Meta Cloud API. Fetches the latest templates from the connected WhatsApp Business account.

No parameter schema in public metadata yet.

manycontacts.campaigns.listList WhatsApp Business bulk messaging campaigns with statistics (sent, delivered, read, failed counts).

List WhatsApp Business bulk messaging campaigns with statistics (sent, delivered, read, failed counts).

No parameter schema in public metadata yet.

manycontacts.campaigns.createCreate a WhatsApp Business bulk messaging campaign. Sends a template message to a list of phone numbers at a scheduled time.5 params

Create a WhatsApp Business bulk messaging campaign. Sends a template message to a list of phone numbers at a scheduled time.

Parameters* required
datestring
Scheduled send date in ISO format, e.g. 2026-12-01T09:00:00
namestring
Campaign name
phonesstring
Comma-separated phone numbers to send to
templateIdstring
WhatsApp template ID to use
variablesstring
Template variables as JSON array, e.g. '["John","20%"]'
manycontacts.campaigns.deleteDelete a WhatsApp Business campaign.1 params

Delete a WhatsApp Business campaign.

Parameters* required
idstring
Campaign ID to delete
manycontacts.org.getGet WhatsApp Business organization/account information (name, timezone, settings).

Get WhatsApp Business organization/account information (name, timezone, settings).

No parameter schema in public metadata yet.

manycontacts.org.updateUpdate WhatsApp Business organization settings (timezone, auto-reply, webhooks, etc.).10 params

Update WhatsApp Business organization settings (timezone, auto-reply, webhooks, etc.).

Parameters* required
auto_reply_awayboolean
Enable away auto-reply
auto_reply_away_textstring
Away auto-reply text
auto_reply_closeboolean
Enable auto-reply on chat close
auto_reply_close_minutesnumber
Minutes before auto-close
auto_reply_close_textstring
Auto-reply text when chat closes
auto_reply_openboolean
Enable auto-reply on chat open
auto_reply_open_textstring
Auto-reply text when chat opens
timezonestring
Timezone, e.g. Europe/Madrid
webhooks_forwardboolean
Enable webhook forwarding
webhooks_forward_urlstring
Webhook forward URL
manycontacts.org.schedule.getGet the business hours schedule for the WhatsApp Business account.

Get the business hours schedule for the WhatsApp Business account.

No parameter schema in public metadata yet.

manycontacts.org.apikeyGet the organization API key.

Get the organization API key.

No parameter schema in public metadata yet.

manycontacts.channels.listList connected WhatsApp Business and Instagram channels.

List connected WhatsApp Business and Instagram channels.

No parameter schema in public metadata yet.

manycontacts.tags.listList all tags for categorizing WhatsApp Business contacts.

List all tags for categorizing WhatsApp Business contacts.

No parameter schema in public metadata yet.

manycontacts.tags.createCreate a new tag for WhatsApp Business contacts.2 params

Create a new tag for WhatsApp Business contacts.

Parameters* required
colorstring
Tag color hex, e.g. #ff0000 (default #fab1a0)
namestring
Tag name
manycontacts.tags.updateUpdate an existing WhatsApp Business contact tag.3 params

Update an existing WhatsApp Business contact tag.

Parameters* required
colorstring
New tag color hex
idstring
Tag ID
namestring
New tag name
manycontacts.tags.deleteDelete a WhatsApp Business contact tag.1 params

Delete a WhatsApp Business contact tag.

Parameters* required
idstring
Tag ID to delete
manycontacts.teams.listList teams in the WhatsApp Business organization.

List teams in the WhatsApp Business organization.

No parameter schema in public metadata yet.

manycontacts.teams.createCreate a new team in the WhatsApp Business organization.1 params

Create a new team in the WhatsApp Business organization.

Parameters* required
namestring
Team name
manycontacts.teams.add_memberAdd a user to a team.2 params

Add a user to a team.

Parameters* required
teamIdstring
Team ID
userIdstring
User ID to add
manycontacts.teams.remove_memberRemove a user from a team.2 params

Remove a user from a team.

Parameters* required
teamIdstring
Team ID
userIdstring
User ID to remove
manycontacts.teams.deleteDelete a team from the WhatsApp Business organization.1 params

Delete a team from the WhatsApp Business organization.

Parameters* required
idstring
Team ID to delete
manycontacts.funnels.listList sales funnels/pipelines for organizing WhatsApp Business contacts by stage.

List sales funnels/pipelines for organizing WhatsApp Business contacts by stage.

No parameter schema in public metadata yet.

manycontacts.funnels.createCreate a new sales funnel/pipeline for WhatsApp Business contacts.1 params

Create a new sales funnel/pipeline for WhatsApp Business contacts.

Parameters* required
namestring
Funnel name
manycontacts.funnels.add_stageAdd a stage to a sales funnel/pipeline.3 params

Add a stage to a sales funnel/pipeline.

Parameters* required
funnelIdstring
Funnel ID
namestring
Stage name
ordernumber
Stage order position
manycontacts.funnels.update_stageUpdate a stage in a sales funnel/pipeline.3 params

Update a stage in a sales funnel/pipeline.

Parameters* required
funnelIdstring
Funnel ID
namestring
New stage name
stageIdstring
Stage ID to update
manycontacts.funnels.contactsList contacts in a funnel/pipeline, optionally filtered by stage.4 params

List contacts in a funnel/pipeline, optionally filtered by stage.

Parameters* required
funnelIdstring
Funnel ID
limitnumber
Results per page
pagenumber
Page number
stage_idstring
Filter by stage ID
manycontacts.funnels.deleteDelete a sales funnel/pipeline.1 params

Delete a sales funnel/pipeline.

Parameters* required
idstring
Funnel ID to delete
manycontacts.users.listList team members/users in the WhatsApp Business organization.

List team members/users in the WhatsApp Business organization.

No parameter schema in public metadata yet.

manycontacts.users.getGet details of a specific team member/user.1 params

Get details of a specific team member/user.

Parameters* required
idstring
User ID
manycontacts.users.updateUpdate a team member/user profile.2 params

Update a team member/user profile.

Parameters* required
idstring
User ID
namestring
User name
manycontacts.users.inviteInvite a new team member to the WhatsApp Business organization.1 params

Invite a new team member to the WhatsApp Business organization.

Parameters* required
emailstring
Email address to invite
manycontacts.users.deleteRemove a team member from the WhatsApp Business organization.1 params

Remove a team member from the WhatsApp Business organization.

Parameters* required
idstring
User ID to remove
manycontacts.ai_agents.listList AI agents configured to auto-respond to WhatsApp Business messages.

List AI agents configured to auto-respond to WhatsApp Business messages.

No parameter schema in public metadata yet.

manycontacts.ai_agents.getGet details of a specific WhatsApp AI agent including scenarios and configuration.1 params

Get details of a specific WhatsApp AI agent including scenarios and configuration.

Parameters* required
idstring
AI Agent ID (UUID)
manycontacts.ai_agents.updateUpdate a WhatsApp AI agent's configuration (instructions, active status, etc.).5 params

Update a WhatsApp AI agent's configuration (instructions, active status, etc.).

Parameters* required
activeboolean
Enable or disable the agent
block_1string
Agent instructions block 1
block_2string
Agent instructions block 2
block_3string
Agent instructions block 3
idstring
AI Agent ID (UUID)
manycontacts.ai_agents.feedbackGet feedback/conversation logs for a WhatsApp AI agent.1 params

Get feedback/conversation logs for a WhatsApp AI agent.

Parameters* required
idstring
AI Agent ID (UUID)

whatsapp-mcp

License GitHub stars Last commit Open issues PyPI version PyPI downloads Built by Mycelium AI

A WhatsApp MCP server for Claude, built directly on whatsmeow. Encrypted at rest, prompt-injection-scrubbed, draft-and-confirm on every send, full audit trail, daily CI security gates. Actively maintained.

Why this one?

The most-starred WhatsApp MCP (lharries/whatsapp-mcp, 5.6K stars) is the architectural reference for this pattern, but has not shipped since July 2025 and leaves the lethal-trifecta problem entirely to the user. This implementation closes the gaps:

CanonicalThis implementation
Last shippedJuly 2025Active
DB encryptionPlain SQLiteSQLCipher with key in the platform secret store (macOS Keychain / Windows Credential Manager / libsecret)
Prompt-injection scrubberNoneEvery inbound message
Send safetyFires immediatelyMandatory confirm_send between draft and delivery
Audit logNoneEvery tool call, 30-day retention
Voice notesNot transcribedwhisper.cpp local, Spanish-tuned default
LID alias resolutionOpen issue cluster upstreamShipped, with backfill migration for legacy threads
CI securityNonegovulncheck + pip-audit + Dependabot, daily

Not a fork. The Go bridge is built directly against whatsmeow; the Python MCP layer and SQLite schema are original. Other implementations (lharries, LukasHaas, verygoodplugins) were read as reference only.

What this gives you

Claude can:

  • Read your WhatsApp chats, messages, and contacts
  • Search messages with accent-insensitive, typo-tolerant matching
  • Transcribe voice notes locally via whisper.cpp (Spanish-tuned by default)
  • Resolve LID (Linked IDentifier) names instead of numeric placeholders
  • Send text messages, reactions, and reply-quotes, with a mandatory confirm_send step between draft and delivery
  • Pull matching CRM context from your Obsidian vault when reading a chat
  • See only prompt-injection-scrubbed message text, never raw adversarial input

Everything runs locally on your machine. No cloud sync. No telemetry. Optional OpenAI Whisper backend is opt-in, off by default.

Architecture

Two components, both local:

  • whatsapp-bridge/ (Go). Binds to 127.0.0.1 only. Wraps whatsmeow for the WhatsApp Web multidevice protocol. Owns SQLite persistence with SQLCipher encryption. Handles QR and pairing-code auth (live-refreshing terminal QR with Windows-safe rendering, plus a headless auth API — GET /api/auth/qr, POST /api/auth/pair-phone, POST /api/auth/reconnect — so a GUI or supervisor can drive pairing without a terminal), media up/download, session recovery from StreamReplaced conflicts, call history capture. Exposes a REST API the Python MCP layer consumes.
  • whatsapp-mcp-server/ (Python, FastMCP). Consumes the Go bridge REST API. Exposes 11 MCP tools to Claude: full read surface (chats, messages, contacts), accent-insensitive search, presence (typing, online, mark-read), and text-send + reactions + reply-quotes with mandatory confirm_send. Runs via uv and stdio transport.

Install

Open Claude Code, paste:

/plugin marketplace add adelaidasofia/whatsapp-mcp
/plugin install whatsapp-mcp@whatsapp-mcp

This installs the Python MCP server side. The Go bridge still needs the one-time QR pairing flow with your phone — see the legacy install block below for those steps.

Manual install (full Go bridge + QR pairing)

See SETUP.md for step-by-step install per OS. In short:

  1. Grab a prebuilt bridge binary from Releases (Windows/macOS/Linux — no compiler needed), or build from source (Go 1.26+ and a C toolchain)
  2. Python 3.11+ and uv for the MCP server layer
  3. Clone this repo; verify with scripts/check_prerequisites.sh (Windows: scripts\check_prerequisites.ps1)
  4. Start the bridge: ./bin/whatsapp-bridge (Windows: .\bin\whatsapp-bridge.exe)
  5. Scan the QR (it refreshes in place — always scan the one on screen), or pair by typed code with --pair-phone +15551234567
  6. Register the MCP in your Claude Code .mcp.json
  7. Restart Claude Code

FFmpeg and whisper.cpp are only needed if you enable voice-note transcription (off by default).

Configuration

All configurable via environment variables. See .env.example for the full list.

Key variables:

VariableDefaultPurpose
WHATSAPP_BRIDGE_PORT8080Go bridge REST API port
WHATSAPP_DB_PATH$HOME/.claude/whatsapp-mcp/store/messages.dbEncrypted SQLite database
WHATSAPP_MEDIA_PATH$HOME/.claude/whatsapp-mcp/media/Media file storage
WHATSAPP_VAULT_CRM_PATHemptyAbsolute path to your vault CRM folder for auto-injection (e.g., Obsidian 👤 CRM/). When unset, CRM injection is disabled.
WHATSAPP_WHISPER_BACKENDoffoff (zero-config boot), local-cpp (private, needs a whisper model), or openai-api (opt-in)
WHATSAPP_WHISPER_API_KEYemptyRequired only when backend is openai-api
WHATSAPP_WHISPER_MODELlarge-v3whisper.cpp model name
WHATSAPP_SCRUB_PROMPT_INJECTIONtrueStrip known prompt-injection patterns from incoming messages before Claude sees them
WHATSAPP_AUDIT_LOGtrueLog every tool call to audit.log
WHATSAPP_ENCRYPT_DBtrueEnable SQLCipher DB encryption; key in the platform secret store (macOS Keychain / Windows Credential Manager / libsecret)
WHATSAPP_DB_KEYemptyExplicit 64-hex-char SQLCipher key override (skips the platform store). Escape hatch for headless/CI/custom secret managers, and the recovery path when the secret store cannot be read — see below

The DB key and WHATSAPP_DB_KEY

With WHATSAPP_ENCRYPT_DB=true (the default), the bridge encrypts the message store with a 256-bit SQLCipher key kept in the platform secret store. The key lifecycle is deliberately conservative, because a wrong key silently orphans every stored message:

  • A fresh key is minted only when the secret store definitively answers "no such item" (macOS errSecItemNotFound, Windows ERROR_NOT_FOUND, libsecret clean miss) and no non-empty store database exists yet.
  • Any other failed read — locked keychain, no D-Bus session, revoked access — makes the bridge exit with an error instead of minting: the key may still exist, and overwriting it would make the encrypted store permanently undecryptable. The error names the fix (e.g. security unlock-keychain).
  • If the secret store has no key but a populated store database exists, the bridge also refuses to mint and asks you to supply the original key.

WHATSAPP_DB_KEY (64 hex chars = 32 bytes, e.g. openssl rand -hex 32) is the escape hatch for all of these: when set, it is used directly and the platform secret store is never touched. Use it for headless/CI machines, custom secret managers, restoring a store on a new machine, or booting while the platform store is unavailable.

Security

This MCP is the highest-trust component in your Claude stack because every WhatsApp message you receive flows through it. See SECURITY.md for the threat model, tool risk-tier classification, and the full list of hardening decisions.

Short version:

  • Bridge binds to 127.0.0.1 only, never 0.0.0.0
  • SQLite encrypted at rest with SQLCipher; key stored in the platform secret store (macOS Keychain / Windows Credential Manager / libsecret), with an explicit WHATSAPP_DB_KEY escape hatch
  • Every tool call logged to audit.log with 30-day retention
  • Send tools require an explicit confirm_send step between draft and delivery
  • Incoming message text passes through a prompt-injection scrubber before Claude sees it
  • whatsmeow pinned to a specific commit; upgrades require diff review
  • No telemetry, no external API calls by default

Status

v0.1.0, actively maintained.

Shipped: live-refreshing QR (in-place redraw on rotation, Windows-safe rendering, auto fresh batch on expiry) + pairing-code auth (typed 8-char code, Android + iOS) + headless auth API for supervisors, full read surface (chats, messages, contacts), accent-insensitive NFD-normalized search, LID alias resolution with backfill migration for legacy threads, Baileys-store import for one-shot history migration, vault-format markdown export, local whisper.cpp voice transcription, presence (typing, online, mark-read), text-send with mandatory confirm_send, reactions, reply-quotes, prompt-injection scrubber, SQLCipher-encrypted persistence with macOS Keychain key handling, audit log, CI security gates.

Not yet shipped: media-send (image, document), audio-message-send (FFmpeg-Opus path), group broadcast helpers.

See CHANGELOG.md for full history.

MCP Registry

Published on the official MCP Registry under io.github.adelaidasofia/whatsapp-mcp. Two live channels:

  • .mcpb bundle (canonical, recommended) — one-click install in Claude Desktop / Cursor / any MCPB-aware client. Published as a GitHub release artifact at releases/latest/download/whatsapp-mcp.mcpb. The release manifest carries the SHA256 for tamper detection.
  • PyPI package (adelaidasofia-whatsapp-mcp) — historical; available via uvx adelaidasofia-whatsapp-mcp for stdio-installer flows. The unprefixed names (whatsapp-mcp, whatsapp-mcp-server) are taken by unrelated projects on PyPI, hence the username-prefixed namespace.

The verification marker mcp-name: io.github.adelaidasofia/whatsapp-mcp is embedded in this README (HTML comment near the top) so the registry can verify package-to-server ownership at publish time.

Publishing pipeline: built and shipped via the Mycelium MCP publishing pipeline (two-phase: .mcpb bundle build, then gh release + mcp-publisher publish). The same pipeline produced all 16 sibling MCPs in this family.

Related MCPs

Same author, same architecture pattern (FastMCP, draft+confirm on writes where applicable, vault auto-export, MIT):

  • slack-mcp — multi-workspace Slack
  • imessage-mcp — macOS iMessage
  • google-workspace-mcp — Gmail / Calendar / Drive / Docs / Sheets
  • apollo-mcp — Apollo.io CRM + sequences
  • substack-mcp — Substack writing + analytics
  • luma-mcp — lu.ma events
  • parse-mcp — markitdown / Docling / LlamaParse router
  • rescuetime-mcp — RescueTime productivity data
  • graph-query-mcp — vault knowledge graph queries
  • graph-autotagger-mcp — wikilink suggestions from the graph
  • investor-relations-mcp — seed-raise pipeline tracker
  • vault-sync-mcp — bidirectional vault sync

Telemetry

This plugin sends a single anonymous install signal to myceliumai.co the first time it loads in a Claude Code session on a given machine.

What is sent:

  • Plugin name (e.g. slack-mcp)
  • Plugin version (e.g. 0.1.0)

What is NOT sent:

  • No user identifiers, names, emails, tokens, or API keys
  • No file paths, message content, or anything from your work
  • No IP address is stored after dedup processing

Why: Helps the maintainer know which plugins people actually install, so attention goes to the ones that get used.

Opt out: Set the environment variable MYCELIUM_NO_PING=1 before launching Claude Code. The hook will skip the network call entirely. Already-pinged installs leave a sentinel at ~/.mycelium/onboarded-<plugin> — delete it if you want to reset state.

License

MIT. See LICENSE.

Not affiliated with WhatsApp or Meta

WhatsApp is a trademark of Meta Platforms, Inc. This project is an independent open-source tool that uses WhatsApp's public web-multidevice protocol. Use of this tool may violate WhatsApp's Terms of Service. Use at your own risk. The authors provide no warranty and accept no liability for account suspension, data loss, or other consequences.


Built by Mycelium AI. MIT license.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
inference shell
inference shell
create and run specialised agents in minutes
build now →
Granola, the best AI meeting recorder
Granola, the best AI meeting recorder
Notes, actions and memory. Without a meeting bot. First month 100% off.
Download for free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

WHATSAPP_BRIDGE_HOSTdefault: 127.0.0.1

Hostname for the Go bridge REST API.

WHATSAPP_BRIDGE_PORTdefault: 8080

Port for the Go bridge REST API.

WHATSAPP_VAULT_CRM_PATH

Absolute path to a vault CRM folder for auto-injection (e.g., Obsidian 'CRM/'). When unset, CRM injection is disabled.

WHATSAPP_WHISPER_BACKENDdefault: local-cpp

Voice-note transcription backend. 'local-cpp' (default, private) or 'openai-api' (opt-in).

WHATSAPP_WHISPER_API_KEYsecret

OpenAI API key. Required only when WHATSAPP_WHISPER_BACKEND=openai-api.

WHATSAPP_WHISPER_MODELdefault: large-v3

whisper.cpp model name. Only used when backend is local-cpp.

WHATSAPP_SCRUB_PROMPT_INJECTIONdefault: true

Strip known prompt-injection patterns from incoming messages before the LLM sees them.

WHATSAPP_AUDIT_LOGdefault: true

Log every tool call to audit.log.

WHATSAPP_ENCRYPT_DBdefault: true

Enable SQLCipher DB encryption with the key sourced from macOS Keychain.

Categories
Communication & MessagingMedia & Entertainment
Registryactive
Packageadelaidasofia-whatsapp-mcp
TransportSTDIO
AuthRequired
UpdatedMay 20, 2026
View on GitHub

More from adelaidasofia

  • Multi-workspace Slack MCP server with draft+confirm safety, vault auto-export, a1
  • FastMCP seed raise pipeline tracker — syncs from Obsidian CRM, generates meeting
  • FastMCP server for Obsidian wikilink suggestions from a pre-computed knowledge g
  • Local-first personal finance MCP
  • lu
  • One MCP, many parsers
  • Self-hosted GitHub MCP server
  • FastMCP server for bidirectional sync between personal and team Obsidian vaults
  • FastMCP server that pages on-call via 100+ notification channels (Apprise wrappe
  • MCP server for RescueTime productivity data
  • Linear MCP (multi-workspace, PAT auth)
  • FastMCP server for surgical queries against a vault knowledge graph (NetworkX no2
  • FastMCP server for Apollo1
  • FastMCP server for Substack — publish Notes and posts, pull analytics, manage dr1
  • macOS-only MCP server that exposes iMessage chat1
  • Multi-account MCP for Gmail, Calendar, Drive, Docs, and Sheets — 61 tools, token1

Related Communication & Messaging MCP Servers

View all →
danushkumar-v avatar
Danushkumar V Mcp Discord

ai.smithery/danushkumar-v-mcp-discord

An MCP server that integrates with Discord to provide AI-powered features.
faithk7 avatar
Faithk7 Gmail Mcp

ai.smithery/faithk7-gmail-mcp

Manage Gmail messages, threads, labels, drafts, and settings from your workflows. Send and organiz…
sebastianall1977 avatar
Sebastianall1977 Gmail Mcp

ai.smithery/sebastianall1977-gmail-mcp

Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflow…
smithery-ai avatar
Smithery Ai Slack

ai.smithery/smithery-ai-slack

Enable interaction with Slack workspaces. Supports subscribing to Slack events through Resources.
casa.find-me.sub1 avatar
Cool property search server!

casa.find-me.sub1/send-email-mcp

Non functional server (yet)
mumo-chat avatar
Mcp

chat.mumo/mcp

Consult a multi-model panel on contested decisions via MCP: architecture, plan review, strategy.