mcp-whatsapp-cloud について
mcp-whatsapp-cloud は、Meta の WhatsApp Cloud API 向けの MCP サーバーで、Graph API を通じてメッセージ送信、メディア処理、テンプレート管理を行います。承認済みの WhatsApp Business Account を持ち、仲介なしで Meta と直接連携したい事業者に向いています。
主な機能
- 01テキスト、メディア、テンプレート、インタラクティブ、位置情報メッセージの送信
- 02メディアのアップロード、一時 URL の取得、削除
- 03メッセージテンプレートの一覧取得、作成、削除
- 04ビジネスプロフィールと電話番号の管理
- 05Graph API に対する Bearer トークン認証
活用シーン
- 01AI アシスタントから注文確認やインタラクティブなボタンメッセージを送信する
- 0224 時間のサービスウィンドウ外で承認済みテンプレートを送信する
- 03カタログ画像を一度アップロードし、メディア ID を再利用して送信する
MCP 対応
本プロジェクトは MCP サーバーとして動作し、22 個の WhatsApp Cloud API ツールを MCP クライアントに公開します。クライアントはそれらを通じてメッセージ送信やメディア・テンプレートの管理を行えます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @codespar/mcp-whatsapp-cloudWHATSAPP_ACCESS_TOKENシークレットMeta system-user access token (permanent). Used as Bearer token for Graph API.WHATSAPP_PHONE_NUMBER_IDWhatsApp Business phone number ID registered with Meta.WHATSAPP_BUSINESS_ACCOUNT_IDWhatsApp Business Account (WABA) ID. Used for template management.WHATSAPP_GRAPH_VERSIONGraph API version. Defaults to v21.0. Meta bumps quarterly.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
22掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| to | string | はい | 受信者の電話番号(+ を付けない E.164 形式。例:5511999999999) |
| body | string | はい | メッセージ本文(UTF-8、最大 4096 文字) |
| preview_url | boolean | いいえ | 本文内のリンクの URL プレビューを有効にする(デフォルト:false) |
詳細
@codespar/mcp-whatsapp-cloud
WhatsApp Cloud API 用の MCP サーバーです。Meta 公式の WhatsApp Business API で、Meta のインフラストラクチャ上でセルフホストされます。
Meta との直接連携。 仲介業者もプロバイダーの上乗せ料金もありません。承認済みの WhatsApp Business Account(WABA)を持ち、Meta 直結の料金と、会話、料金カテゴリ、テンプレートのライフサイクルを完全に管理したい事業者向けです。
このカタログにある WhatsApp サーバー
| サーバー | 概要 | 選択するケース |
|---|---|---|
| whatsapp-cloud(このサーバー) | Meta Cloud API との直接連携 | 承認済み WABA を持つ大規模事業者。大規模利用時のコストを抑え、中間手数料を回避できます |
| z-api | Meta Cloud API のラッパー | 簡単な導入、即時の QR ペアリング、追加のヘルパー機能 |
| evolution-api | オープンソースのラッパー | セルフホスト可能、コミュニティ主導 |
| take-blip | ブラジルの BSP ラッパー | ブラジルのエンタープライズ向け、CCaaS 機能 |
| zenvia | ブラジルの BSP ラッパー | ブラジルのオムニチャネル(SMS + WhatsApp) |
ツール(22)
| ツール | 目的 |
|---|---|
send_text_message | プレーンテキストメッセージを送信します。 |
send_template_message | 承認済みのメッセージテンプレートを送信します。 |
send_media_message | 画像、動画、ドキュメント、または音声を送信します。 |
send_interactive_message | インタラクティブメッセージ(返信ボタンまたはリスト)を送信します。 |
send_interactive_cta_url | CTA URL ボタンを 1 つ含むインタラクティブメッセージを送信します。 |
send_interactive_flow | WhatsApp Flow メッセージを送信します。 |
send_location_message | 緯度・経度と、任意の名前・住所を指定して位置情報を送信します。 |
send_contacts_message | 1 件以上の連絡先カード(vCard 形式)を送信します。 |
send_reaction_message | 受信済みまたは送信済みのメッセージに絵文字リアクションを送信します。 |
send_typing_indicator | 受信したメッセージに対して入力中インジケーターを表示します。 |
mark_message_as_read | 受信メッセージを既読にし、送信者に青い二重チェックマークを表示します。 |
upload_media | メディアファイルをアップロードし、send_media_message で再利用できる media_id を取得します。 |
retrieve_media_url | media_id を有効期間の短いダウンロード URL に変換します。 |
delete_media | ID を指定して、アップロード済みメディアアセットを削除します。 |
list_templates | WhatsApp Business Account のメッセージテンプレートを一覧表示します。 |
create_template | 新しいテンプレートを Meta の審査に提出します。 |
delete_template | 名前を指定して、WABA のメッセージテンプレートを削除します。 |
get_business_profile | 設定済みの電話番号の WhatsApp ビジネスプロフィール(概要、説明、メールアドレス、ウェブサイト、業種、住所)を読み取ります。 |
update_business_profile | 設定済みの電話番号のビジネスプロフィールを更新します。 |
list_phone_numbers | WhatsApp Business Account に登録されているすべての電話番号を、表示名、品質評価などを含めて一覧表示します。 |
request_verification_code | 設定済みの電話番号に SMS または音声通話で認証コードを送信するよう Meta にリクエストします。 |
verify_code | request_verification_code の後に SMS または音声通話で受け取った認証コードを送信します。 |
インストール
npm install @codespar/mcp-whatsapp-cloud
環境
WHATSAPP_ACCESS_TOKEN="EAAG..." # required (secret) — Meta system-user token
WHATSAPP_PHONE_NUMBER_ID="1234567890" # required — WABA phone number id
WHATSAPP_BUSINESS_ACCOUNT_ID="9876543210" # required — WABA id (for templates)
WHATSAPP_GRAPH_VERSION="v21.0" # optional — Meta bumps quarterly
認証
Graph API に対するベアラートークンを使用します。Meta Business Manager の永続的なシステムユーザートークンを使用してください。ユーザーアクセストークンは有効期限が切れるため、本番環境で問題が発生します。
Authorization: Bearer <WHATSAPP_ACCESS_TOKEN>
メッセージ送信のルール(重要)
- カスタマーサービスウィンドウ — ユーザーから最後にメッセージが届いてから 24 時間は、任意の種類のメッセージを自由に送信できます。
- 事業者発信のメッセージ — ウィンドウの終了後は、承認済みのテンプレートを送信する必要があります。名前、言語、コンポーネントを指定して
send_template_messageを使用してください。 - テンプレート —
create_templateで作成し、Meta の承認(数分から数時間)を待ってから使用してください。 - 電話番号は先頭の
+を除いた E.164 形式で指定します(例:5511999999999)。
メディア
方法は 2 つあります。
- 公開 URL —
send_media_messageにlinkを渡します。最も手早い方法ですが、Meta は送信のたびに取得します。 - アップロード済みの media_id —
upload_mediaを一度呼び出し、以降の送信でidを再利用します。カタログアセットに推奨されます。
アップロード済みメディアの有効期限は約 30 日です。
インタラクティブメッセージ
send_interactive_message は、完全な形式の interactive オブジェクトを必要とします。ボタンのペイロードの例:
{
"type": "button",
"body": { "text": "Confirma seu pedido?" },
"action": {
"buttons": [
{ "type": "reply", "reply": { "id": "confirm", "title": "Confirmar" } },
{ "type": "reply", "reply": { "id": "cancel", "title": "Cancelar" } }
]
}
}
リストのペイロードについては、Cloud API のインタラクティブリファレンスを参照してください。
実行
# stdio (default — for Claude Desktop, Cursor, etc)
npx @codespar/mcp-whatsapp-cloud
# HTTP (for server-to-server)
MCP_HTTP=true MCP_PORT=3000 npx @codespar/mcp-whatsapp-cloud
エンタープライズ
エージェントの決済にガバナンス、予算上限、監査証跡が必要ですか?CodeSpar Enterprise は、これらの MCP サーバーにポリシーエンジン、決済ルーティング、コンプライアンステンプレートを追加します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。