mcpField
E
Exotel Mcp

Exotel Mcp

ローカル
github.com/exotelコミュニケーション54 日前に更新

Exotel Mcp について

Exotel Mcp は、Claude などの MCP クライアントから Exotel の通信 API を利用する MCP サーバーです。メッセージ、音声、会話分析、VoiceBot、AI Assist を扱い、サービス群ごとに認証情報を設定できます。

主な機能

  1. 01単件・一括・動的 SMS の送信
  2. 02Engage SMS キャンペーンの作成
  3. 03WhatsApp メッセージの送信
  4. 04通話発信とコールフローへの接続
  5. 05メッセージと通話状況の追跡
  6. 06音声、会話分析、VoiceBot、AI Assist の利用

活用シーン

  1. 01顧客への準拠 SMS や WhatsApp メッセージの送信
  2. 02顧客への発信やコールフローを介した接続
  3. 03会話品質分析による応対の確認
  4. 04VoiceBot の設定や AI Assist の構成

MCP 対応

Exotel のメッセージング、電話、音声、AI 関連の操作を MCP クライアント向けのツールとして提供します。README には Claude との直接連携と、他の MCP クライアントでの設定方法が記載されています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"ExotelMCP": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

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 認証情報を取得する

  1. Exotel Dashboard にログインします
  2. Settings → API Settings に移動します
  3. 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 M2Mai_assist_client_id、ai_assist_client_secret
手動ベアラーai_assist_auth_token
セッション Cookieai_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 を接続して」

音声コマンド:

会話インテリジェンス — セットアップコマンド:

  • 「テナント 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 の認証情報の取得
  1. Exotel Dashboard にログインします
  2. Settings → API Settings に移動し、API Key、API Secret、Account SID を取得します
  3. Numbers セクションに移動し、登録済みの電話番号と発信者 ID を確認します
  4. DLT セクションにアクセスし、DLT Template と Entity ID を取得します(インドの SMS 準拠に必要です)
  5. 設定セクションの説明に従い、API Key と Secret を使って Base64 トークンを作成します

これらの認証情報をすべて適切な形式にし、上記の例のように Claude の設定に追加してください。

ホスティングとデプロイ

🌐 重要:パブリックドメインが必要です

以下の理由により、このアプリケーションはパブリックドメイン上で HTTPS を有効にしてホスティングする必要があります。

  1. MCP リモート接続:Claude Desktop は、パブリックインターネット経由でサーバーに接続します
  2. Exotel Webhook:Exotel は、サーバーにコールバック通知を送信する必要があります
  3. セキュリティ:Claude とサーバー間の安全な通信には HTTPS が必要です
  4. 本番環境対応: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 エンドポイントを手動でテストします
リソース

🌐 ご注意ください:このアプリケーションを本番環境で使用するには、HTTPS 対応のパブリックドメインが必要です。このドメインは、Claude Desktop との接続と Exotel の Webhook 配信に不可欠です。

🚀 デプロイの準備はできましたか? 上記のホスティングガイドに従って、Claude AI から SMS の送信、通話、オーディオツールの使用を始めましょう!

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。