WhatsApp MCP Server (TypeScript/Baileys) について
WhatsApp MCP Server は、Baileys ライブラリを用いた TypeScript 製の MCP サーバーで、個人の WhatsApp アカウントを Claude Desktop や Cursor などの AI クライアントに接続します。メッセージと認証情報はローカルの SQLite とキャッシュに保存されます。
主な機能
- 01連絡先と個人チャットのメッセージ検索
- 02ページングと並び替えに対応したチャット一覧
- 03チャットごとのメッセージ履歴取得
- 04個人またはグループへのテキスト送信
- 05メッセージと認証情報のローカル保存
活用シーン
- 01AI アシスタントに連絡先を探してメッセージを送らせる
- 02AI クライアントから特定チャットの履歴を確認する
- 03指定メッセージ前後の文脈を確認する
MCP 対応
本プロジェクトは MCP サーバーであり、stdio 経由で連絡先・チャットの検索やメッセージ送信のツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
WhatsApp MCP サーバー(TypeScript/Baileys)
これは、TypeScript で構築され、@whiskeysockets/baileys ライブラリを使用する、WhatsApp 用の Model Context Protocol(MCP)サーバーです。
個人の WhatsApp アカウントを AI エージェント(デスクトップアプリ経由の Anthropic Claude や Cursor など)に接続することで、次のことが可能になります。
- 個人の WhatsApp メッセージを検索する。
- 連絡先を検索する(グループではなく個人)。
- 最近のチャットを一覧表示する。
- 特定のチャットのメッセージ履歴を取得する。
- 個人またはグループにメッセージを送信する。
WhatsApp Web のマルチデバイス API を使用して、個人の WhatsApp アカウントに直接接続します。すべてのメッセージと認証情報は、SQLite データベース(./data/)と認証キャッシュ(./auth_info/)にローカルで保存されます。データが接続先の AI エージェントに送信されるのは、提供された MCP ツールを明示的に使用した場合のみです(使用方法はエージェントのインターフェースから制御できます)。
(任意:参考例のようなスクリーンショットまたは GIF を追加することを検討してください)
例
ユーザー: WhatsApp で「Meu amor」に「Te amo」とメッセージを送信してください
アシスタント:
まず連絡先を見つける必要があります。
ツールを使用中:whatsapp.search_contacts
{
"query": "Meu amor"
}
ツールの結果:
[
{
"jid": "[email protected]",
"name": "Meu Amor"
}
]
アシスタント:
連絡先が見つかりました。メッセージを送信します。
ツールを使用中:whatsapp.send_message
{
"recipient": "[email protected]",
"message": "Te amo"
}
ツールの結果:
Message sent successfully to [email protected] (ID: XXXXXXXXXXX).
主な機能(MCP ツール)
サーバーは、接続された AI エージェントに次のツールを提供します。
search_contacts:名前または電話番号の一部(JID)で連絡先を検索します。list_messages:ページネーションを使用して、特定のチャットのメッセージ履歴を取得します。list_chats:チャットを一覧表示します。アクティビティまたは名前で並べ替えたり、フィルターを適用したり、ページネーションを使用したりできます。また、最後のメッセージの詳細を任意で含めることもできます。get_chat:特定のチャットに関する詳細情報を取得します。get_message_context:コンテキストを把握するため、特定のメッセージ ID の直前と直後に送信されたメッセージを取得します。send_message:指定した宛先 JID(ユーザーまたはグループ)にテキストメッセージを送信します。
インストール
Smithery 経由でインストールする
Smithery 経由で Claude Desktop 用の WhatsApp MCP Server を自動的にインストールするには:
npx -y @smithery/cli install @jlucaso1/whatsapp-mcp-ts --client claude
前提条件
- Node.js: バージョン 23.10.0 以降(
package.jsonで指定)。node -vでバージョンを確認できます。(TypeScript と SQLite の初期サポートが組み込まれています) - npm(または yarn/pnpm):通常は Node.js に同梱されています。
- AI クライアント: Anthropic Claude Desktop アプリ、Cursor、Cline、Roo Code、またはその他の MCP 互換クライアント。
手順
-
このリポジトリをクローンします:
git clone <your-repo-url> whatsapp-mcp-ts cd whatsapp-mcp-ts -
依存関係をインストールします:
npm install # or yarn install / pnpm install -
サーバーを初めて実行します:
nodeを使用してメインスクリプトを直接実行します。node src/main.ts- 初回実行時には、
quickchart.ioを使って QR コードのリンクが生成され、デフォルトのブラウザーで開こうとします。 - WhatsApp モバイルアプリでこの QR コードをスキャンします(設定 > リンク済みデバイス > デバイスをリンク)。
- 認証情報は
auth_info/ディレクトリにローカル保存されます(このディレクトリは git の対象外です)。 - メッセージの同期が始まり、
./data/whatsapp.dbに保存されます。履歴の量によっては、完了までに時間がかかる場合があります。進行状況はwa-logs.txtとコンソール出力で確認してください。 - このターミナルウィンドウは開いたままにしてください。同期後は閉じてもかまいません。
- 初回実行時には、
AI クライアントの設定
この MCP サーバーの起動方法を AI クライアントに伝える必要があります。
-
設定 JSON を用意します: 次の JSON 構造をコピーします。
{{PATH_TO_REPO}}は、このリポジトリをクローンしたディレクトリの絶対パスに置き換えてください。{ "mcpServers": { "whatsapp": { "command": "node", "args": [ "{{PATH_TO_REPO}}/src/main.ts" ], "timeout": 15, // Optional: Adjust startup timeout if needed "disabled": false } } }- 絶対パスの取得: ターミナルで
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:
- Cursor の場合: 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)にローカル保存します。@modelcontextprotocol/sdkを使用して MCP サーバーを実行し、標準入出力(stdio)を介して AI クライアントからのリクエストを待ち受けます。- ローカルの SQLite データベースにクエリを実行する、または Baileys ソケットを使ってメッセージを送信する MCP ツールを提供します。
pinoを使用してアクティビティを記録します(WhatsApp のイベントはwa-logs.txt、MCP サーバーのアクティビティはmcp-logs.txtに記録されます)。
データの保存とプライバシー
- 認証: WhatsApp の接続認証情報は
./auth_info/ディレクトリにローカル保存されます。 - メッセージとチャット: メッセージ履歴とチャットのメタデータは、SQLite ファイル
./data/whatsapp.dbにローカル保存されます。 - ローカルデータ:
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-logs.txtで動作状況を確認してください。 - メッセージが同期されていない、または見つからない場合は、完全にリセットする必要があるかもしれません。サーバーを停止し、
./auth_info/と./data/の両方のディレクトリを削除してから、サーバーを再起動し、再認証と履歴の再同期を行ってください。
- 初回の同期には時間がかかることがあります。
- MCP 接続の問題(Claude/Cursor):
claude_desktop_config.jsonまたはmcp.jsonのcommandとargs(特に{{PATH_TO_REPO}})を再確認してください。パスが絶対パスで、正しいことを確認してください。- Node.js が正しくインストールされ、システムの PATH に含まれていることを確認してください。
- AI クライアントのログで、MCP サーバーの起動に関連するエラーがないか確認してください。
- このサーバーのログ(
mcp-logs.txt)で、MCP 関連のエラーがないか確認してください。
- メッセージ送信エラー:
- 宛先の JID が正しいことを確認してください(ユーザーの場合は
[email protected]、グループの場合は[email protected]など)。 wa-logs.txtで、Baileys による具体的なエラーを確認してください。
- 宛先の JID が正しいことを確認してください(ユーザーの場合は
- 一般的な問題: 詳細なエラーメッセージについては、
wa-logs.txtとmcp-logs.txtの両方を確認してください。
MCP 統合に関するその他の問題については、公式の MCP ドキュメントを参照してください。
クレジット
- https://github.com/lharries/whatsapp-mcp このコードベースと同じことを Go と Python で実現します。
ライセンス
このプロジェクトは ISC License の下でライセンスされています(package.json を参照)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。