wazap-mcp
██╗ ██╗ █████╗ ███████╗ █████╗ ██████╗
██║ ██║██╔══██╗╚══███╔╝██╔══██╗██╔══██╗
██║ █╗ ██║███████║ ███╔╝ ███████║██████╔╝
██║███╗██║██╔══██║ ███╔╝ ██╔══██║██╔═══╝
╚███╔███╔╝██║ ██║███████╗██║ ██║██║
╚══╝╚══╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝あなたのAIエージェントのためのWhatsApp。 WhatsAppアカウント(チャット、メッセージ、メディア、連絡先、グループ)を、任意のMCPクライアントが呼び出せる22のツールの背後に置くMCPサーバーです。ペアリングコードによるログイン、ブラウザ不要、電話番号の再販業者なし、RAM約20MB。
Baileys 上に構築されており、これはWebSocket上でWhatsAppのマルチデバイスプロトコルを話します。
はじめに
npmパッケージは wazap-mcp で、インストールされるコマンドは wazap です。
npx wazap-mcp setupそれがインストールのすべてです。アカウントをリンクし、このマシンにインストールされているMCPクライアントを検出して、それらの設定を書き込み、何を再起動すべきかを教えてくれます。
または、エージェントにやってもらいましょう。これを貼り付けてください:
WhatsAppをセットアップして:npx wazap-mcp setup --agent を実行して、表示される指示に従ってください。
そしてエージェントにこう尋ねます:「今日のWhatsAppで何を見逃した?」
以下は setup が実行する手順です。手動で実行したい場合、それぞれ独立したコマンドとしても使用できます。
npx wazap-mcp login はQRコードを表示します。設定 → リンク済みデバイス → デバイスをリンク からスキャンしてください。カメラが手元にない、またはSSH経由でリンクする場合は? npx wazap-mcp login --phone +15550100 は、代わりに電話番号でリンク の下に入力する8文字のコードを表示します。最後に、エージェントがメッセージを送信してよいかどうかを尋ねられます。あなたが「はい」と言わない限り答えは「いいえ」で、後で npx wazap-mcp config writes on で変更できます。
npx wazap-mcp connect claude-code は、1つのクライアントのMCPエントリを書き込みます。残りは クライアントを接続 の下の表にあります。
npx wazap-mcp 単体は実行しても安全です。現在の状態と次に何をすべきかを表示し、サーバーは起動しません。何か問題がある場合、npx wazap-mcp status を最初に実行してください。Node、データディレクトリ、ロック、認証情報、新しいバージョンが出ているかどうかを確認し、壊れているものの隣に修正方法を表示します。
クライアントを接続
wazap connect <client> は、ファイル内の他の内容を保持し、最初の変更の前に一度バックアップして、エントリを書き込みます。--dry-run は書き込む内容を表示します。
クライアント |
|
|
|
| Claudeアプリケーションディレクトリ内の |
|
|
|
|
| 現在のワークスペース用の |
|
|
リモートクライアント | クライアントのMCP URLフィールド:ヘッダー |
どのMCPクライアントでも同じように動作します。コマンドは npx -y wazap-mcp、トランスポートは stdio です。エージェントに最初に learn を呼び出すように伝えてください。ID形式、ワークフロー、すべてのエラーコードとその対処法が返されます。
{
"mcpServers": {
"whatsapp": {
"command": "npx",
"args": ["-y", "wazap-mcp"]
}
}
}Claude Desktop、Cursor、Gemini CLIはまさにそれを受け入れます。VS Codeはそれを servers の下にネストし、command の横に "type": "stdio" を必要とします。Codex CLIはTOMLです:
[mcp_servers.whatsapp]
command = "npx"
args = ["-y", "wazap-mcp"]skills/ フォルダーは Agent Skills 形式に従っているため、Codex、Cursor、その他のスキル対応エージェントは同じ5つのスキルを読み込めます。
Related MCP server: wa-bridge
ツール
ツール | 種別 | 説明 |
| 読み取り | すべてのツール、ID形式、エラーコードのガイド。最初に呼び出してください。 |
| 読み取り | 接続ステータス、同期状態、リンクされたアカウント、バージョン、データディレクトリ。 |
| 読み取り | 会話を新しい順に表示。 |
| 読み取り | チャット内のメッセージ。 |
| 読み取り | 過去N時間のすべてをチャットごとにグループ化。追いつき用ツール。 |
| 読み取り | ローカルに保持されているメッセージ全体のテキスト検索。 |
| 読み取り | 1つのメッセージを、引用メッセージとリアクション付きで完全に取得。 |
| 読み取り | 名前または番号で連絡先を検索。 |
| 読み取り | 名前、番号、紹介文、プロフィール写真。 |
| 読み取り | 参加者、管理者、アナウンスモード、招待リンク(自分が管理者の場合)。 |
| 読み取り | 添付ファイルをディスクに保存。小さい画像はインラインでも返されます。 |
| 書き込み | テキストを送信。返信として、@メンション付きでも送信可能。 |
| 書き込み | 画像、ビデオ、音声、ボイスメモ、ドキュメントをパスまたはURLから送信。 |
| 書き込み | 2〜12の選択肢で投票を送信。 |
| 書き込み | 地図のピンを送信。 |
| 書き込み | 自分のメッセージを編集。WhatsAppの15分以内の制限内。 |
| 書き込み | 絵文字リアクションを追加または削除。 |
| 書き込み | メッセージを別のチャットに転送。 |
| 書き込み | 自分のメッセージを取り消し。WhatsAppの2日以内の制限内。 |
| 書き込み | アーカイブ、ピン留め、ミュート(デフォルト8時間)、既読/未読のマーク。 |
| 書き込み | グループを作成し、参加者を追加。 |
| 書き込み | 追加、削除、昇格、降格、退出、名前変更、招待リンク。 |
すべてのメッセージには空でない text が付いて返されます。メディアやシステムメッセージには、[image] caption、[voice message]、[deleted]、[poll] Pizza or pasta? のようなプレースホルダーが含まれます。タイムスタンプはマシンのUTCオフセット付きのISO 8601形式で、2h ago のような人間向けの age も併記されます。
スキル
wazapには、ツールだけでなくその背後にあるワークフローをエージェントに教える5つの Agent Skills が同梱されています:
スキル | エージェントが行うこと |
|
|
| 「何を見逃した?」 あなたの対応が必要 / 参考情報 / ノイズ にトリアージして順位付けし、忘れられた返信も表示。読み取り専用 |
| 「Danが送った請求書を見つけて。」クエリのバリエーションで検索し、時間をさかのぼってページングし、ファイルをダウンロードして読む。読み取り専用 |
| 300メッセージのグループに追いつく:決定事項、日付、あなたに求められていること。読み取り専用 |
| チャットの固有の文体で下書きし、受信者とテキストを表示し、ユーザーが「はい」と言った場合にのみ送信する |
すべて(サーバーとスキル)をClaude Codeプラグインとしてインストール:
/plugin marketplace add razvangirgiz/wazap
/plugin install wazap@wazapまたは、skills/<name>/ をエージェントが読み取る任意のスキルディレクトリにコピーします。
エラー
すべての失敗はスタックトレースではなく、構造化された { error, message, fix } として返されます。そのためエージェントは、再試行するか、ユーザーに尋ねるか、停止するかを判断できます。
コード | 意味 |
| アカウントがリンクされていません。 |
| 電話からリンクが解除されました。 |
| 認証情報を読み取れません。 |
| まだ接続中または再接続中です。 |
| 履歴の同期が完了していません。結果が部分的になる可能性があります。 |
| 番号が国際形式ではありません。 |
| WhatsAppのチャット、連絡先、グループIDのいずれでもありません。 |
| その番号にはWhatsAppアカウントがありません。 |
| 不明なIDです。 |
| グループの権限。 |
| WhatsAppがファイルを期限切れにしたか、ここで一度も同期されていません。 |
| 送信メディアの問題。 |
| WhatsAppのメッセージ上限を超えています。 |
| 編集と削除に関するWhatsApp独自の制限。 |
| wazapは読み取り専用で実行されています。 |
| 書き込みが多すぎます。 |
| WhatsAppが応答しないか、操作を拒否しました。 |
データディレクトリ
すべては ~/.wazap に置かれます(--data-dir または WAZAP_DATA_DIR で上書き可能)。ディレクトリは 0700 で作成され、認証情報は 0600 で書き込まれます:
~/.wazap/
auth/ WhatsApp credentials — treat this like a password
media/ downloads from download_media
history/ per-chat message history, so a restart is not amnesia
store.json chat-list snapshot
server.lock pid of the running server
daemon.json loopback endpoint a second wazap bridges to
.env optional settings, see .env.example認証情報の書き込みは一時ファイルに行われ、リネームで所定の場所に配置されます。そのため、書き込み途中でプロセスを強制終了しても、電話の再リンクが必要になることはありません。
複数のクライアントを同時に
Claude Desktop、Claude Code、Cursorはそれぞれ独自のwazapを起動します。WhatsAppはリンク済みデバイスごとに1つのソケットしか許可しないため、競合するのではなく1つのセッションを共有します。データディレクトリ上の最初のwazapがセッションを所有し、127.0.0.1上にMCPエンドポイントを開きます。以降に起動するものはすべて、そのエンドポイントを介してブリッジします。設定するものは何もなく、どのクライアントも違いを認識できません。所有者は<data-dir>/daemon.json(0600)に自身のpid、ポート、ブリッジが認証に使うトークンを公開します。
ブリッジは所有者が公開するものをそのまま提供するため、--read-onlyで起動された所有者は、クライアントがどのようなフラグで起動されたかにかかわらず、すべてのクライアントを読み取り専用にします。
所有者が終了するとブリッジも一緒に終了し、クライアントが次に起動するwazapが新しい所有者になります。
WAZAP_NO_SHARE=1でオプトアウトできます。同じディレクトリで2番目のwazapを起動すると、すでに実行中のpidを指定してコード2で終了します。明示的な--httpはブリッジではなく独自のサーバーであり、同じ方法で拒否されます。
読み取り専用モード
書き込みはオプトインです。loginは一度だけ確認し、その回答を<data-dir>/.envに保存します。wazap config writes on|offで変更でき、wazap configだけを実行すると、すべての有効な設定とその出所が表示されます。
WAZAP_READ_ONLY=1またはwazap serve --read-onlyでは、書き込みツールは一切登録されません。エージェントはそれらを認識できないため、誤ってでもあなたの番号から誰かにメッセージを送ることはできません。リンクしたアカウントが個人用の場合に便利です。
書き込みはWAZAP_RATE_LIMIT(デフォルト20、0で無効)により毎分レート制限もされます。人間より速く送信するとアカウントがBANされる原因になります。
HTTPモード
WAZAP_READ_TOKEN=$(openssl rand -hex 32) \
WAZAP_WRITE_TOKEN=$(openssl rand -hex 32) \
npx wazap-mcp serve --http --host 0.0.0.0 --port 8766/mcpでStreamable HTTP、/healthzでヘルスチェックを提供します。2つのベアラートークンがあります。読み取りトークンは読み取りツールを取得し、書き込みトークンは書き込みツールもロック解除します。したがって、読み取りトークンが漏洩しても誰にもメッセージを送信できません。wazapは、読み取りトークンなしではループバック以外のアドレスへのバインドを拒否します。
セルフホスト
エージェントがノートPC上にない場合(別のマシン、VPS、クライアントのインフラ)は、独自のサーバーでwazapを実行します。セッションはそのサーバー上に留まり、第三者を経由するものはありません。
systemdを使用する場合
npm install -g wazap-mcp
sudo useradd --system --home /var/lib/wazap --create-home wazap
sudo -u wazap WAZAP_DATA_DIR=/var/lib/wazap wazap login --phone +15550100 # pairing code works over SSH
sudo -u wazap tee /var/lib/wazap/.env >/dev/null <<END
WAZAP_READ_TOKEN=$(openssl rand -hex 32)
WAZAP_WRITE_TOKEN=$(openssl rand -hex 32)
END
sudo curl -fsSL https://raw.githubusercontent.com/razvangirgiz/wazap/main/deploy/wazap.service -o /etc/systemd/system/wazap.service
sudo systemctl enable --now wazap
curl -s http://127.0.0.1:8766/healthzユニットはループバックのみにバインドします。2行のdeploy/Caddyfile(ホスト名を編集した後caddy run --config deploy/Caddyfile)または任意のリバースプロキシでTLSを前面に配置し、クライアントをAuthorization: Bearer <読み取りまたは書き込みトークン>付きでhttps://your-host/mcpに向けます。
Dockerを使用する場合
git clone https://github.com/razvangirgiz/wazap && cd wazap
printf 'WAZAP_READ_TOKEN=%s\nWAZAP_WRITE_TOKEN=%s\n' $(openssl rand -hex 32) $(openssl rand -hex 32) > .env
docker compose run --rm wazap login --phone +15550100 # once; the session lands in the wazap-data volume
docker compose up -d
curl -s http://127.0.0.1:8766/healthzコンテナは8766をループバックのみに公開します。前面に同じTLSプロキシを追加します。アップグレードはgit pull && docker compose up -d --buildです。ボリュームがセッションを保持します。
到達できるクライアント
Claude Code、Claude Desktop、Cursor、Codex、VS Code、および「MCP URL + ヘッダー」フィールドを持つ任意のクライアントは、ベアラートークンで接続できます。claude.ai Connectorsは静的トークンではなくOAuthを必要とするため、セルフホストのwazapはまだ使用できません。読み取りのみが必要なクライアントには読み取りトークンを保持し、書き込みトークンは意図的に配布してください。
設定
変数 | デフォルト | 意味 |
|
| すべてが保存される場所。 |
|
| 書き込みツールを登録しない。 |
|
| WhatsAppにより完全な履歴同期を要求する。 |
|
| 再起動後もチャットとメッセージを保持する。 |
|
| 1分あたりの書き込みツール呼び出し数。 |
|
|
|
|
| HTTPバインドアドレス。 |
| 未設定 | HTTPベアラートークン。 |
|
|
|
フラグは環境変数より優先され、環境変数は<data-dir>/.envより優先されます。
既知の制限
非公式。 BaileysはWhatsAppのマルチデバイスプロトコルをリバースエンジニアリングしています。これはWhatsApp Business APIではなく、Metaはこれをサポートしていません。
BANのリスクは現実的です。 自動送信、一括メッセージ、人間がもっともらしく入力しないような操作は番号がBANされる可能性があり、ここから回復することはできません。レート制限は役立ちますが、保証ではありません。
メディアキーは期限切れになります。 WhatsAppは古い添付ファイルをサーバーから削除するため、古いメッセージに対する
download_mediaはMEDIA_UNAVAILABLEを返します。履歴は電話が同期するものです。 wazapが参照するのは、WhatsAppがリンク済みデバイスに渡す履歴であり、電話の完全なアーカイブではありません。
beforeを指定したread_messagesは、WhatsAppがまだ保持している範囲内でさらに要求します。@lidID。 新しいアカウントは電話番号ではなくプライバシーIDでアドレス指定されます。wazapはマッピングを学習済みの場合は電話番号に変換し直し、未学習の場合は@lidをそのまま渡します。電話が到達可能である必要があります。 リンク済みデバイスは、電話が十分に長くオフラインになると受信を停止します。
get_statusはhintでその旨を伝えます。
開発
npm install
npm run typecheck
npm test # builds, then runs node --test
node test/smoke-stdio.mjs # drives the built binary over MCP stdio
npm run dev -- status # run from source with tsxnpm testはWhatsAppセッションを必要としません。stdioスモークテストは、使い捨てのデータディレクトリに対してビルド済みバイナリを起動し、リンクされていないインストールでもinitialize、tools/list、get_statusに応答することを確認します。
MITライセンス。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceWhatsApp MCP server that exposes messaging, groups, contacts, and profile management as tools and resources for AI agents, supporting Baileys and Meta Cloud API.19
- AlicenseNot gradedqualityAmaintenanceA self-hosted WhatsApp bridge that exposes a stdio MCP server with ~20 tools for reading conversations, sending messages, managing groups, contacts, and aliases, enabling AI agents to operate WhatsApp directly.2MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that connects AI agents to WhatsApp using the multi-device API, enabling messaging, group management, and more as a regular user.15MIT
- AlicenseNot gradedqualityAmaintenanceA native MCP server for SocialMate that gives your AI a WhatsApp, enabling it to send and read messages, manage contacts and groups, and more through 44 tools.831MIT
Related MCP Connectors
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/razvangirgiz/wazap'
If you have feedback or need assistance with the MCP directory API, please join our Discord server