Exotel Mcp について
Exotel Mcp は、Claude などの MCP クライアントから Exotel の通信 API を利用する MCP サーバーです。メッセージ、音声、会話分析、VoiceBot、AI Assist を扱い、サービス群ごとに認証情報を設定できます。
主な機能
- 01単件・一括・動的 SMS の送信
- 02Engage SMS キャンペーンの作成
- 03WhatsApp メッセージの送信
- 04通話発信とコールフローへの接続
- 05メッセージと通話状況の追跡
- 06音声、会話分析、VoiceBot、AI Assist の利用
活用シーン
- 01顧客への準拠 SMS や WhatsApp メッセージの送信
- 02顧客への発信やコールフローを介した接続
- 03会話品質分析による応対の確認
- 04VoiceBot の設定や AI Assist の構成
MCP 対応
Exotel のメッセージング、電話、音声、AI 関連の操作を MCP クライアント向けのツールとして提供します。README には Claude との直接連携と、他の MCP クライアントでの設定方法が記載されています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ExotelMCP
Claude AI と Exotel の通信 API をシームレスに連携し、SMS および音声通話サービスに加えて、手軽に使えるオーディオツールを提供する Model Context Protocol(MCP)サーバーです。
機能
- 📱 SMS サービス:DLT 準拠の単発、バルク、動的 SMS メッセージを送信します
- 📨 Engage SMS キャンペーン:Engage API を使用して、静的 SMS メッセージのキャンペーンを作成します
- ☎️ 音声通話:音声通話を開始し、電話番号を接続して、通話フローと連携します
- 📊 ステータス追跡:リアルタイムの配信ステータスとコールバック管理
- 🎵 手軽に使えるオーディオツール:ワンクリックで音声を再生、ダウンロードし、ウェブプレーヤーにアクセスします
- 🔍 会話インテリジェンス:音声チャネルとデジタルチャネル全体のすべての会話を、AI を活用して品質分析します
- 🤖 VoiceBot:VoiceBot を使用して、AI を活用したアウトバウンド通話を作成、管理、発信します
- 🎧 AI Assist:MCP を介してリアルタイムのエージェント支援(スマートリプライ、文字起こし、ナレッジベース)を設定します
- 🔐 安全な認証:Authorization ヘッダーを介したユーザーごとのトークンベース認証
- 🤖 Claude AI 連携:MCP プロトコルを介して Claude と直接連携します
目次
前提条件
Exotel MCP サーバーを使用する前に、以下を用意してください。
- Claude Desktop App:最新バージョンがインストールされていること
- Node.js and npm:MCP リモート接続に必要です
- Exotel アカウント:API 認証情報が設定された有効なアカウント
- MCP Remote Package:まだ利用できない場合はインストールしてください
MCP Remote のインストール
mcp-remote がインストールされていない場合は、次のコマンドを実行します。
npm install -g mcp-remote
インストールを確認します。
npm list -g mcp-remote
Claude Desktop の設定
ExotelMCP を Claude と連携するには、以下の設定を Claude のデスクトップ設定に追加します。
場所:Claude Desktop → Settings → Developer → Edit Config
{
"mcpServers": {
"exotel": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.exotel.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "{'token':'YOUR_EXOTEL_TOKEN','from_number':'YOUR_FROM_NUMBER','whatsapp_from':'YOUR_WHATSAPP_SENDER_E164','dlt_temp':'YOUR_DLT_TEMPLATE','dlt_entity':'YOUR_DLT_ENTITY','caller_id':'YOUR_CALLER_ID','api_domain':'https://YOUR_SUB_DOMAIN','account_sid':'YOUR_ACCOUNT_SID','exotel_portal_url':'YOUR_EXOTEL_DASHBOARD_BASE_URL','cqa_api_key':'YOUR_CQA_API_KEY','cqa_account_id':'YOUR_CQA_ACCOUNT_ID','cqa_host':'https://cqa-console.in.exotel.com','voicebot_api_key':'YOUR_VOICEBOT_API_KEY','voicebot_api_token':'YOUR_VOICEBOT_API_TOKEN','voicebot_account_id':'YOUR_VOICEBOT_ACCOUNT_ID','calls_api_key':'YOUR_CALLS_API_KEY','calls_api_token':'YOUR_CALLS_API_TOKEN','calls_account_id':'YOUR_CALLS_ACCOUNT_ID','calls_base_url':'https://api.exotel.com'}"
}
}
}
}
必要な認証情報
プレースホルダーの値を、実際の Exotel 認証情報に置き換えてください。
YOUR_EXOTEL_TOKEN:Base64 でエンコードされた API 認証情報
このトークンは、Exotel の API Key と Secret を Base64 形式でエンコードして作成します。
手順 1:Exotel Dashboard から API 認証情報を取得する
- Exotel Dashboard にログインします
- Settings → API Settings に移動します
- API Key と API Secret をコピーします
手順 2:Base64 トークンを作成する
形式:api_key:api_secret(コロン区切り)
例:API Key が abc123、API Secret が xyz789 の場合、abc123:xyz789 のように組み合わせます
手順 3:Base64 にエンコードする
以下のいずれかの方法を使用できます。
オンラインツール:
- base64encode.org にアクセスします
api_key:api_secretの文字列を入力します- エンコードされた結果をコピーします
コマンドライン(Mac/Linux):
echo -n "your_api_key:your_api_secret" | base64
コマンドライン(Windows):
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("your_api_key:your_api_secret"))
その他の必要な値:
- YOUR_FROM_NUMBER:登録済みの Exotel 電話番号(Dashboard → Numbers)
- YOUR_DLT_TEMPLATE:SMS 準拠用の DLT テンプレート ID(Dashboard → DLT)
- YOUR_DLT_ENTITY:SMS 準拠用の DLT エンティティ ID(Dashboard → DLT)
- YOUR_CALLER_ID:登録済みの発信者 ID(Dashboard → Numbers)
- YOUR_ACCOUNT_SID:Exotel アカウントの SID(Dashboard → API Settings)
- YOUR_SUB_DOMAIN:Exotel アカウントの SubDomain(Dashboard → API Settings)
- YOUR_EXOTEL_DASHBOARD_BASE_URL:Exotel Dashboard のベース URL
会話インテリジェンスの認証情報:
- YOUR_CQA_API_KEY:Conversational Intelligence コンソールで生成された API キー
- YOUR_CQA_ACCOUNT_ID:アカウント ID(Conversational Intelligence コンソールに表示)
- YOUR_CQA_HOST:ホスト URL(デフォルト:
https://cqa-console.in.exotel.com)
注:会話インテリジェンスの認証情報が必要なのは、品質分析ツールを使用する場合のみです。SMS ツールと音声ツールは独立して動作します。
VoiceBot の認証情報:
- YOUR_VOICEBOT_API_KEY:VoiceBot プラットフォームの API キー
- YOUR_VOICEBOT_API_TOKEN:VoiceBot プラットフォームの API トークン
- YOUR_VOICEBOT_ACCOUNT_ID:VoiceBot アカウント ID(例:
ameyo5m) - YOUR_CALLS_API_KEY:ボットを利用した通話を発信するための Exotel CPaaS API キー
- YOUR_CALLS_API_TOKEN:ボットを利用した通話を発信するための Exotel CPaaS API トークン
- YOUR_CALLS_ACCOUNT_ID:通話用の Exotel CPaaS アカウント SID(VoiceBot アカウントと異なる場合があります)
- calls_base_url:Exotel Calls API のベース URL(デフォルト:
https://api.exotel.com)
注:VoiceBot ツールを使用する場合のみ、VoiceBot の認証情報が必要です。VoiceBot 管理 API(ボットの一覧表示/作成/削除)には
voicebot_*認証情報を使用し、実際の通話の発信にはcalls_*認証情報を使用します。
AI Assist の認証情報:
すべての exotel_aiassist_* ツールで必要です:
- ai_assist_base_url:AI Assist API のホスト(本番環境:
https://ai-assist.in.exotel.com) - ai_assist_account_sid:AI Assist テナント ID(アカウント SID)
認証:次のいずれか1 つの方式を指定します(CPaaS テナントでは Twilix Basic がデフォルトです)。
| 方式 | フィールド |
|---|---|
| Twilix Basic(推奨) | ai_assist_auth_key、ai_assist_auth_secret |
| Auth0 M2M | ai_assist_client_id、ai_assist_client_secret |
| 手動ベアラー | ai_assist_auth_token |
| セッション Cookie | ai_assist_session_cookie |
任意:
- ai_assist_context_path:API コンテキストパス(デフォルト:
ai-assist/api) - ai_assist_user_id:監査ログ用のユーザー ID
例(Cursor ~/.cursor/mcp.json):
{
"mcpServers": {
"exotel": {
"url": "https://mcp.exotel.com/mcp",
"headers": {
"Authorization": "Bearer {\"ai_assist_base_url\":\"https://ai-assist.in.exotel.com\",\"ai_assist_account_sid\":\"YOUR_ACCOUNT_SID\",\"ai_assist_auth_key\":\"YOUR_API_KEY\",\"ai_assist_auth_secret\":\"YOUR_API_TOKEN\"}"
}
}
}
}
注:AI Assist の認証情報が必要なのは AI Assist ツールのみです。SMS、Voice、CQA、VoiceBot ツールは独立して動作します。
書き込み時の安全性:作成/更新/公開/アーカイブ/削除ツールを呼び出す際は、
confirm=trueが必要です。
使用方法
設定が完了すると、自然言語のコマンドを使って Claude から Exotel のサービスを操作できます。実行したい内容を説明するだけで、Claude が MCP サーバー経由で API 呼び出しを行います。
コマンドの例:
- 「+919999999999 に『Claude からこんにちは!』という SMS を送信して」
- 「+919999999999 に電話して」
- 「最後に送信した SMS の配信状況を確認して」
- 「+919999999999 と +919888888888 を接続して」
音声コマンド:
- 「https://example.com/song.mp3 から音声を再生して」
- 「音声プレーヤーのインターフェースを開いて」
- 「https://example.com/podcast.mp3 から音声をダウンロードして」
会話インテリジェンス — セットアップコマンド:
- 「テナント my_tenant で [email protected] として CQA にログインして」
- 「『Support Evaluation』という品質プロファイルを作成して。カテゴリは『Communication』、サブカテゴリは『Clarity』、KPI は『Clear Speech』(Yes/No、選択肢:Yes=1/No=0)と『Professional Tone』(Yes/No、選択肢:Yes=1/No=0)にして」
- 「『my-api-key』という CQA API キーを作成して」
- 「送信元が『support』の通話を品質プロファイル {profile_id} に振り分ける割り当てルールを作成して」
会話インテリジェンス — 分析コマンド:
- 「この通話録音を品質分析に取り込んで:https://storage.example.com/call-001.wav」
- 「インタラクション call-2026-04-01-001 のステータスを確認して」
- 「分析 a1b2c3d4 の品質分析結果を取得して」
- 「この CSV ファイルを一括取り込み用に送信して:https://s3.example.com/calls.csv」
- 「取り込みジョブ abc123 の進行状況を追跡して」
VoiceBot コマンド:
- 「自分の VoiceBot をすべて一覧表示して」
- 「注文追跡の顧客サポートを行う VoiceBot を作成して」
- 「顧客サポートボットを使って +919999999999 に電話して」
- 「最後のボット通話のステータスを取得して」
- 「アカウントで利用可能な電話番号を一覧表示して」
AI Assist コマンド:
- 「exotel_aiassist_whoami を実行して、AI Assist の認証情報を確認して」
- 「アカウントの AI Assist アシスタントをすべて一覧表示して」
- 「アシスタント ID abc123 の詳細を取得して」
- 「アシスタントを作成する前に、ASR プロバイダーと LLM の提案言語を一覧表示して」
- 「リアルタイム文字起こしとスマート返信を有効にして、Ameyo 6x 用の AI Assist アシスタントを作成して」
- 「https://example.com/policy.pdf の KB ファイルをアシスタント abc123 に添付して、インデックス作成が終わるまで待って」
- 「アシスタント abc123 を公開して」
- 「アシスタント abc123 のチャットストリームをスモークテストして」
API サービス
SMS サービス
SMS を個別に送信
DLT に準拠した単一の SMS メッセージを、指定した電話番号に送信します。
例:
Send an SMS to +919999999999 with message "Hello from Claude!" using DLT template 1107160086208866373 and entity 1101428740000012125
一括 SMS を送信(同一メッセージ)
同じメッセージを複数の宛先に一度に送信します。
例:
Send "Welcome to our service!" to these numbers: +919999999999, +919888888888, +919777777777
動的な一括 SMS を送信
宛先ごとに異なる内容のパーソナライズされたメッセージを、複数の宛先に送信します。
例:
Send personalized messages: "Hello John" to +919999999999 and "Hello Jane" to +919888888888
Engage SMS キャンペーン
Engage で静的な SMS メッセージキャンペーンを作成します(exotel_engage_create_sms_campaign)。
他のテレフォニーツールと同じ calls_api_key / calls_api_token / calls_account_id(または CPaaS の token + account_sid)を使用します。Engage 専用の認証情報は不要です。
例:
Create an Engage SMS campaign named "July promo" to list list_sid from EXOTEL,
transactional, template "Hello from Engage https://example.com/promo",
DLT entity 123456 and template id 789012, with URL shortening enabled
任意のスケジュールとコールバック:
Same campaign, scheduled 2026-08-10T18:00:00+05:30 to 2026-08-10T20:00:00+05:30,
with status_callback and message_status_callback URLs
WhatsApp サービス
exotel_whatsapp_send_messageを使って、Exotel(ExotelはWhatsApp BSPです)経由でWhatsAppメッセージを送信します。
CPaaSのtoken、account_sid、api_domainに加え、専用の**whatsapp_from**認証フィールドを使用します。これは、E.164形式で先頭に+を付けた、WhatsApp対応の送信者番号です(通常はfrom_numberとは異なり、WABA IDではありません)。ムンバイのアカウントでは、api_domain=https://api.in.exotel.comを使用します。
テンプレート(会話を開始):
Send a WhatsApp template "order_confirmation" (language en) to +919999999999
with body variables ["Rahul", "#ORD-12345"]
自由形式のテキスト(24時間以内のウィンドウで返信):
Send a WhatsApp text "Thanks, your request is noted" to +919999999999
注意事項(よくある失敗):
tokenはapi_key:api_secretをBase64エンコードしたものである必要があります(シークレットだけではありません)。printf '%s' 'API_KEY:API_SECRET' | base64で生成します。誤ったトークンやプレースホルダーのトークンが、通常401の原因です。- テンプレート名は小文字の識別子(例:
sample_issue_resolution)です。表示タイトルではありません。 - 言語コードはMetaの指定と正確に一致する必要があります。
enとen_USは異なるため、一致しない場合は400が返されます。 - 自由形式のテキストが使えるのは24時間以内のウィンドウのみです。つまり、受信者が過去24時間以内に
whatsapp_from番号へメッセージを送信している必要があります。新しい会話を開始するには、テンプレートを使用します。 202レスポンスは、Exotelがメッセージを受け付けたことを意味します(sidが返されます)。WhatsAppでの配信を確認するものではありません。
音声サービス
音声通話を発信
登録済みのExotel番号を使って、任意の電話番号に音声通話を発信します。
例:
Call +919999999999 from my registered number
2つの番号を接続
1回の通話で2つの電話番号をブリッジ接続します。
例:
Connect +919999999999 with +919888888888 in a conference call
通話フローとの連携
電話番号を、事前定義されたExotelの通話フローまたはIVRシステムに接続します。
例:
Connect +919999999999 to call flow app_id 12345
ステータスと追跡サービス
SMS配信ステータスを確認
送信したSMSメッセージの配信ステータスと詳細をリアルタイムで取得します。
例:
Check the delivery status of SMS sent to +919999999999
音声通話のステータスを確認
音声通話の詳細、通話時間、ステータスを取得します。
例:
Get call details for calls made to +919999999999
通話履歴を取得
分析用に、通話の詳細と履歴を一括取得します。
例:
Get all call details made from +919999999999
番号情報
電話番号のメタデータと情報を取得します。
例:
Get information about phone number +919999999999
音声サービス
クイック音声ツール
ワンクリックで音声をすばやく再生・管理するツールです。
音声をすばやく再生
任意の音声URLをブラウザーで再生するための、クリック可能なリンクをすぐに取得します。
例:
Play audio from https://example.com/song.mp3
音声プレーヤーを開く
ウェブベースの音声プレーヤーインターフェースにアクセスして、すべての操作を行います。
例:
Open the audio player interface
すばやくダウンロード
任意の音声ファイルの直接ダウンロードリンクを取得します。
例:
Download audio from https://example.com/song.mp3
会話インテリジェンスサービス
Exotelの会話インテリジェンスは、AIを使用して音声およびデジタルチャネル全体の顧客との会話を100%分析し、リアルタイムの品質インテリジェンスを提供します。このプラットフォームは数千件の会話を数分で確認し、客観的な評価で90%を超える精度を維持します。これにより、手動サンプリングを置き換え、大規模かつ継続的に自動QAを実施できます。
認証: CQAツールでは、2種類の認証方法を使用します。
- セットアップツール(ログイン、品質プロファイル、APIキー、割り当てルール)では、ログインツールで取得したJWT認証を使用します。事前設定済みの認証情報は不要です。
- 取り込み・分析ツール(取り込み、ステータス、結果)では、MCP認証ヘッダーに設定した
cqa_api_keyを使用します。
APIキー:Conversational Intelligenceコンソールから、またはexotel_cqa_create_api_key MCPツールを使ってAPIキーを生成し、MCP設定でcqa_api_keyとして指定します。
ログイン
セットアップ操作(品質プロファイル、APIキー、割り当てルール)に必要なJWTトークンを取得するため、CQAで認証します。
例:
Login to CQA as [email protected] on tenant exotel_support
品質プロファイルの作成
カテゴリ、サブカテゴリ、KPIを含む完全な品質プロファイルを1回の呼び出しで作成します。プロファイルはAI分析が有効な状態で自動的に作成されます。
例:
Create a quality profile called "Support Evaluation" with category "Communication", sub-category "Clarity", and KPIs: "Clear Speech" (Yes/No, options: Yes=1/No=0), "Professional Tone" (Yes/No, options: Yes=1/No=0)
サポートされているKPIタイプ: Yes/No、選択、評価、テキスト
Yes/No、選択、評価タイプでは、オプションが必須です。各オプションには
label(文字列)とweightage(整数)が必要です。評価オプションにはtype: "STAR"も必要です。テキストKPIはオプションをサポートしていません。その他の任意のKPIフィールド:
is_scoring_allowed、is_critical、is_mandatory、is_comment_mandatory、is_dispute_allowed、criticality_level。categoriesJsonで指定したすべてのフィールドがAPIに渡されます。部分的な失敗への対応: サブステップ(カテゴリ、サブカテゴリ、KPIの作成)が失敗した場合、ツールは
profile_idと、失敗前に作成されたカテゴリを含む部分的な結果に加え、復旧のヒントを返します。
APIキーの作成
プログラムによる取り込みと分析のためのAPIキーを生成します。キーはアカウントに紐付けられます。
例:
Create a CQA API key called "support-api-key"
注: 有効なAPIキーのテナントごとの上限があります(現在は2個)。409レスポンスが返された場合は上限に達しているため、既存のキーを先に取り消してください。
割り当てルールの作成
メタデータフィルターに基づいてインタラクションを品質プロファイルに振り分けるルールを作成します(例:source=supportのすべての通話を特定の品質プロファイルに振り分ける)。
例:
Create an assignment rule that routes calls with source "support" to quality profile a1b2c3d4-e5f6-7890-abcd-ef1234567890 at 100% sampling
filterGroupJsonは必須です。 フィルターが指定されていない場合、ツールはエラーを返します。サポートされているフィルター演算子: IS、IS_NOT、CONTAINS、NOT_CONTAINS、GREATER_THAN、LESS_THAN、GREATER_OR_EQUAL、LESS_OR_EQUAL
単一インタラクションの取り込み
品質分析のために、通話録音または文字起こしを1件送信します。audioUrl、transcriptUrl、インラインのtranscriptText(最大200KB)のうち、少なくとも1つを指定してください。
例:
Ingest interaction call-001 (voice channel) with audio at https://s3.example.com/call-001.wav in English
品質プロファイル/ルール/APIキーの管理
JWT設定ツールでは、プロファイルの一覧表示/取得/更新/削除/複製、割り当てルールの一覧表示/更新/削除、APIキーの一覧表示/取り消し、メタデータ設定、分析の一覧表示にも対応しています。
破壊的な操作を行うツール(delete_*、revoke_api_key)では、confirm=trueが必要です。プロファイルの更新時にKPIを空にする場合は、confirmWipeKpis=trueが必要です。認証ヘッダーにcqa_account_idが設定されている場合、accountIdはその値と一致している必要があります。
バッチの取り込み
最大100件のインタラクションを単一のバッチジョブとして送信します。
例:
Ingest a batch of 3 voice interactions for quality analysis
ファイルの取り込み
複数のインタラクションを含むCSVファイルを送信して、一括分析を実行します。
例:
Submit https://s3.example.com/calls.csv as a CSV file for quality analysis ingestion
インタラクションのステータスを取得
取り込まれたインタラクションの処理状況を確認します。
例:
Check the status of interaction call-2026-04-01-001
ジョブの追跡
バッチまたはファイル取り込みジョブの進行状況を監視します。
例:
Track ingestion job d4f5a6b7-c8d9-4e0f-a1b2-c3d4e5f6a7b8
分析結果の取得
完了した分析の品質スコアの詳細を取得します。
例:
Get the quality analysis for analysis ID a1b2c3d4-e5f6-7890-abcd-ef1234567890
VoiceBotサービス
AI搭載のVoiceBotを作成・管理し、電話での会話全体を自律的に処理します。
VoiceBotの一覧表示
アカウント上のすべてのVoiceBotを、ページネーションとステータスフィルターを使用して一覧表示します。
例:
List all my active VoiceBots
VoiceBotの作成
性格や目的を自然言語で説明して、新しいVoiceBotを作成します。
例:
Create a VoiceBot that handles customer support for Acme Corp. It should be friendly, help with order tracking, and offer to escalate to a human agent if needed.
ボットによる発信
VoiceBotを使用した電話を発信します。ボットが会話全体を処理します。
例:
Call +919999999999 using my order-confirmation bot
通話の詳細を取得
ボットによる通話のステータス、通話時間、録音URLを確認します。
例:
Get details of call abc123def456
電話番号の一覧表示
発信者番号として使用できる、アカウント上のすべての電話番号(DID)を一覧表示します。
例:
What phone numbers are available on my account?
最近の通話の一覧表示
ステータスと結果を含む最近の通話履歴を表示します。
例:
Show me the last 5 bot calls
AI Assist サービス
リアルタイムのエージェント支援:コンタクトセンターのエージェント向けに、文字起こし、感情分析、スマート返信、応対結果のヒント、ナレッジベースに基づく情報提供を行います。ツール名には exotel_aiassist_* が付いています。
認証: ai_assist_base_url、ai_assist_account_sid、および認証モードを 1 つ、Authorization ヘッダーに設定します(AI Assist の認証情報を参照)。exotel_aiassist_whoami を使って設定を確認してください。
読み取りツール: アシスタント、添付ファイル、ナレッジベースのアップロードジョブ、説明テンプレート、ASR プロバイダー、LLM 言語、エージェント、インタラクション、設定、ストリーム URL の一覧表示/取得。
書き込みツール: アシスタントとカスタムテンプレートの作成/更新/公開/アーカイブ/削除、ナレッジベースファイルの添付/解除、説明の更新。すべての書き込みには confirm=true が必要です。
テスト: exotel_aiassist_smoke_test_chat は、アシスタントのストリームに対して WebSocket ハンドシェイクを実行します。exotel_aiassist_wait_for_kb_ready は、ナレッジベースのインデックス作成が完了するまでポーリングします。
認証情報の確認
例:
Run exotel_aiassist_whoami
アシスタントの一覧表示
例:
List all AI Assist assistants on my account
アシスタントの作成と公開
exotel_aiassist_create_assistant で作成し、ツール引数で ASR/言語を設定した後、exotel_aiassist_publish_assistant で公開します(confirm=true)。
例:
Create an AI Assist assistant named "Support Copilot" for source ameyo_6x with English STT and smart reply enabled
ナレッジベースのアップロード
公開 HTTPS URL またはローカルパスからファイルを添付し、インデックス作成が完了するまで待ちます。
例:
Attach https://example.com/returns-policy.pdf to assistant abc123, then wait for KB to be ready
セキュリティ:URL の取得には
https://のみを許可し、プライベートアドレスとループバックアドレスはブロックします(SSRF 対策)。
認証
Exotel MCP Server は、セキュアなトークンベース認証を使用します。Exotel の認証情報はすべて Claude デスクトップ設定に登録され、Exotel の API への認証に使用されます。
セキュリティ機能
- 安全なトークン処理:Exotel API トークンは安全に処理されます
- ユーザーの分離:各ユーザーのデータは分離され、安全に保たれます
- DLT への準拠:インドの SMS に関する DLT(分散型台帳技術)の要件に対応する組み込みサポート
Exotel の認証情報の取得
- Exotel Dashboard にログインします
- Settings → API Settings に移動し、API Key、API Secret、Account SID を取得します
- Numbers セクションに移動し、登録済みの電話番号と発信者 ID を確認します
- DLT セクションにアクセスし、DLT Template と Entity ID を取得します(インドの SMS 準拠に必要です)
- 設定セクションの説明に従い、API Key と Secret を使って Base64 トークンを作成します
これらの認証情報をすべて適切な形式にし、上記の例のように Claude の設定に追加してください。
ホスティングとデプロイ
🌐 重要:パブリックドメインが必要です
以下の理由により、このアプリケーションはパブリックドメイン上で HTTPS を有効にしてホスティングする必要があります。
- MCP リモート接続:Claude Desktop は、パブリックインターネット経由でサーバーに接続します
- Exotel Webhook:Exotel は、サーバーにコールバック通知を送信する必要があります
- セキュリティ:Claude とサーバー間の安全な通信には HTTPS が必要です
- 本番環境対応:SMS/音声のステータス更新を安定して提供できます
デプロイ方法
Docker の設定
FROM openjdk:21-jdk-slim
WORKDIR /app
COPY target/mcp_api-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]
# Build and run
docker build -t exotel-mcp .
docker run -p 8080:8080 -e EXOTEL_BASE_URL=https://your-domain.com exotel-mcp
HTTPS を使用した Docker Compose
version: '3.8'
services:
app:
build: .
ports:
- "8080:8080"
environment:
- EXOTEL_BASE_URL=https://your-domain.com
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./ssl:/etc/ssl/certs
環境設定
本番環境の環境変数
# Server Configuration
SERVER_PORT=8080
SPRING_PROFILES_ACTIVE=production
# Application URL (CRITICAL - must match your domain)
EXOTEL_BASE_URL=https://your-domain.com
# Security
SPRING_SECURITY_REQUIRE_SSL=true
# Logging
LOGGING_LEVEL_ROOT=WARN
LOGGING_LEVEL_COM_EXAMPLE_MCP_API=INFO
Claude の設定を更新
{
"mcpServers": {
"exotel": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.exotel.com/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "{'token':'YOUR_EXOTEL_TOKEN','from_number':'YOUR_FROM_NUMBER','whatsapp_from':'YOUR_WHATSAPP_SENDER_E164','dlt_temp':'YOUR_DLT_TEMPLATE','dlt_entity':'YOUR_DLT_ENTITY','caller_id':'YOUR_CALLER_ID','api_domain':'https://YOUR_SUB_DOMAIN','account_sid':'YOUR_ACCOUNT_SID','exotel_portal_url':'YOUR_EXOTEL_DASHBOARD_BASE_URL','cqa_api_key':'YOUR_CQA_API_KEY','cqa_account_id':'YOUR_CQA_ACCOUNT_ID','cqa_host':'https://cqa-console.in.exotel.com','voicebot_api_key':'YOUR_VOICEBOT_API_KEY','voicebot_api_token':'YOUR_VOICEBOT_API_TOKEN','voicebot_account_id':'YOUR_VOICEBOT_ACCOUNT_ID','calls_api_key':'YOUR_CALLS_API_KEY','calls_api_token':'YOUR_CALLS_API_TOKEN','calls_account_id':'YOUR_CALLS_ACCOUNT_ID','calls_base_url':'https://api.exotel.com'}"
}
}
}
}
注:ローカル開発中にサーバーを HTTP のみで実行する場合は、
args配列の"--header"より前に"--allow-http"を追加してください。
ローカルでの実行(Cursor + Claude Desktop / CoWork)
開発時やクラウド MCP が利用できない場合は、ローカルサーバーを使用してください。SMS キャンペーンの開始を含むすべてのツールは、本番環境と同じように動作します。
# From the ExotelMCP repo root
./mvnw spring-boot:run
# MCP endpoint: http://localhost:8080/mcp
# Optional: ENGAGE_BASE_URL=https://engage.exotel.com (default)
または Docker Compose を使用します。
docker compose up --build
Cursor — ~/.cursor/mcp.json に追加します(保存後、ウィンドウを再読み込みしてください)。
{
"mcpServers": {
"exotel-local": {
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "{'calls_api_key':'YOUR_CALLS_API_KEY','calls_api_token':'YOUR_CALLS_API_TOKEN','calls_account_id':'YOUR_ACCOUNT_SID','token':'YOUR_EXOTEL_TOKEN','account_sid':'YOUR_ACCOUNT_SID'}"
}
}
}
}
Claude Desktop / CoWork — CoWork は同じ claude_desktop_config.json を読み込みます。mcp-remote と --allow-http を使用して HTTP をブリッジします。
{
"mcpServers": {
"exotel-local": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:8080/mcp",
"--allow-http",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "{'calls_api_key':'YOUR_CALLS_API_KEY','calls_api_token':'YOUR_CALLS_API_TOKEN','calls_account_id':'YOUR_ACCOUNT_SID','token':'YOUR_EXOTEL_TOKEN','account_sid':'YOUR_ACCOUNT_SID'}"
}
}
}
}
CoWork がサーバーを読み込めるように、Claude Desktop を完全に終了してから再起動してください。処理を実行している間は、ローカルの Java プロセスを起動したままにしてください。
本番環境チェックリスト
- ドメイン:登録済みで、DNS が設定されている
- HTTPS:SSL 証明書がインストールされ、正常に動作している
- サーバー:アプリケーションがポート 8080 で実行されている
- ファイアウォール:ポート 80、443、8080 が開放されている
- モニタリング:ヘルスチェックとログ記録が設定されている
オーディオサービスの要件
クイックオーディオツール:
- ✅ インターネットに接続できるサーバーであれば動作します
- ✅ 特別なハードウェアは必要ありません
- ✅ ブラウザで再生できます
- ✅ 一般的なオーディオ形式(mp3、wav、ogg など)に対応しています
デプロイのテスト
1. MCP エンドポイントのテスト
curl https://your-domain.com/mcp
# Should return data: {"type": "connection_established"}
2. Claude でのテスト
- Claude の設定をドメインに合わせて更新します
- Claude Desktop を再起動します
- テストメッセージを送信します:「DltEntityId=XXXXXXX、From=EXOTEL、DltTemplateId=XXXXXXXXX を使用して、+919999999999 にテスト SMS を送信してください」
デプロイのトラブルシューティング
接続の問題
- ファイアウォールの設定を確認します
- DNS の伝播を確認します:
nslookup your-domain.com - HTTPS をテストします:
curl -I https://your-domain.com
アプリケーションの問題
- アプリケーションのログを確認します:
tail -f logs/mcp-server.log - 環境変数を確認します
- データベース接続をテストします
コールバックの問題
- Webhook がサーバーに到達できることを確認します
- Exotel のコールバック URL 設定を確認します
- コールバックで HTTPS が機能していることを確認します
サポート
ヘルプの利用
- 設定の問題:Exotel の認証情報と Claude の設定を再確認してください
- デプロイの問題:ドメイン、HTTPS、サーバーへのアクセス性を確認してください
- API の使用方法:使用例についてはAPI サービスセクションを参照してください
- Exotel アカウント:アカウントに関する問題については Exotel サポートにお問い合わせください
- DLT 準拠:DLT テンプレートとエンティティ ID が正しく登録されていることを確認してください
よくある問題
「接続に失敗しました」エラー
- ドメインにアクセスできることを確認します:
curl https://your-domain.com/mcp mcp-remoteのインストールを確認します:npm list -g mcp-remote- HTTPS が正しく設定されていることを確認します
- ファイアウォールでポート 443 の受信接続が許可されていることを確認します
「認証に失敗しました」エラー
- Exotel API トークンが
api_key:api_secret形式から正しく Base64 エンコードされていることを確認します - Exotel Dashboard → Settings → API Settings で API Key と API Secret を再確認します
- エンコードする前に、API Key と Secret の間にコロン(
:)が含まれていることを確認します - アカウント SID が Exotel アカウントと一致していることを確認します
- 電話番号が Exotel に正しく登録されていることを確認します
SMS が配信されない
- DLT テンプレートとエンティティ ID が正しいことを確認します
- メッセージの内容が登録済みの DLT テンプレートと一致していることを確認します
- 宛先の電話番号が有効で、接続可能であることを確認します
- コールバック Webhook がステータス更新を受信していることを確認します
Webhook/コールバックの問題
- サーバーがインターネットからアクセスできることを確認します
- HTTPS 証明書が有効であることを確認します
- コールバック URL が公開ドメインを使用していることを確認します
- Webhook エンドポイントを手動でテストします
リソース
- Exotel ドキュメント:https://developer.exotel.com/
- 会話インテリジェンス:https://exotel.com/products/conversation-quality-analysis/
- 会話インテリジェンス API リファレンス:https://docs.exotel.com/conversation-intelligence/api-reference-guide
- DLT 情報:https://www.trai.gov.in/
- Claude Desktop:https://claude.ai/
- Spring Boot のデプロイ:https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html
- Let's Encrypt:https://letsencrypt.org/
🌐 ご注意ください:このアプリケーションを本番環境で使用するには、HTTPS 対応のパブリックドメインが必要です。このドメインは、Claude Desktop との接続と Exotel の Webhook 配信に不可欠です。
🚀 デプロイの準備はできましたか? 上記のホスティングガイドに従って、Claude AI から SMS の送信、通話、オーディオツールの使用を始めましょう!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。