🚀 ExotelMCP
ExotelMCPは、Claude AIとExotelのSMSおよび音声通話サービス用の通信APIをシームレスに統合するModel Context Protocol (MCP)サーバーです。また、便利なオーディオツールも備えています。
✨ 主な機能
- 📱 SMSサービス:DLT準拠で、単一、一括、動的なSMSメッセージを送信できます。
- ☎️ 音声通話:音声通話を開始し、電話番号を接続し、通話フローと統合できます。
- 📊 ステータス追跡:リアルタイムの配信ステータスとコールバック管理が可能です。
- 🎵 オーディオツール:ワンクリックでオーディオ再生、ダウンロード、ウェブプレイヤーにアクセスできます。
- 🔐 セキュア認証:トークンベースの認証システムが搭載されています。
- 🤖 Claude AI統合:MCPプロトコルを通じてClaudeと直接統合できます。
📚 目次
- 前提条件
- 設定
- 使用方法
- APIサービス
- 認証
- サポート
📦 インストール
前提条件
Exotel MCPサーバーを使用する前に、以下が必要です。
- Claudeデスクトップアプリ:最新バージョンをインストールしてください。
- Node.jsとnpm:MCPリモート接続に必要です。
- Exotelアカウント:API資格情報を持つアクティブなアカウントが必要です。
- MCPリモートパッケージ:まだインストールされていない場合は、インストールしてください。
MCPリモートのインストール
mcp-remote
がインストールされていない場合は、以下のコマンドを実行します。
npm install -g mcp-remote
インストールを確認するには、以下のコマンドを実行します。
npm list -g mcp-remote
Claudeデスクトップの設定
ExotelMCPをClaudeと統合するには、Claudeデスクトップ設定に以下の設定を追加します。 場所:Claude Desktop → Settings → Developer → Edit Config
{
"mcpServers": {
"exotel": {
"command": "npx",
"args": [
"mcp-remote",
"http://ec2-13-127-242-200.ap-south-1.compute.amazonaws.com:8080/mcp",
"--allow-http",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "{'token':'YOUR_EXOTEL_TOKEN','from_number':'YOUR_FROM_NUMBER','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'}"
}
}
}
}
必要な資格情報
プレースホルダー値を実際のExotel資格情報に置き換えます。
YOUR_EXOTEL_TOKEN:Base64エンコードされたAPI資格情報
このトークンは、Exotel APIキーとシークレットをBase64形式でエンコードすることで作成されます。 手順1:ExotelダッシュボードからAPI資格情報を取得する
- Exotelダッシュボードにログインします。
- Settings → API Settingsに移動します。
- API KeyとAPI Secretをコピーします。
手順2:Base64トークンを作成する
形式:api_key:api_secret
(コロン区切り)
例:APIキーがabc123
で、APIシークレットが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電話番号(ダッシュボード → 番号)
- YOUR_DLT_TEMPLATE:SMS準拠のためのDLTテンプレートID(ダッシュボード → DLT)
- YOUR_DLT_ENTITY:SMS準拠のためのDLTエンティティID(ダッシュボード → DLT)
- YOUR_CALLER_ID:登録された発信者ID(ダッシュボード → 番号)
- YOUR_ACCOUNT_SID:ExotelアカウントのSID(ダッシュボード → API設定)
- YOUR_SUB_DOMAIN:Exotelアカウントのサブドメイン(ダッシュボード → API設定)
- YOUR_EXOTEL_DASHBOARD_BASE_URL:ExotelダッシュボードのベースURL
💻 使用例
設定が完了したら、自然言語コマンドを使用してClaudeを介してExotelサービスとやり取りできます。やりたいことを説明するだけで、ClaudeがMCPサーバーを通じてAPI呼び出しを処理します。
例のコマンド
- "Send an SMS to +919999999999 saying 'Hello from Claude!'"
- "Call +919999999999"
- "Check the delivery status of my last SMS"
- "Connect +919999999999 with +919888888888"
オーディオコマンド
- "Play audio from https://example.com/song.mp3"
- "Open the audio player interface"
- "Download audio from https://example.com/podcast.mp3"
📚 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
音声サービス
音声通話の開始
登録されたExotel番号を使用して、任意の電話番号に音声通話を開始します。 例:
Call +919999999999 from my registered number
2つの番号を接続する
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 MCPサーバーは、セキュアなトークンベースの認証を使用しています。すべてのExotel資格情報はClaudeデスクトップ設定で構成され、ExotelのAPIとの認証に使用されます。
セキュリティ機能
- セキュアなトークン処理:Exotel APIトークンが安全に処理されます。
- ユーザー分離:各ユーザーのデータは分離され、安全に保管されます。
- DLT準拠:インドのSMSに対するDLT(分散台帳技術)要件の組み込みサポートがあります。
Exotel資格情報の取得
- Exotelダッシュボードにログインします
- Settings → API Settingsに移動して、APIキー、APIシークレット、およびアカウントSIDを取得します。
- Numbersセクションに移動して、登録された電話番号と発信者IDをメモします
- DLTセクションにアクセスして、DLTテンプレートとエンティティIDを取得します(インドのSMS準拠に必要)
- 設定セクションで詳述されているように、APIキーとシークレットを使用してBase64トークンを作成します
これらのすべての資格情報は、上記のようにClaude設定に適切にフォーマットされて追加する必要があります。
ホスティングとデプロイ
🌐 重要:パブリックドメインの要件
このアプリケーションは、以下の理由から、パブリックドメインでホストされ、HTTPSが有効になっている必要があります。
- MCPリモート接続:Claudeデスクトップはパブリックインターネットを介してサーバーに接続します。
- Exotelウェブフック: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"]
# ビルドと実行
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_PORT=8080
SPRING_PROFILES_ACTIVE=production
# アプリケーションURL(重要 - ドメインと一致する必要があります)
EXOTEL_BASE_URL=https://your-domain.com
# セキュリティ
SPRING_SECURITY_REQUIRE_SSL=true
# ロギング
LOGGING_LEVEL_ROOT=WARN
LOGGING_LEVEL_COM_EXAMPLE_MCP_API=INFO
Claude設定の更新
{
"mcpServers": {
"exotel": {
"command": "npx",
"args": [
"mcp-remote",
"https://your-domain.com/mcp",
"--allow-http", // サーバーがhttpsで実行されている場合はこれを削除します。
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "{'token':'YOUR_EXOTEL_TOKEN','from_number':'YOUR_FROM_NUMBER','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'}"
}
}
}
}
本番環境チェックリスト
- [ ] ドメイン:登録され、DNSが設定されていることを確認してください。
- [ ] HTTPS:SSL証明書がインストールされ、正常に動作していることを確認してください。
- [ ] サーバー:アプリケーションがポート8080で実行されていることを確認してください。
- [ ] ファイアウォール:ポート80、443、および8080が開いていることを確認してください。
- [ ] 監視:ヘルスチェックとロギングが設定されていることを確認してください。
オーディオサービスの要件
オーディオツール:
- ✅ インターネットアクセスがある任意のサーバーで動作します。
- ✅ 特別なハードウェアは必要ありません。
- ✅ ブラウザベースの再生が可能です。
- ✅ すべての一般的なオーディオ形式(mp3、wav、oggなど)をサポートしています。
デプロイのテスト
1. MCPエンドポイントのテスト
curl https://your-domain.com/mcp
# データが返されるはずです:{"type": "connection_established"}
3. Claudeでのテスト
- Claude設定をドメインで更新します。
- Claudeデスクトップを再起動します。
- テストメッセージを送信します:"Send a test SMS to +919999999999 using DltEntityId=XXXXXXX, From=EXOTEL,DltTemplateId=XXXXXXXXX"
デプロイのトラブルシューティング
接続問題
- ファイアウォール設定を確認してください。
- DNSの伝播を確認します:
nslookup your-domain.com
- HTTPSをテストします:
curl -I https://your-domain.com
アプリケーション問題
- アプリケーションログを確認します:
tail -f logs/mcp-server.log
- 環境変数を確認してください。
- データベース接続をテストしてください。
コールバック問題
- ウェブフックがサーバーに到達できることを確認してください。
- ExotelのコールバックURL設定を確認してください。
- コールバックのHTTPSが正常に動作していることを確認してください。
サポート
ヘルプの取得
- 設定問題:Exotel資格情報とClaude設定を再確認してください。
- デプロイ問題:ドメイン、HTTPS、およびサーバーのアクセス可能性を確認してください。
- APIの使用:使用例については、APIサービスセクションを参照してください。
- Exotelアカウント:アカウント関連の問題は、Exotelサポートに問い合わせてください。
- DLT準拠:DLTテンプレートとエンティティIDが適切に登録されていることを確認してください。
一般的な問題
"Connection Failed"エラー
- ドメインがアクセス可能であることを確認します:
curl https://your-domain.com/mcp
mcp-remote
のインストールを確認します:npm list -g mcp-remote
- HTTPSが適切に設定されていることを確認してください。
- ファイアウォールがポート443での着信接続を許可していることを確認してください。
"Authentication Failed"エラー
- Exotel APIトークンが
api_key:api_secret
形式から正しくBase64エンコードされていることを確認してください。 - Exotelダッシュボード → Settings → API SettingsからAPIキーとAPIシークレットを再確認してください。
- エンコード前にAPIキーとシークレットの間にコロン (
:
) 区切り文字が含まれていることを確認してください。 - アカウントSIDがExotelアカウントと一致していることを確認してください。
- 電話番号がExotelに適切に登録されていることを確認してください。
SMSが配信されない場合
- DLTテンプレートとエンティティIDが正しいことを確認してください。
- メッセージ内容が登録されたDLTテンプレートと一致していることを確認してください。
- 受信者の番号が有効で、到達可能であることを確認してください。
- コールバックウェブフックがステータス更新を受信していることを確認してください。
ウェブフック/コールバック問題
- サーバーがインターネットからアクセス可能であることを確認してください。
- HTTPS証明書が有効であることを確認してください。
- コールバックURLがパブリックドメインを使用していることを確認してください。
- ウェブフックエンドポイントを手動でテストしてください。
リソース
- Exotelドキュメント:https://developer.exotel.com/
- DLT情報:https://www.trai.gov.in/
- Claudeデスクトップ: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デスクトップの接続性とExotelウェブフックの配信に不可欠です。
🚀 デプロイの準備はできましたか? 上記のホスティングガイドに従って、Claude AIを通じてSMSの送信、通話の開始、およびオーディオツールの使用を開始しましょう!







