Integrations
Supports integration with OpenAI Agents Python SDK, enabling OpenAI models to leverage WhatsApp functionality through the MCP interface.
Enables programmatic interaction with WhatsApp Web, providing tools for sending/receiving messages, managing contacts, creating and managing group chats, searching contacts and groups, retrieving message history, and downloading media from messages.
WhatsAppウェブMCP
モデルコンテキストプロトコル(MCP)を介してWhatsApp WebとAIモデルを接続するNode.jsアプリケーション。このプロジェクトは、WhatsAppとのプログラム的なインタラクションのための標準化されたインターフェースを提供し、AI駆動型ワークフローを通じて自動メッセージング、連絡先管理、グループチャット機能を実現します。
概要
WhatsApp Web MCP は、次の方法で WhatsApp Web と AI モデル間のシームレスな統合を実現します。
- モデルコンテキストプロトコル(MCP)による標準化されたインターフェースの作成
- WhatsApp機能へのMCPサーバーアクセスを提供
- SSEまたはコマンドモードによる柔軟な展開オプションの提供
- WhatsAppクライアントの直接統合とAPIベースの接続の両方をサポート
免責事項
重要: このツールはテスト目的のみであり、実稼働環境では使用しないでください。
WhatsApp Webプロジェクトからの免責事項:
このプロジェクトは、WhatsAppまたはその子会社、関連会社とは一切関係がなく、提携、承認、推奨、または公式な関係もありません。WhatsAppの公式ウェブサイトはwhatsapp.comです。「WhatsApp」および関連する名称、マーク、エンブレム、画像は、それぞれの所有者の登録商標です。また、この方法を使用してもブロックされないという保証はありません。WhatsAppはプラットフォーム上でボットや非公式クライアントを許可していないため、完全に安全であるとは考えられません。
学習リソース
WhatsApp Web MCP を実際のシナリオで使用する方法について詳しくは、次の記事を参照してください。
インストール
- リポジトリをクローンします。Copy
- グローバルにインストールするか、npx と一緒に使用します。Copy
- Docker でビルド:Copy
構成
コマンドラインオプション
オプション | エイリアス | 説明 | 選択肢 | デフォルト |
---|---|---|---|---|
--mode | -m | 実行モード | mcp 、 whatsapp-api | mcp |
--mcp-mode | -c | MCP接続モード | standalone 、 api | standalone |
--transport | -t | MCPトランスポートモード | sse 、 command | sse |
--sse-port | -p | SSEサーバーのポート | - | 3002 |
--api-port | - | WhatsApp APIサーバーのポート | - | 3001 |
--auth-data-path | -a | 認証データを保存するパス | - | .wwebjs_auth |
--auth-strategy | -s | 認証戦略 | local 、 none | local |
--api-base-url | -b | API モードを使用する場合の MCP の API ベース URL | - | http://localhost:3001/api |
--api-key | -k | APIモード使用時のWhatsApp Web REST APIのAPIキー | - | '' |
APIキー認証
APIモードで実行する場合、WhatsApp APIサーバーはAPIキーを使用した認証を必要とします。APIキーはWhatsApp APIサーバーの起動時に自動的に生成され、ログに表示されます。
MCP サーバーを WhatsApp API サーバーに接続するには、 --api-key
または-k
オプションを使用してこの API キーを提供する必要があります。
API キーは認証データ ディレクトリ ( --auth-data-path
で指定) に保存され、WhatsApp API サーバーの再起動後も保持されます。
認証方法
ローカル認証(推奨)
- QRコードを1回スキャンする
- 資格情報はセッション間で保持されます
- 長期運用でも安定
認証なし
- デフォルトの方法
- 起動ごとにQRコードのスキャンが必要
- テストと開発に適しています
Webhookの設定
認証データ ディレクトリ ( --auth-data-path
で指定) にwebhook.json
ファイルを作成することにより、着信 WhatsApp メッセージを受信するように webhook を構成できます。
Webhook JSON形式
設定オプション
オプション | タイプ | 説明 |
---|---|---|
url | 弦 | メッセージデータが送信されるWebhookエンドポイントURL |
authToken | 文字列(オプション) | Authorization ヘッダーに Bearer トークンとして含められる認証トークン |
filters.allowedNumbers | 配列(オプション) | メッセージを受信する電話番号のリスト。指定すると、これらの番号からのメッセージのみがWebhookをトリガーします。 |
filters.allowPrivate | ブール値(オプション) | Webhookにプライベートメッセージを送信するかどうか。デフォルト: true |
filters.allowGroups | ブール値(オプション) | グループメッセージをWebhookに送信するかどうか。デフォルト: true |
Webhookペイロード
メッセージが受信され、フィルターを通過すると、次の JSON ペイロードを含む POST リクエストが構成された URL に送信されます。
使用法
実行モード
WhatsApp API サーバー
REST エンドポイントを通じて WhatsApp 機能を公開するスタンドアロン WhatsApp API サーバーを実行します。
MCP サーバー (スタンドアロン)
WhatsApp Web に直接接続する MCP サーバーを実行します。
MCP サーバー (API クライアント)
WhatsApp API サーバーに接続する MCP サーバーを実行します。
利用可能なツール
道具 | 説明 | パラメータ |
---|---|---|
get_status | WhatsAppクライアントの接続ステータスを確認する | なし |
send_message | WhatsAppの連絡先にメッセージを送信する | number : 送信先の電話番号message : 送信するテキスト内容 |
search_contacts | 名前または番号で連絡先を検索する | query : 連絡先を見つけるための検索語 |
get_messages | 特定のチャットからメッセージを取得する | number : メッセージを取得する電話番号limit (オプション): 取得するメッセージの数 |
get_chats | WhatsAppチャットのリストを取得する | なし |
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 |
download_media_from_message | メッセージからメディアをダウンロードする | messageId : ダウンロードするメディアを含むメッセージのID |
send_media_message | WhatsAppの連絡先にメディアメッセージを送信する | number : 送信先の電話番号source : URIスキームを使用したメディアソース(URLの場合はhttp:// またはhttps:// 、ローカルファイルの場合はfile:// 使用) caption (オプション): メディアのテキストキャプション |
利用可能なリソース
リソースURI | 説明 |
---|---|
whatsapp://contacts | WhatsAppのすべての連絡先のリスト |
whatsapp://messages/{number} | 特定のチャットからのメッセージ |
whatsapp://chats | WhatsAppチャットのリスト |
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/send/media | 役職 | メディアメッセージを送信する | number : 受信者source : URIスキームを使用したメディアソース(URLの場合はhttp:// またはhttps:// 、ローカルファイルの場合はfile:// 使用) caption (オプション): テキストキャプション |
/api/messages/{messageId}/media/download | 役職 | メッセージからメディアをダウンロードする | なし |
グループマネジメント
終点 | 方法 | 説明 | パラメータ |
---|---|---|---|
/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を使用する
- WhatsApp API サーバーを起動します。Copy
- WhatsAppモバイルアプリでQRコードをスキャンします
- ログに表示される API キーをメモします。Copy
- Claude Desktop 構成に以下を追加します。Copy
オプション2: Dockerを使用する
- Docker で WhatsApp API サーバーを起動します。Copy
- WhatsAppモバイルアプリでQRコードをスキャンします
- ログに表示される API キーをメモします。Copy
- Claude Desktop 構成に以下を追加します。Copy
- Claudeデスクトップを再起動します
- WhatsApp機能はClaudeのインターフェースを通じて利用可能になります
建築
このプロジェクトは、明確な関心の分離に基づいて構成されています。
コンポーネント
- WhatsAppService : WhatsAppとやりとりするためのコアビジネスロジック
- WhatsAppApiClient : WhatsApp APIに接続するためのクライアント
- API ルーター: REST API の Express ルート
- MCP サーバー: モデルコンテキストプロトコルの実装
展開オプション
- WhatsApp API サーバー: スタンドアロン REST API サーバー
- MCPサーバー(スタンドアロン) :WhatsApp Webへの直接接続
- MCP サーバー (API クライアント) : WhatsApp API サーバーへの接続
このアーキテクチャにより、次のような柔軟な展開シナリオが可能になります。
- APIサーバーとMCPサーバーを異なるマシンで実行する
- MCP サーバーを既存の API サーバーのクライアントとして使用する
- シンプルさのためにすべてを1台のマシンで実行する
発達
プロジェクト構造
ソースから構築
テスト
このプロジェクトではユニットテストにJestを使用しています。テストを実行するには、以下の手順に従ってください。
リンティングとフォーマット
このプロジェクトでは、コードの品質とフォーマットのために ESLint と Prettier を使用しています。
リンティング構成は TypeScript のベスト プラクティスを適用し、プロジェクト全体で一貫したコード スタイルを維持します。
出版
このプロジェクトでは、npmへの自動公開にGitHub Actionsを使用しています。ワークフローは以下の処理を行います。
- バージョンの増分(
patch
、minor
、major
) - 'v' で始まるバージョンの Git タグ付け (例: v0.2.1)
- GitHub Secretsを使ってnpmに公開する
新しいバージョンをリリースするには:
- GitHubリポジトリのアクションタブに移動します
- 「パッケージを公開」ワークフローを選択する
- 「ワークフローを実行」をクリックします
- バージョン増分タイプ(パッチ、マイナー、メジャー)を選択します
- 「ワークフローを実行」をクリックして公開プロセスを開始します
このワークフローでは、GitHub リポジトリに NPM_TOKEN シークレットを設定する必要があります。
トラブルシューティング
クロードデスクトップ統合の問題
- Claudeではwweb-mcpをコマンドスタンドアロンモードで起動できません。これは、Claudeが複数のプロセスを複数回起動し、各wweb-mcpが同じWhatsApp認証を共有できないPuppeteerセッションを開く必要があるためです。この制限のため、Claudeとの適切な統合を可能にするため、アプリをMCPモードとAPIモードに分割しました。
特徴
- メッセージの送受信
- メディアメッセージの送信(画像のみ)
- メッセージからメディアをダウンロードする(画像、音声、ドキュメント)
- グループチャット管理
- 連絡先の管理と検索
- メッセージ履歴の取得
今後の機能
- すべてのメディアファイルタイプ(ビデオ、オーディオ、ドキュメント)の送信をサポート
- 一般的なシナリオ向けの強化されたメッセージ テンプレート
- 高度なグループ管理機能
- 連絡先の管理(連絡先の追加/削除)
- 強化されたエラー処理と回復
貢献
- リポジトリをフォークする
- 機能ブランチを作成する
- 変更をコミットする
- ブランチにプッシュする
- プルリクエストを作成する
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 に送信されます。
ログレベル
アプリケーションは、詳細度の順に次のログ レベルをサポートしています。
- エラー- アプリケーションの機能を妨げる重大なエラー
- 警告- アプリケーションを停止しないが注意を必要とする警告
- info - アプリケーションの状態とイベントに関する一般情報
- http - HTTP リクエスト/レスポンスのログ記録
- デバッグ- 詳細なデバッグ情報
ログレベルの設定
--log-level
または-l
フラグを使用して、アプリケーションの起動時にログ レベルを設定できます。
または、グローバルインストールを使用する場合:
コマンドモードログ
MCPコマンドモード( --mode mcp --transport command
)で実行している場合、すべてのログはstderrに出力されます。これは、stdoutをデータ出力に、stderrをログ出力と診断に使用するコマンドラインツールにとって重要です。これにより、stdoutを介したMCPプロトコル通信がログメッセージによって妨害されることがなくなります。
テスト環境
テスト環境 ( NODE_ENV=test
の場合、または Jest を使用して実行している場合) では、ロガーはテスト環境に適した動作を自動的に調整します。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
モデル コンテキスト プロトコルを介して WhatsApp Web を AI モデルに接続し、AI 駆動型ワークフローを通じて自動メッセージング、連絡先管理、グループ チャット機能を有効にする Node.js アプリケーションです。
Related MCP Servers
- AsecurityAlicenseAqualityA Python server that enables language models like Claude to interact with WhatsApp Business API through GreenAPI, supporting features like sending messages and managing groups.Last updated -54PythonMIT License
- -securityAlicense-qualityA bridge that connects WhatsApp Web to AI models using the Model Context Protocol, enabling Claude and other AI systems to interact with WhatsApp through a standardized interface.Last updated -194TypeScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server that enables Claude to interact with WhatsApp through the Evolution API, allowing for message sending, contact management, group operations, and WhatsApp instance administration.Last updated -1410TypeScriptMIT License
- AsecurityFlicenseAqualityA Node.js application that enables programmatic interaction with WhatsApp desktop on macOS, allowing users to send messages and check WhatsApp status through AppleScript automation without direct UI interaction.Last updated -32TypeScript