BroadNet
ジャーナルエンジニアリング
エンジニアリング

メッセージングのためのMCP:AIエージェントがいかにしてSMSとWhatsAppを安全に送信できるか

MCPサーバーは、メッセージングAPIをAIエージェントが呼び出し可能なツールへと変換します。これは強力であると同時にリスクも伴います。送信ツールを持つエージェントは、実際の顧客にメッセージを送信できてしまうからです。ここでは、SMSおよびWhatsAppにおけるMCPの仕組み、BroadNetのサーバーへの接続方法、そして事前に導入すべきガードレールについて解説します。

BroadNetエンジニアリング
著者編集基準
11 読了目安
エンジニアリング · No. 47
11 読了目安

ッセージング用のMCPサーバーは、メッセージングAPIを、AIエージェントがModel Context Protocolを通じて発見・呼び出し可能なツールとして公開します。これにより、アシスタントは要求に応じてSMSまたはWhatsAppメッセージを送信できるようになります。BroadNetは、WhatsApp、SMS、RCS、Telegram、Push、Email、Messenger、Instagramにサービスを提供しているものと同じAPI上で、Streamable HTTPトランスポートとBearerトークンを使用し、https://mcp.broadnet.me/mcp でこれを実行しています。本ガイドでは、その仕組みと、より重要な点として、エージェントが誤った相手にメッセージを送信するのを防ぐ方法について説明します。

主なポイント

  • MCPは、JSON-RPC 2.0に基づいて構築された、AIアプリケーションが外部ツールを発見し呼び出すことを可能にするオープンプロトコルです。メッセージングMCPサーバーは、送信、テンプレート、およびレポートのエンドポイントをツールへと変換します。
  • リモートサーバーはStreamable HTTPトランスポートを使用します:1つのHTTPSエンドポイントに対し、クライアントからの各メッセージがHTTP POSTとなります。ローカルサーバーは通常stdioを使用します。
  • BroadNet MCPサーバーはhttps://mcp.broadnet.me/mcpにあり、Authorization: Bearerヘッダーのないリクエストはすべて拒否します。
  • トークンは送信資格情報です。エージェントは、お客様自身のコードと全く同じように、その権限に基づいて動作します。
  • MCP仕様では、ツール呼び出しを拒否できる人間が常に介在(human in the loop)すべきであり、サーバーはツール呼び出しに対してレート制限を適用しなければならない(MUST)と定めています。すべての送信ツールにおいて、同意、送信禁止時間帯、上限設定、および承認プロセスを構築してください。

Model Context Protocolとは何ですか?

MCP仕様では、MCPを「LLMアプリケーションと外部データソースおよびツールとのシームレスな統合を可能にするオープンプロトコル」と定義しています。これは、ホスト(AIアプリケーション)、クライアント(ホスト内のコネクタ)、サーバー(ツール、リソース、プロンプトを提供するサービス)の3つのロール間で、JSON-RPC 2.0メッセージを使用します。2026年9月26日現在、仕様の最新リビジョンは2026-07-28付です。

メッセージングにおいて重要なのはツールです。クライアントがtools/listでツールをリスト化し、モデルがその中から1つを選択し、クライアントがtools/callでそれを呼び出します。仕様では、ツールは「モデル制御」と呼ばれます。つまり、モデルが使用時期を決定するのです。だからこそ、送信ツールにはモデルが言葉巧みに回避できないガードレールが必要なのです。

SMSおよびWhatsAppのためのMCPサーバーはどのように機能しますか?

リクエストパスには5つのホップがあります。設計のポイントは、MCPサーバーが新しい送信能力を追加するのではなく、既存のAPIを、同じトークンと同じ制御下で公開することにあります。

  1. ユーザーはAIホストに対して、例えば次のように指示します。「WhatsAppでこの顧客に配送状況の更新を送信して」。
  2. モデルは、MCPクライアントが取得したリストから、WhatsApp送信ツールなどのツールを選択し、その引数を入力します。
  3. MCPクライアントは、Bearerトークンを使用して、HTTP POSTとしてhttps://mcp.broadnet.me/mcpにtools/callリクエストを送信します。
  4. BroadNetのMCPサーバーはトークンを検証し、対応するBroadNet APIエンドポイントを呼び出します。
  5. APIはメッセージをWhatsAppまたはモバイルネットワークにルーティングし、結果を返します。この結果はツール実行結果としてモデルに送り返されます。

プロダクトチームのデモ録画では、クライアントは380個のBroadNetツールをリストアップしており、その中にはsend_message、post_sms_send、post_whatsapp_message_send、get_whatsapp_template_list、post_whatsapp_template_send、post_rcs_message_send、get_report_deliveryが含まれています。正確なリストはサーバーのバージョンやアカウントによって異なります。詳細はMCPサーバードキュメントを参照してください。

Streamable HTTPかstdioか:どちらのトランスポートを使用しますか?

仕様では2つの標準トランスポートが定義されています。どちらを使用するかはサーバーの実行場所によって決まり、それによって認証方法も決まります。

stdioストリーマブルなHTTP
サーバーの実行場所クライアントによって起動されるサブプロセスとして、同一マシン上で実行HTTPSを介してアクセスする独立したサービスとして実行
メッセージの伝送経路標準入出力による、改行区切りのJSON-RPC各クライアントメッセージは、単一のMCPエンドポイントへのHTTP POSTとして送信されます。レスポンスはJSONまたはServer-Sent Events(SSE)ストリームとして返されます。
認証情報の仕組み仕様では、stdioサーバーは環境変数から認証情報を読み込む必要がありますすべてのリクエストにAuthorization: Bearerヘッダーを含める必要があります。トークンをクエリ文字列に含めてはいけません。
一般的な用途ローカル開発者ツールメッセージングAPIなど、多くのクライアントによって共有されるホスト型サービス
BroadNet提供なしhttps://mcp.broadnet.me/mcp

HTTPサーバーの場合、仕様の2025-06-18改訂版では、サーバーにOriginヘッダーの検証を求めるほか、すべての接続に対して認証を行うことを推奨しています。最新の改訂版(2026-07-28)では、各リクエストが自己完結型となり、独自のメタデータにプロトコルバージョンとクライアントの機能が含まれます。以前の改訂版では、初期化ハンドシェイクによってセッションを開始していましたが、クライアントはサーバーがどのリビジョンを使用しているかを検出し、フォールバックを行います。

AIエージェントをBroadNetのMCPサーバーに接続するにはどうすればよいですか?

  1. BroadNetアカウントからトークンを取得してください。BroadAdminポータルのIntegrationsからMCP Integrationを選択すると、一時的なキーが発行されます。永続的なキーは、アカウント管理者またはマスターアカウントから取得してください。
  2. MCPクライアントにサーバーを追加します。ほとんどのクライアントでは、以下のようなJSON設定を使用します。フィールド名はクライアントによって若干異なる場合があるため、クライアントのドキュメントを確認してください。
  3. トークンをコミットするファイルに含めないでください。以下の設定例のように、クライアントの環境変数サポートを利用してください。
  4. ツールリストを開き、エージェントに必要のないすべてのツールをオフにします。
  5. エージェントを顧客データにアクセスさせる前に、自身が所有する番号に対してメッセージを1通送信してテストを行ってください。
snippet
{
"mcpServers": {
"broadnet": {
"type": "http",
"url": "https://mcp.broadnet.me/mcp",
"headers": {
"Authorization": "Bearer ${BROADNET_TOKEN}"
}
}
}
}

クライアントを使用せずに接続をテストするには、自身でinitializeリクエストを送信してください:

snippet
curl -X POST https://mcp.broadnet.me/mcp \
-H "Authorization: Bearer $BROADNET_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-06-18","capabilities":{},
"clientInfo":{"name":"curl","version":"1.0"}}}'

ヘッダーがない場合、サーバーはプロトコルレベルで呼び出しを拒否します。これは、認証されていないinitializeリクエストに対するサーバーの実際の応答です(2026年9月26日に確認):

snippet
event: message
data: {"jsonrpc":"2.0","id":1,"error":{"code":-32001,
"message":"Authorization bearer token is required. Connect with an
'Authorization: Bearer <BroadNet token>' header."}}

AIエージェントにメッセージングAPIキーを渡すのは安全ですか?

制限を設けている場合に限られます。トークンは送信資格情報です。これを持つ人やエージェントは誰でも、お客様のアカウントからメッセージを送信でき、送信のたびにコストが発生し、実在の個人に届きます。また、エージェントは自然言語の指示に基づいて動作しますが、そのテキストの一部は外部から提供されます。受信した顧客メッセージやウェブページに、モデルが従おうとする指示が含まれている可能性があるためです。MCP仕様では、この点について明確に規定されています。ホストはツールを呼び出す前にユーザーの明示的な同意を得なければならず、ツールの呼び出しを拒否できる人間が常に「Human in the loop(人間による介在)」として存在すべきであり、クライアントは信頼できるサーバーからのものでない限り、ツールの注釈を信頼できないものとして扱う必要があります。

エージェントによる顧客へのスパム送信を防ぐガードレールにはどのようなものがありますか?

モデルが回避できない場所に制御機能を配置してください。プロンプト内ではなく、クライアントの設定、独自のミドルウェア、またはアカウント設定に配置します。

リスク制御配置場所
オプトインしていない相手へのメッセージ送信送信ツールを実行する前に、同意状況およびオプトアウト状況を確認するミドルウェアまたはCRM
夜間または不適切な日に送信すること受信者のタイムゾーンおよび市場ルールに基づいた送信禁止時間帯(Quiet hours)お客様のミドルウェア
タスクに不要なツールを使用すること必要なツールのみを有効にする。テンプレート、オンボーディング、およびアカウントツールは無効にするMCPクライアントツール設定
制御不能なループとSMS一斉送信エージェントごとの送信上限およびレート制限。仕様により、サーバーはツール呼び出しのレート制限を行う必要がありますお客様のミドルウェアとサーバー
リトライ後のメッセージの重複返却されたメッセージIDを保持し、再送前にそのステータスを確認してくださいエージェントのロジック(冪等性ガイドを参照)
レビューなしで送信されるマーケティングメッセージマーケティングメッセージまたは複数宛先への送信に対する人の承認MCPクライアント確認プロンプト
受信メッセージ内に隠された指示受信テキストはデータとして扱い、ユーザーの要求なしに送信をトリガーさせないことAIホストにおけるプロンプト設計および承認ルール
漏洩したトークン実験用のテンポラリキー、環境変数。漏洩した場合は失効および再発行を行うことBroadNetアカウント管理者
監査証跡なし入力と結果を含むすべてのツール呼び出しをログに記録するMCPクライアント。仕様ではクライアントがツールの使用をログに記録すべきとされています

BroadNet APIにはべき等性ヘッダーがないため、タイムアウト後のリトライによって二重送信される可能性があります。安全なパターンは、APIが返すメッセージIDを保存し、再送前に配信ステータスを確認することです。方法は当社のべき等性(idempotency)およびリトライ(retries)ガイドで解説しています。

どのメッセージングアクションに人間の承認が必要ですか?

アクション推奨されるデフォルト理由
配信レポートの読み取り、テンプレート一覧自動読み取り専用。顧客には何も届きません
リクエストを行った既知の顧客1名に対し、1件のトランザクションメッセージを送信送信上限内であれば自動、またはワンクリックで承認低リスク、高価値、監査が容易
あらゆるマーケティングメッセージ常に人の承認が必要同意、コンテンツ、およびコストのリスク
複数の受信者への送信常に人の承認が必要ミスが拡大する
WhatsAppテンプレートの作成または提出人間による承認テンプレートはMetaによって審査され、お客様のブランドを象徴するものです
アカウント、請求、またはオンボーディングツール無効エージェントは、実行中のアカウントを変更すべきではありません

MCPまたはプレーンなREST API:エージェントはどちらを使用すべきか?

どちらも同じプラットフォームに接続します。違いは、どのAPI呼び出しを行うかを誰が決めるかです。

BroadNet MCPサーバーBroadNet REST API
どのAPI呼び出しを行うかを決める主体ツールリスト内のモデルお客様のコード
エンドポイントhttps://mcp.broadnet.me/mcphttps://api.broadnet.me(例:POST /sms/sendSms)
認証Authorization: Bearer tokenAuthorization: Bearer token
クライアントライブラリリモートサーバーおよびカスタムAuthorizationヘッダーをサポートする任意のMCPクライアント公式のSDK、@broadnet/cpaas-sdk (TypeScript/Node.js)。OpenAPI仕様から他のクライアントを生成可能
最適な活用シーンアシスタント、オペレーション・コパイロット、自然言語によるアドホックなタスク固定ロジックによる本番フロー:OTP、アラート、キャンペーン

合理的な使い分け:人がエージェントを操作し、確認プロンプトが許容される場合はMCPを使用してください。常に同じ方法で実行する必要があるフローには、クイックスタートとcurlジェネレーターを備えたRESTのAPIを使用してください。当社のAPIリファレンスには、MCPツールの背後にあるエンドポイントが記載されています。

よくある質問

メッセージング用MCPサーバーとは何ですか?

AIエージェントがModel Context Protocolを通じて発見し、呼び出すことができるツールとして、SMSの送信、WhatsAppメッセージの送信、または配信レポートの取得などのメッセージングAPIを公開するサーバーのことです。

BroadNet MCPサーバーURLとは何ですか?

https://mcp.broadnet.me/mcp です。MCP Streamable HTTPトランスポートを使用し、すべてのリクエストにBroadNetトークンを含むAuthorization: Bearerヘッダーが必要です。

どのAIクライアントが接続できますか?

Streamable HTTPを介してリモートサーバーに接続し、カスタムAuthorizationヘッダーを送信できるMCPクライアントであれば、どれでも可能です。BroadNetのデモ録画ではCursorを使用しています。

エージェントは実際のメッセージを送信できますか?

はい。ツールは、お客様自身のAPIコールと全く同じように、お客様のトークンの権限に従って動作します。すべての送信を実運用として扱ってください。エージェントが必要とするツールのみを有効にし、送信前に確認を求めるように設定してください。

MCPにおけるBearer認証の仕組みは?

HTTPトランスポートの場合、クライアントは同じセッション内であっても、すべてのリクエストにおいてAuthorization: Bearerに続いてトークンを送信します。決してURLクエリ文字列には含めません。BroadNetのサーバーは、これがないリクエストを拒否します。

stdioとStreamable HTTPの違いは何ですか?

stdioはサーバーをローカルのサブプロセスとして実行し、標準入出力経由で改行区切りのJSON-RPCを交換します。Streamable HTTPはサーバーをウェブサービスとして実行し、すべてのクライアントメッセージが単一のエンドポイントへのHTTP POSTとなります。

AIエージェントによる顧客へのスパム行為を防ぐにはどうすればよいですか?

モデルの外側で同意確認、送信禁止時間、および送信上限を強制してください。必要なツールのみを有効にし、マーケティング目的や複数人への送信には人間の承認を必須とし、すべてのツール呼び出しをログに記録してください。

MCPを使用すべきですか、それともREST APIを使用すべきですか?

人間が自然言語でエージェントを操作する場合はMCPを使用してください。モデルではなくコードが送信内容を決定するOTPやアラートなどの固定された本番用フローには、REST APIまたはTypeScript SDKを使用してください。

出典

関連記事:カスタマーメッセージングにおけるAIエージェントおよび法人向けエージェンティックAIプラットフォームの選び方。

この記事は役に立ちましたか?

コンテンツの執筆・レビュー方針

執筆者

BroadNetエンジニアリング

通信事業者向けソリューションチームは、携帯通信事業者向けにSMSファイアウォール、SS7保護、およびレベニューアシュアランス(収益保証)の構築・運用を行っています。2003年以来、中東・北アフリカのネットワークにおいて実績があります。チームは、現場で得た知見を発信しています。

続きを読む

ジャーナルからのおすすめ記事

すべての記事を見る
コ
エンジニアリング

コードからSMSを送信する方法:1回のREST呼び出しでPython、PHP、Node.js、Java、Go、C#に対応

コードからSMSを送信するには、認証済みの1回のHTTPS POSTを行います。具体的には、Bearerトークン、送信元ID・宛先番号・メッセージ・メッセージタイプを含むJSONボディ、そして返されるメッセージIDが必要です。以下に、Python、PHP、Node.js、Java、Go、C#での同様のリクエスト例に加え、エラーハンドリングと本番環境への導入に関するアドバイスを記載します。

BroadNet編集チーム
9m
A
規制

AIによる電話発信は合法か?EU、米国、UAEにおける2026年のAI音声エージェント発信ルール

はい、AI音声エージェントによる電話発信は可能です。ただし、一定の条件があります。EUでは2026年8月2日からAIであることの開示が義務付けられ、米国ではTCPAに基づきAI音声は「人工的」なものとして扱われます。また、UAEでは厳格なテレマーケティング規則の範囲内でのみ、自動マーケティング電話が許可されています。スクリプトとチェックリスト付きの比較ガイドです。

BroadNet規制対応チーム
12m
E
エンジニアリング

Email to SMS:Email-to-SMSゲートウェイの仕組み、活用シーン、およびセキュリティ対策

Email-to-SMSゲートウェイは、電話番号宛の電子メールをテキストメッセージに変換します。これにより、メール送信のみが可能な監視ツール、ヘルプデスク、レガシーシステムなどが、SMSを通じてユーザーに連絡できるようになります。本記事では、その仕組み、APIよりも優れているケース、そしてなりすましメールに対する防御方法について解説します。

BroadNet編集チーム
7m
ジャーナルをメールで購読する

月に1本のエッセイをお届けします。 それだけです。

購読いただくと、エンジニアリング、規制、または業界に関する最新情報を、発行当日に直接お届けします。ドリップキャンペーンや製品の勧誘、第三者への情報共有は一切行いません。ワンクリックで購読解除が可能です。

配信は月に1回のみです。いつでもオプトアウト可能です。詳細は プライバシーポリシー.

お届けする内容
  • クリックベイトではない、読み応えのある記事
    単一のトピックについて、6分から11分程度で集中して読める内容をお届けします。
  • 現場の運用担当者が執筆
    エンジニア、規制担当責任者、および製品担当者が社内で執筆しています。
  • 地域に精通した視点
    規制当局、通信事業者、およびチャネルミックスに関する中東・北アフリカの視点。
  • 月1回
    ドリップ配信は行いません。共有すべき内容がある時にのみ、エッセイをお届けします。
読むのは終わりにして、実装を始めましょう。

私たちが執筆する内容のほとんどは、実務現場で得た知見に基づいています。

この記事に共感いただけたなら、ぜひ一度お話ししましょう。活用事例、ボリューム、対象市場をお聞かせください。それに基づき、配信ルート、料金、そして直接ご確認いただける導入事例をご提案します。

$ curl -X POST https://api.broadnet.me/sms/sendSms