WhatsApp Web MCP

by fyimail
Verified
MIT License
39
2
  • Linux
  • Apple

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Provides a bridge to WhatsApp Web functionality, enabling tools to send/receive messages, search contacts, manage groups, retrieve chat histories, and perform other WhatsApp operations programmatically.

WhatsAppウェブMCP

モデルコンテキストプロトコル(MCP)を用いた、WhatsApp WebとAIモデル間の強力なブリッジ。このプロジェクトにより、ClaudeのようなAIモデルが標準化されたインターフェースを介してWhatsAppとやり取りできるようになり、プログラムによるWhatsAppのやり取りの自動化と強化が容易になります。

概要

WhatsApp Web MCP は、次の方法で WhatsApp Web と AI モデル間のシームレスな統合を実現します。

  • モデルコンテキストプロトコル(MCP)による標準化されたインターフェースの作成
  • WhatsApp機能へのMCPサーバーアクセスを提供
  • SSEまたはコマンドモードによる柔軟な展開オプションの提供
  • WhatsAppクライアントの直接統合とAPIベースの接続の両方をサポート

免責事項

重要: このツールはテスト目的のみであり、実稼働環境では使用しないでください。

WhatsApp Webプロジェクトからの免責事項:

このプロジェクトは、WhatsAppまたはその子会社、関連会社とは一切関係がなく、提携、承認、推奨、または公式な関係もありません。WhatsAppの公式ウェブサイトはwhatsapp.comです。「WhatsApp」および関連する名称、マーク、エンブレム、画像は、それぞれの所有者の登録商標です。また、この方法を使用してもブロックされないという保証はありません。WhatsAppはプラットフォーム上でボットや非公式クライアントを許可していないため、完全に安全であるとは考えられません。

インストール

  1. リポジトリをクローンします。
    git clone https://github.com/pnizer/wweb-mcp.git cd wweb-mcp
  2. グローバルにインストールするか、npx と一緒に使用します。
    # Install globally npm install -g . # Or use with npx directly npx .
  3. Docker でビルド:
    docker build . -t wweb-mcp:latest

構成

コマンドラインオプション

オプションエイリアス説明選択肢デフォルト
--mode-m実行モードmcpwhatsapp-apimcp
--mcp-mode-cMCP接続モードstandaloneapistandalone
--transport-tMCPトランスポートモードssecommandsse
--sse-port-pSSEサーバーのポート-3002
--api-port-WhatsApp APIサーバーのポート-3001
--auth-data-path-a認証データを保存するパス-.wwebjs_auth
--auth-strategy-s認証戦略localnonelocal
--api-base-url-bAPI モードを使用する場合の MCP の API ベース URL-http://localhost:3001/api
--api-key-kAPIモード使用時のWhatsApp Web REST APIのAPIキー-''

APIキー認証

APIモードで実行する場合、WhatsApp APIサーバーはAPIキーを使用した認証を必要とします。APIキーはWhatsApp APIサーバーの起動時に自動的に生成され、ログに表示されます。

WhatsApp API key: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

MCP サーバーを WhatsApp API サーバーに接続するには、 --api-keyまたは-kオプションを使用してこの API キーを提供する必要があります。

npx wweb-mcp --mode mcp --mcp-mode api --api-base-url http://localhost:3001/api --api-key 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

API キーは認証データ ディレクトリ ( --auth-data-pathで指定) に保存され、WhatsApp API サーバーの再起動後も保持されます。

認証方法

ローカル認証(推奨)

  • QRコードを1回スキャンする
  • 資格情報はセッション間で保持されます
  • 長期運用でも安定

認証なし

  • デフォルトの方法
  • 起動ごとにQRコードのスキャンが必要
  • テストと開発に適しています

使用法

実行モード

WhatsApp API サーバー

REST エンドポイントを通じて WhatsApp 機能を公開するスタンドアロン WhatsApp API サーバーを実行します。

npx wweb-mcp --mode whatsapp-api --api-port 3001

MCP サーバー (スタンドアロン)

WhatsApp Web に直接接続する MCP サーバーを実行します。

npx wweb-mcp --mode mcp --mcp-mode standalone --transport sse --sse-port 3002

MCP サーバー (API クライアント)

WhatsApp API サーバーに接続する MCP サーバーを実行します。

# First, start the WhatsApp API server and note the API key from the logs npx wweb-mcp --mode whatsapp-api --api-port 3001 # Then, start the MCP server with the API key npx wweb-mcp --mode mcp --mcp-mode api --api-base-url http://localhost:3001/api --api-key YOUR_API_KEY --transport sse --sse-port 3002

利用可能なツール

道具説明パラメータ
get_statusWhatsAppクライアントの接続ステータスを確認するなし
send_messageWhatsAppの連絡先にメッセージを送信するnumber : 送信先の電話番号message : 送信するテキスト内容
search_contacts名前または番号で連絡先を検索するquery : 連絡先を見つけるための検索語
get_messages特定のチャットからメッセージを取得するnumber : メッセージを取得する電話番号limit (オプション): 取得するメッセージの数
get_chatsWhatsAppチャットのリストを取得するなし
create_group新しいWhatsAppグループを作成するname : グループ名、 participants : 追加する電話番号の配列
add_participants_to_group既存のグループに参加者を追加するgroupId : グループのID participants : 追加する電話番号の配列
get_group_messagesグループからメッセージを取得するgroupId : グループのID limit (オプション): 取得するメッセージの数
send_group_messageグループにメッセージを送信するgroupId : グループのID message : 送信するテキストの内容
search_groups名前、説明、メンバー名でグループを検索しますquery : グループを見つけるための検索語
get_group_by_id特定のグループに関する詳細情報を取得するgroupId : 取得するグループのID

利用可能なリソース

リソースURI説明
whatsapp://contactsWhatsAppのすべての連絡先のリスト
whatsapp://messages/{number}特定のチャットからのメッセージ
whatsapp://chatsWhatsAppチャットのリスト
whatsapp://groupsすべてのWhatsAppグループのリスト
whatsapp://groups/search名前、説明、メンバー名でグループを検索します
whatsapp://groups/{groupId}/messages特定のグループからのメッセージ

REST APIエンドポイント

連絡先とメッセージ

終点方法説明パラメータ
/api/status得るWhatsAppの接続ステータスを取得するなし
/api/contacts得るすべての連絡先を取得なし
/api/contacts/search得る連絡先を検索query : 検索語
/api/chats得るすべてのチャットを取得なし
/api/messages/{number}得るチャットからメッセージを受け取るlimit (クエリ):メッセージ数
/api/send役職メッセージを送信number : 受信者message : メッセージ内容

グループマネジメント

終点方法説明パラメータ
/api/groups得るすべてのグループを取得なし
/api/groups/search得るグループを検索query : 検索語
/api/groups/create役職新しいグループを作成するname : グループ名participants : 数字の配列
/api/groups/{groupId}得る特定のグループに関する詳細情報を取得するなし
/api/groups/{groupId}/messages得るグループからメッセージを受け取るlimit (クエリ):メッセージ数
/api/groups/{groupId}/participants/add役職グループにメンバーを追加するparticipants : 数値の配列
/api/groups/send役職グループにメッセージを送信するgroupId : グループID message : メッセージの内容

AI統合

クロードデスクトップ統合

オプション1: NPXを使用する
  1. WhatsApp API サーバーを起動します。
    npx wweb-mcp -m whatsapp-api -s local
  2. WhatsAppモバイルアプリでQRコードをスキャンします
  3. ログに表示される API キーをメモします。
    WhatsApp API key: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
  4. Claude Desktop 構成に以下を追加します。
    { "mcpServers": { "whatsapp": { "command": "npx", "args": [ "wweb-mcp", "-m", "mcp", "-s", "local", "-c", "api", "-t", "command", "--api-base-url", "http://localhost:3001/api", "--api-key", "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" ] } } }
オプション2: Dockerを使用する
  1. Docker で WhatsApp API サーバーを起動します。
    docker run -i -p 3001:3001 -v wweb-mcp:/wwebjs_auth --rm wweb-mcp:latest -m whatsapp-api -s local -a /wwebjs_auth
  2. WhatsAppモバイルアプリでQRコードをスキャンします
  3. ログに表示される API キーをメモします。
    WhatsApp API key: 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
  4. Claude Desktop 構成に以下を追加します。
    { "mcpServers": { "whatsapp": { "command": "docker", "args": [ "run", "-i", "--rm", "wweb-mcp:latest", "-m", "mcp", "-s", "local", "-c", "api", "-t", "command", "--api-base-url", "http://host.docker.internal:3001/api", "--api-key", "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" ] } } }
  5. Claudeデスクトップを再起動します
  6. WhatsApp機能はClaudeのインターフェースを通じて利用可能になります

建築

このプロジェクトは、明確な関心の分離に基づいて構成されています。

コンポーネント

  1. WhatsAppService : WhatsAppとやりとりするためのコアビジネスロジック
  2. WhatsAppApiClient : WhatsApp APIに接続するためのクライアント
  3. API ルーター: REST API の Express ルート
  4. MCP サーバー: モデルコンテキストプロトコルの実装

展開オプション

  1. WhatsApp API サーバー: スタンドアロン REST API サーバー
  2. MCPサーバー(スタンドアロン) :WhatsApp Webへの直接接続
  3. MCP サーバー (API クライアント) : WhatsApp API サーバーへの接続

このアーキテクチャにより、次のような柔軟な展開シナリオが可能になります。

  • APIサーバーとMCPサーバーを異なるマシンで実行する
  • MCP サーバーを既存の API サーバーのクライアントとして使用する
  • シンプルさのためにすべてを1台のマシンで実行する

発達

プロジェクト構造

src/ ├── whatsapp-client.ts # WhatsApp Web client implementation ├── whatsapp-service.ts # Core business logic ├── whatsapp-api-client.ts # Client for the WhatsApp API ├── api.ts # REST API router ├── mcp-server.ts # MCP protocol implementation └── main.ts # Application entry point

ソースから構築

npm run build

テスト

このプロジェクトではユニットテストにJestを使用しています。テストを実行するには、以下の手順に従ってください。

# Run all tests npm test # Run tests in watch mode during development npm run test:watch # Generate test coverage report npm run test:coverage

リンティングとフォーマット

このプロジェクトでは、コードの品質とフォーマットのために ESLint と Prettier を使用しています。

# Run linter npm run lint # Fix linting issues automatically npm run lint:fix # Format code with Prettier npm run format # Validate code (lint + test) npm run validate

リンティング構成は TypeScript のベスト プラクティスを適用し、プロジェクト全体で一貫したコード スタイルを維持します。

トラブルシューティング

クロードデスクトップ統合の問題

  • Claudeではwweb-mcpをコマンドスタンドアロンモードで起動できません。これは、Claudeが複数のプロセスを複数回起動し、各wweb-mcpが同じWhatsApp認証を共有できないPuppeteerセッションを開く必要があるためです。この制限のため、Claudeとの適切な統合を可能にするため、アプリをMCPモードとAPIモードに分割しました。

今後の機能

  • 受信メッセージやその他の WhatsApp イベント用の Webhook を作成する
  • メディアファイル(画像、音声、ドキュメント)の送信をサポート
  • グループチャット管理機能
  • 連絡先の管理(連絡先の追加/削除)
  • 一般的なシナリオのメッセージテンプレート
  • 強化されたエラー処理と回復

貢献

  1. リポジトリをフォークする
  2. 機能ブランチを作成する
  3. 変更をコミットする
  4. ブランチにプッシュする
  5. プルリクエストを作成する

PR は次の点に注意してください:

  • 既存のコードスタイルに従う
  • 適切なテストを含む
  • 必要に応じてドキュメントを更新する
  • 変更点を詳しく説明します

依存関係

WhatsApp Web.js

このプロジェクトでは、WhatsApp Webブラウザアプリを介して接続するWhatsApp Web用の非公式JavaScriptクライアントライブラリであるwhatsapp-web.jsを使用しています。詳細については、 whatsapp-web.jsのGitHubリポジトリをご覧ください。

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。

ログ記録

WhatsApp Web MCPには、Winstonで構築された堅牢なログシステムが搭載されています。このログシステムは以下を提供します。

  • 複数のログ レベル (エラー、警告、情報、http、デバッグ)
  • 色分けされたログを含むコンソール出力
  • APIエンドポイントのHTTPリクエスト/レスポンスのログ記録
  • 構造化されたエラー処理
  • 環境に応じたログレベル(開発 vs. 本番)
  • MCP コマンド モードで実行している場合、すべてのログは stderr に送信されます。

ログレベル

アプリケーションは、詳細度の順に次のログ レベルをサポートしています。

  1. エラー- アプリケーションの機能を妨げる重大なエラー
  2. 警告- アプリケーションを停止しないが注意を必要とする警告
  3. info - アプリケーションの状態とイベントに関する一般情報
  4. http - HTTP リクエスト/レスポンスのログ記録
  5. デバッグ- 詳細なデバッグ情報

ログレベルの設定

--log-levelまたは-lフラグを使用して、アプリケーションの起動時にログ レベルを設定できます。

npm start -- --log-level=debug

または、グローバルインストールを使用する場合:

wweb-mcp --log-level=debug

コマンドモードログ

MCPコマンドモード( --mode mcp --transport command )で実行している場合、すべてのログはstderrに出力されます。これは、stdoutをデータ出力に、stderrをログ出力と診断に使用するコマンドラインツールにとって重要です。これにより、stdoutを介したMCPプロトコル通信がログメッセージによって妨害されることがなくなります。

テスト環境

テスト環境 ( NODE_ENV=testの場合、または Jest を使用して実行している場合) では、ロガーはテスト環境に適した動作を自動的に調整します。

-
security - not tested
A
license - permissive license
-
quality - not tested

モデル コンテキスト プロトコルを使用して WhatsApp Web を AI モデルに接続するブリッジ。これにより、Claude やその他の AI システムが標準化されたインターフェースを通じて WhatsApp と対話できるようになります。

  1. Overview
    1. Disclaimer
      1. Installation
        1. Configuration
          1. Command Line Options
          2. API Key Authentication
          3. Authentication Methods
        2. Usage
          1. Running Modes
          2. Available Tools
          3. Available Resources
          4. REST API Endpoints
          5. AI Integration
        3. Architecture
          1. Components
          2. Deployment Options
        4. Development
          1. Project Structure
          2. Building from Source
          3. Testing
          4. Linting and Formatting
        5. Troubleshooting
          1. Claude Desktop Integration Issues
        6. Upcoming Features
          1. Contributing
            1. Dependencies
              1. WhatsApp Web.js
            2. License
              1. Logging
                1. Log Levels
                2. Configuring Log Level
                3. Command Mode Logging
                4. Test Environment
              ID: pj7kagkwxl