Guides
Notes from running an MCP server in production.
Short, opinionated explainers on MCP, npm package management, and the corners of the WhatsApp automation problem we keep running into.
Automation for WhatsApp messages that proves delivery, instead of trusting it
Most automation around WhatsApp messages stops at sending. whatsapp-mcp-macos pastes the message, hits Return, then re-reads the chat from the macOS accessibility tree and only returns verified: true if the bubble actually appeared. Walks the Swift loop line by line.
context7 mcp server, paired with a local action server: the read/write loop most guides miss
context7 is the reference half of MCP: remote, read-only, pulls up-to-date library docs. Pair it with a local action server like whatsapp-mcp-macos and you give the model the write half: it can send the message it just wrote code for. Exact ~/.claude.json, line-level source walk of the action path, and the permission model that ties the two halves together.
Install npm package globally (the lifecycle every generic guide skips)
A global npm install is not just unpack and symlink. For a package with native code, like whatsapp-mcp-macos, the os field gates the install, the postinstall script recompiles against a Swift SDK, and the global-bin symlink can end up pointing at a binary your CPU cannot run. Field notes from a real macOS install.
Manychat WhatsApp automation, and the local-agent alternative most teams never evaluate
Manychat drives WhatsApp through Meta
mcp server meaning: a child process your host forks, not a service you connect to
Every explainer calls an MCP server a
mcp tool descriptions are agent invocation protocols, not blurbs
Most guides treat the description string on an MCP tool as documentation. On a shipping WhatsApp MCP server, the description is a micro-prompt that names the next tool to call, the verification step in between, and what NOT to do. Traced through Sources/WhatsAppMCP/main.swift.
npm delete package (what the command leaves behind on macOS)
Generic npm uninstall guides delete node_modules and stop. This one walks through what actually survives when the package compiled a native binary in postinstall and was held open by a long-lived host. Worked example: whatsapp-mcp-macos and five leftovers npm never touches.
npm how to update package (when a host process is keeping it open)
Every npm update guide treats packages as inert files on disk. This one covers the case where a parent process (Claude Code, Cursor, launchd, PM2) has already spawned the package
npm-check package version (the three numbers the same install returns)
`npm-check