local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Connects to a personal WhatsApp account to search messages, access contacts, list recent chats, retrieve message history, and send messages to individuals or groups.
WhatsApp MCP サーバー (TypeScript/Baileys)
これは、TypeScript で構築され、 @whiskeysockets/baileys
ライブラリを使用した WhatsApp 用の Model Context Protocol (MCP) サーバーです。
これにより、個人の WhatsApp アカウントを AI エージェント (デスクトップ アプリまたは Cursor 経由の Anthropic Claude など) に接続して、次のことが可能になります。
- 個人の WhatsApp メッセージを検索します。
- 連絡先を検索します(グループではなく個人)。
- 最近のチャットを一覧表示します。
- 特定のチャットのメッセージ履歴を取得します。
- 個人またはグループにメッセージを送信します。
WhatsApp WebマルチデバイスAPIを使用して、個人のWhatsAppアカウントに直接接続します。すべてのメッセージと認証情報は、SQLiteデータベース( ./data/
)と認証キャッシュ( ./auth_info/
)にローカルに保存されます。接続されたAIエージェントにデータが送信されるのは、エージェントがMCPツール(エージェントのインターフェースから制御)を明示的に使用した場合のみです。
(オプション:ここに参照例に類似したスクリーンショットまたは GIF を追加することを検討してください)
例
ユーザー: WhatsAppで「Meu amor」に「Te amo」というメッセージを送信します
**アシスタント:**わかりました。まずは連絡先を検索する必要があります。使用ツール: whatsapp.search_contacts
ツールの結果:
**アシスタント:**連絡先が見つかりました。メッセージを送信しています。使用ツール: whatsapp.send_message
ツールの結果:
主な機能(MCPツール)
サーバーは、接続された AI エージェントに次のツールを公開します。
search_contacts
: 名前または電話番号部分 (JID) で連絡先を検索します。list_messages
: ページ区切りを付けて、特定のチャットのメッセージ履歴を取得します。list_chats
: チャットを一覧表示します。アクティビティまたは名前で並べ替え可能で、フィルタリング可能、ページ区切りで、オプションで最後のメッセージの詳細が含まれます。get_chat
: 特定のチャットの詳細情報を取得します。get_message_context
: コンテキストの特定のメッセージ ID の直前と直後に送信されたメッセージを取得します。send_message
: 指定された受信者 JID (ユーザーまたはグループ) にテキスト メッセージを送信します。
インストール
前提条件
- **Node.js:**バージョン 23.10.0 以上(
package.json
に指定)。バージョンはnode -v
で確認できます。(TypeScript と SQLite の初期サポートが組み込まれています) - npm (または yarn/pnpm): 通常は Node.js に付属しています。
- AI クライアント: Anthropic Claude デスクトップ アプリ、Cursor、Cline、Roo Code (または他の MCP 互換クライアント)。
手順
- このリポジトリをクローンします:Copy
- 依存関係をインストールします:Copy
- サーバーを初めて実行します。node
node
使用してメイン スクリプトを直接実行します。Copy- 初めて実行すると、
quickchart.io
を使用して QR コード リンクが生成され、デフォルトのブラウザーで開こうとします。 - WhatsApp モバイル アプリ (設定 > リンクされたデバイス > デバイスのリンク) を使用してこの QR コードをスキャンします。
- 認証資格情報は
auth_info/
ディレクトリにローカルに保存されます (これは git では無視されます)。 - メッセージの同期が開始され、
./data/whatsapp.db
whatsapp.db に保存されます。履歴のサイズによっては時間がかかる場合があります。進捗状況はwa-logs.txt
とコンソール出力でご確認ください。 - このターミナルウィンドウは実行したままにしておいてください。同期が完了したら閉じてください。
- 初めて実行すると、
AIクライアントの構成
AI クライアントにこの MCP サーバーを起動する方法を伝える必要があります。
- 設定JSONを準備します。以下のJSON構造をコピーします。
{{PATH_TO_REPO}}
このリポジトリをクローンしたディレクトリへの絶対パスに置き換える必要があります。Copy- **絶対パスを取得するには、**ターミナルで
whatsapp-mcp-ts
ディレクトリに移動し、pwd
を実行します。この出力を{{PATH_TO_REPO}}
として使用します。
- **絶対パスを取得するには、**ターミナルで
- 設定ファイルを保存します。
- Claude Desktop の場合: JSON を
claude_desktop_config.json
として構成ディレクトリに保存します。- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
(おそらくパスですが、必要に応じて確認してください) - Linux:
~/.config/Claude/claude_desktop_config.json
(おそらくパス。必要に応じて確認してください)
- macOS:
- カーソルの場合: JSON を
mcp.json
として構成ディレクトリに保存します。~/.cursor/mcp.json
- Claude Desktop の場合: JSON を
- Claude Desktop / Cursorを再起動します。AIクライアントを閉じて再度開きます。これで「whatsapp」MCPサーバーが検出され、ツールが使用できるようになります。
使用法
サーバーが起動し( node src/main.ts
経由で手動で起動するか、AIクライアントの設定ファイル経由で起動するかは任意)、AIクライアントに接続されたら、エージェントのチャットインターフェースを介してWhatsAppデータを操作できます。連絡先の検索、最近のチャットの一覧表示、メッセージの閲覧、メッセージの送信などが可能です。
アーキテクチャの概要
このアプリケーションは、次の機能を備えた単一の Node.js プロセスです。
@whiskeysockets/baileys
を使用して WhatsApp Web API に接続し、認証とリアルタイム イベントを処理します。node:sqlite
を使用して、WhatsApp のチャットとメッセージを SQLite データベース (./data/whatsapp.db
) にローカルに保存します。- 標準入出力 (stdio) を介して AI クライアントからの要求をリッスンする
@modelcontextprotocol/sdk
を使用して MCP サーバーを実行します。 - ローカル SQLite データベースを照会したり、Baileys ソケットを使用してメッセージを送信したりする MCP ツールを提供します。
- アクティビティのログ記録には
pino
を使用します (WhatsApp イベントの場合はwa-logs.txt
、MCP サーバー アクティビティの場合はmcp-logs.txt
)。
データストレージとプライバシー
- 認証: WhatsApp 接続資格情報は
./auth_info/
auth_info/ ディレクトリにローカルに保存されます。 - **メッセージとチャット:**メッセージ履歴とチャットのメタデータは
./data/whatsapp.db
whatsapp.db SQLite ファイルにローカルに保存されます。 - ローカルデータ:
auth_info/
とdata/
は、誤ってコミットされないように.gitignore
に含まれています。これらのディレクトリは機密情報として扱ってください。 - LLMとの連携: AIエージェントがMCPツール(例:
list_messages
、send_message
)のいずれかをアクティブに使用した場合にのみ、接続された大規模言語モデル(LLM)にデータが送信されます。サーバー自体がデータを他の場所に積極的に送信することはありません。
技術的な詳細
- 言語: TypeScript
- ランタイム: Node.js (>= v23.10.0)
- WhatsApp API:
@whiskeysockets/baileys
- MCP SDK:
@modelcontextprotocol/sdk
- データベース:
node:sqlite
(バンドルされた SQLite) - ログ記録:
pino
- スキーマ検証:
zod
(MCP ツール入力用)
トラブルシューティング
- QR コードの問題:
- QR コード リンクが自動的に開かない場合は、コンソール出力で
quickchart.io
URL を確認し、手動で開きます。 - 携帯電話の WhatsApp アプリで QR コードをすぐにスキャンしてください。
- QR コード リンクが自動的に開かない場合は、コンソール出力で
- 認証失敗/ログアウト:
- 接続が
DisconnectReason.loggedOut
エラーで切断された場合は、再認証が必要です。サーバーを停止し、./auth_info/
ディレクトリを削除してサーバーを再起動し(node src/main.ts
)、新しい QR コードを取得してください。
- 接続が
- メッセージ同期の問題:
- 初期同期には時間がかかる場合があります。wa
wa-logs.txt
でアクティビティを確認してください。 - メッセージが同期されていない、または欠落しているように見える場合は、完全なリセットが必要になる可能性があります。サーバーを停止し、
./auth_info/
と./data/
の両方のディレクトリを削除してから、サーバーを再起動して再認証を行い、履歴を再同期してください。
- 初期同期には時間がかかる場合があります。wa
- MCP 接続の問題 (Claude/Cursor):
claude_desktop_config.json
またはmcp.json
内のcommand
とargs
(特に{{PATH_TO_REPO}}
)を再確認してください。パスが絶対パスで正しいことを確認してください。- Node.js が正しくインストールされ、システムの PATH にあることを確認します。
- AI クライアントのログで、MCP サーバーの起動に関連するエラーを確認します。
- MCP 関連のエラーについては、このサーバーのログ (
mcp-logs.txt
) を確認してください。
- メッセージ送信エラー:
- 受信者の JID が正しいことを確認します (例: ユーザーの場合は
number@s.whatsapp.net
、グループの場合はgroupid@g.us
)。 - Baileys からの具体的なエラーについては
wa-logs.txt
確認してください。
- 受信者の JID が正しいことを確認します (例: ユーザーの場合は
- **一般的な問題:**詳細なエラー メッセージについては、
wa-logs.txt
とmcp-logs.txt
の両方を確認してください。
MCP 統合に関するさらなる問題については、 公式の MCP ドキュメントを参照してください。
クレジット
- https://github.com/lharries/whatsapp-mcpこのコードベースと同じことを行いますが、go と python を使用します。
ライセンス
このプロジェクトは ISC ライセンスの下でライセンスされています ( package.json
を参照)。
This server cannot be installed
個人の WhatsApp アカウントを Claude などの AI エージェントに接続し、メッセージの検索、連絡先の表示、チャット履歴の取得、WhatsApp 経由のメッセージの送信を可能にするモデル コンテキスト プロトコル サーバーです。