npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@iflow-mcp/mcp-whatsapp-web

v1.0.1

Published

TypeScript MCP server for WhatsApp using whatsapp-web.js

Readme

MCP WhatsApp Web (TypeScript)

A Model Context Protocol (MCP) server for WhatsApp Web, implemented in TypeScript. This project is a TypeScript port of the original whatsapp-mcp repository.

With this MCP server, you can:

  • Search and read your personal WhatsApp messages (including media)
  • Search your contacts
  • Send messages to individuals or groups
  • Send and receive media files (images, videos, documents, audio)

image image

Features

  • TypeScript Implementation: Fully typed codebase for better developer experience and code reliability
  • WhatsApp Web Integration: Uses whatsapp-web.js for direct connection to WhatsApp Web
  • MCP Server: Implements the Model Context Protocol for seamless integration with AI assistants
  • Media Support: Send and receive images, videos, documents, and audio messages
  • Multiple Transport Options: Supports both stdio and SSE transports for flexible integration

Architecture

This MCP server consists of:

  1. TypeScript MCP Server: Implements the Model Context Protocol to provide standardized tools for AI assistants to interact with WhatsApp
  2. WhatsApp Web Service: Connects to WhatsApp Web via whatsapp-web.js, handles authentication, and manages message sending/receiving
  3. Tool Implementations: Provides various tools for contacts, chats, messages, media, and authentication

Prerequisites

  • Node.js >= 18.0.0
  • npm or yarn
  • Chrome/Chromium (used by Puppeteer for WhatsApp Web connection)
  • FFmpeg (optional, for audio message conversion)

Installation

Manual Installation

  1. Clone this repository

    git clone https://github.com/mario-andreschak/mcp-whatsapp-web.git
    cd mcp-whatsapp-web
  2. Install dependencies

    npm install
  3. Build the project

    npm run build
  4. Configure environment variables (optional)

    Copy the example environment file and modify as needed:

    cp .env.example .env

    You can adjust logging levels and specify paths to FFmpeg if needed.

Installation with FLUJO

FLUJO provides a streamlined installation process:

  1. Navigate to the MCP section in FLUJO
  2. Click "Add Server"
  3. Copy and paste this GitHub repository URL: https://github.com/mario-andreschak/mcp-whatsapp-web
  4. Click "Parse", "Clone, "Install", "Build" and "Update Server"

FLUJO will automatically handle the cloning, dependency installation, and building process for you.

Usage

Starting the MCP Server

npm start

This will start the MCP server using stdio transport by default, which is suitable for integration with Claude Desktop or similar applications.

Important: After starting the server for the first time, you must authenticate with WhatsApp by using the get_qr_code tool and scanning the QR code with your phone. See the Authentication section for detailed instructions.

Development Mode

npm run dev

This starts the server in development mode with TypeScript watch mode and automatic server restarts.

Debugging with MCP Inspector

npm run debug

This launches the MCP Inspector tool, which provides a web interface for testing and debugging your MCP server. The inspector allows you to:

  • View all available tools and their schemas
  • Execute tools directly and see their responses
  • Test your server without needing to connect it to an AI assistant
  • Debug tool execution and inspect responses

Connecting to Claude Desktop

  1. Create a configuration file for Claude Desktop:

    {
      "mcpServers": {
        "whatsapp": {
          "command": "node",
          "args": [
            "PATH_TO/dist/index.js"
          ]
        }
      }
    }

    Replace PATH_TO with the absolute path to the repository.

  2. Save this as claude_desktop_config.json in your Claude Desktop configuration directory:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  3. Restart Claude Desktop

Connecting to Cursor

  1. Create a configuration file for Cursor:

    {
      "mcpServers": {
        "whatsapp": {
          "command": "node",
          "args": [
            "PATH_TO/dist/index.js"
          ]
        }
      }
    }

    Replace PATH_TO with the absolute path to the repository.

  2. Save this as mcp.json in your Cursor configuration directory:

    • macOS/Linux: ~/.cursor/mcp.json
    • Windows: %USERPROFILE%\.cursor\mcp.json
  3. Restart Cursor

Authentication

The first time you run the server, you'll need to authenticate with WhatsApp:

  1. Start the MCP server
  2. Important: You must use the get_qr_code tool to generate a QR code
    • In Claude or other AI assistants, explicitly ask to "use the get_qr_code tool to authenticate WhatsApp"
    • The assistant will call this tool and display the QR code image
  3. Scan the QR code with your WhatsApp mobile app
    • Open WhatsApp on your phone
    • Go to Settings > Linked Devices > Link a Device
    • Point your phone camera at the QR code displayed

Your session will be saved locally in the whatsapp-sessions directory and will be reused automatically on subsequent runs. If you don't authenticate using the QR code, you won't be able to use any WhatsApp functionality.

Authentication Status and Logout

You can check your current authentication status and manage your session:

  • Use the check_auth_status tool to verify if you're currently authenticated
  • If you need to authenticate with a different WhatsApp account or re-authenticate:
    1. Use the logout tool to log out from your current session
    2. Then use the get_qr_code tool to authenticate with a new QR code

This is particularly useful when:

  • You want to switch between different WhatsApp accounts
  • Your session has expired or been invalidated
  • You're experiencing connection issues and need to re-authenticate

Available MCP Tools

Authentication

  • get_qr_code- Get the QR code for WhatsApp Web authentication
  • check_auth_status- Check if you're currently authenticated with WhatsApp
  • logout- Log out from WhatsApp and clear the current session

Contacts

  • search_contacts- Search for contacts by name or phone number
  • get_contact- Get information about a specific contact

Chats

  • list_chats- List available chats with metadata
  • get_chat- Get information about a specific chat
  • get_direct_chat_by_contact- Find a direct chat with a specific contact

Messages

  • list_messages- Retrieve messages with optional filters
  • get_message- Get a specific message by ID
  • send_message- Send a text message to a chat

Media

  • send_file- Send a file (image, video, document) to a chat
  • send_audio_message- Send an audio message (voice note)
  • download_media- Download media from a message

Browser Process Management

This MCP server uses Puppeteer to control Chrome browsers for WhatsApp Web connectivity. The server includes a robust browser process management system to prevent orphaned Chrome processes.

Automatic Browser Cleanup

The server automatically:

  • Tracks Chrome browser processes using a PID tracking system
  • Cleans up orphaned processes on startup
  • Properly closes browser processes during shutdown
  • Maintains a record of browser PIDs in .chrome-pids.json

Manual Browser Cleanup

If you notice orphaned Chrome processes that weren't automatically cleaned up, you can use the included cleanup utility:

npm run cleanup-browsers

This utility will:

  1. Scan for Chrome processes that might be related to WhatsApp Web
  2. Display a list of potentially orphaned processes
  3. Ask for confirmation before terminating them
  4. Clean up the PID tracking file

Development

Project Structure

  • src/index.ts- Entry point
  • src/server.ts- MCP server implementation
  • src/services/whatsapp.ts- WhatsApp Web service
  • src/tools/- Tool implementations for various WhatsApp features
  • src/types/- TypeScript type definitions
  • src/utils/- Utility functions

Scripts

  • npm run build- Build the TypeScript code
  • npm run dev- Run in development mode with watch
  • npm run lint- Run ESLint
  • npm run format- Format code with Prettier
  • npm run cleanup-browsers- Detect and clean up orphaned Chrome browser processes

Troubleshooting

Authentication Issues

  • If the QR code doesn't appear, try restarting the server
  • If you're already authenticated, no QR code will be shown (use check_auth_status to verify)
  • If you need to re-authenticate, use the logout tool first, then request a new QR code
  • WhatsApp limits the number of linked devices; you may need to remove an existing device
  • If you receive a message saying "No QR code is currently available," but you're already authenticated, this is normal behavior - use check_auth_status to confirm your authentication status

Connection Issues

  • Make sure you have a stable internet connection
  • If the connection fails, try restarting the server
  • Check the logs for detailed error messages

Browser Process Issues

  • If you notice high CPU usage or memory consumption, there might be orphaned Chrome processes
  • Run npm run cleanup-browsers to detect and clean up orphaned processes
  • If the server crashes frequently, check for orphaned processes and clean them up
  • On Windows, you can also use Task Manager to look for multiple Chrome processes with "headless" in the command line
  • On Linux/macOS, use ps aux | grep chrome to check for orphaned processes

License

MIT


This project is a TypeScript port of the original whatsapp-mcp by lharries.