关于 Exotel Mcp
Exotel Mcp 是通过 Claude 等 MCP 客户端调用 Exotel 通信 API 的 MCP 服务,涵盖消息、语音、对话分析、VoiceBot 和 AI Assist,并可按服务组配置凭据。
主要功能
- 01发送单条、批量和动态 SMS
- 02创建 Engage SMS 活动
- 03发送 WhatsApp 消息
- 04拨打电话并接入呼叫流程
- 05跟踪消息和通话状态
- 06使用音频、对话分析、VoiceBot 和 AI Assist
适用场景
- 01向客户发送符合规范的 SMS 或 WhatsApp 消息
- 02拨打电话或通过呼叫流程连接客户
- 03通过对话质量分析检查互动记录
- 04配置 VoiceBot 或 AI Assist
MCP 相关
将 Exotel 的消息、电话、音频和 AI 相关操作作为工具提供给 MCP 客户端。README 介绍了与 Claude 的直接集成,也说明可配置其他 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
原文在翻译后有更新,译文可能不是最新。
ExotelMCP
一个模型上下文协议(MCP)服务,可无缝连接 Claude AI 与 Exotel 的短信和语音通话通信 API,并提供快速音频工具。
功能
- 📱 短信服务:发送单条、批量和动态短信,并符合 DLT 规范
- 📨 Engage 短信营销活动:通过 Engage API 创建静态短信营销活动
- ☎️ 语音通话:发起语音通话、连接号码并集成呼叫流程
- 📊 状态跟踪:实时跟踪送达状态并管理回调
- 🎵 快速音频工具:一键播放和下载音频,并访问网页播放器
- 🔍 对话智能:借助 AI 分析语音和数字渠道中 100% 的对话质量
- 🤖 VoiceBot:创建、管理并使用 VoiceBot 发起 AI 驱动的外呼
- 🎧 AI Assist:通过 MCP 配置实时 Agent 辅助功能(智能回复、转录、知识库)
- 🔐 安全身份验证:通过 Authorization 标头进行基于令牌的用户身份验证
- 🤖 Claude AI 集成:通过 MCP 协议直接集成 Claude
目录
先决条件
使用 Exotel MCP 服务前,请确保已具备:
- Claude 桌面应用:已安装最新版本
- Node.js 和 npm:MCP 远程连接所需
- Exotel 账户:已启用且具有 API 凭据的账户
- MCP Remote 软件包:如果尚未安装,请先安装
安装 MCP Remote
如果尚未安装 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",
"https://mcp.exotel.com/mcp",
"--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','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:用于短信合规的 DLT 模板 ID(位于 Dashboard → DLT)
- YOUR_DLT_ENTITY:用于短信合规的 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)
注意:只有计划使用质量分析工具时,才需要对话智能凭据。短信和语音工具可独立使用。
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)
身份验证:提供以下一种模式(Twilix Basic 是 CPaaS 租户的默认模式):
| 模式 | 字段 |
|---|---|
| Twilix Basic(推荐) | ai_assist_auth_key、ai_assist_auth_secret |
| Auth0 M2M | ai_assist_client_id、ai_assist_client_secret |
| 手动 bearer | 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 的问候!’”
- “呼叫 +919999999999”
- “查看我最近一条短信的送达状态”
- “将 +919999999999 与 +919888888888 接通”
音频命令:
- “播放来自 https://example.com/song.mp3 的音频”
- “打开音频播放器界面”
- “从 https://example.com/podcast.mp3 下载音频”
对话智能 —— 设置命令:
- “以 [email protected] 身份登录租户 my_tenant 的 CQA”
- “创建一个名为‘Support Evaluation’的质量档案,类别为‘Communication’,子类别为‘Clarity’,并设置 KPI:‘Clear Speech’(是/否,选项:是=1/否=0)、‘Professional Tone’(是/否,选项:是=1/否=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 服务
短信服务
发送单条短信
向指定电话号码发送单条符合 DLT 规范的短信。
示例:
Send an SMS to +919999999999 with message "Hello from Claude!" using DLT template 1107160086208866373 and entity 1101428740000012125
发送批量短信(相同内容)
一次向多个收件人发送相同内容的短信。
示例:
Send "Welcome to our service!" to these numbers: +919999999999, +919888888888, +919777777777
发送动态批量短信
向多个收件人发送个性化消息,每位收件人的内容各不相同。
示例:
Send personalized messages: "Hello John" to +919999999999 and "Hello Jane" to +919888888888
Engage 短信营销活动
在 Engage 上创建静态短信营销活动(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
语音服务
发起语音通话
使用已注册的 Exotel 号码呼叫任意电话号码。
示例:
Call +919999999999 from my registered number
接通两个号码
在一次通话中桥接两个电话号码,将它们接通。
示例:
Connect +919999999999 with +919888888888 in a conference call
通话流程集成
将电话号码连接到预定义的 Exotel 通话流程或 IVR 系统。
示例:
Connect +919999999999 to call flow app_id 12345
状态与跟踪服务
查看短信送达状态
实时获取已发送短信的送达状态和详情。
示例:
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
打开音频播放器
访问基于 Web 的音频播放器界面,全面掌控播放。
示例:
Open the audio player interface
快速下载
获取任意音频文件的直接下载链接。
示例:
Download audio from https://example.com/song.mp3
对话智能服务
Exotel 对话智能 使用 AI 分析语音和数字渠道中 100% 的客户对话,提供实时质量情报。该平台可在几分钟内审查数千条对话,并在客观评估中保持超过 90% 的准确率,以大规模、持续自动化的 QA 取代人工抽样。
身份验证: CQA 工具使用两种身份验证方法:
- 设置工具(登录、质量配置文件、API 密钥、分配规则)使用通过登录工具获取的 JWT 身份验证 — 无需预配置凭据
- 摄取和分析工具(摄取、状态、结果)使用在 MCP 身份验证标头中配置的
cqa_api_key
API 密钥:从 对话智能控制台 生成 API 密钥,或通过 exotel_cqa_create_api_key MCP 工具生成,然后在 MCP 配置中将其作为 cqa_api_key 提供。
登录
通过 CQA 进行身份验证,以获取设置操作(质量配置文件、API 密钥、分配规则)所需的 JWT 令牌。
示例:
Login to CQA as [email protected] on tenant exotel_support
创建质量配置文件
通过单次调用创建包含类别、子类别和 KPI 的完整质量配置文件。创建后将自动启用 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 类型: 是/否、选择、评分、文本
是/否、选择和评分类型必须提供选项。每个选项都需要
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
摄取单个交互
提交单条通话录音或转录文本以进行质量分析。至少提供 audioUrl、transcriptUrl 或内联 transcriptText 其中之一(最大 200KB)。
示例:
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。如果设置了身份验证标头中的 accountId,它必须与 cqa_account_id 匹配。
批量摄取
一次提交最多 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.
发起 Bot 外呼
发起由 VoiceBot 驱动的电话呼叫——Bot 将处理整个对话。
示例:
Call +919999999999 using my order-confirmation bot
获取通话详情
查看 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 服务
实时 Agent 辅助:为联络中心 Agent 提供转录、情感分析、智能回复、处理结果提示和基于知识库的内容参考。工具前缀为 exotel_aiassist_*。
**身份验证:**配置 ai_assist_base_url、ai_assist_account_sid,并在 Authorization 标头中选择一种身份验证模式(参见 AI Assist 凭据)。使用 exotel_aiassist_whoami 验证配置。
**读取工具:**列出/获取助手、附件、知识库上传任务、描述模板、ASR 提供商、大模型语言、Agent、交互、设置和流 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 合规性:内置支持印度短信所需的 DLT(分布式账本技术)要求
获取 Exotel 凭据
- 登录 Exotel Dashboard
- 前往 Settings → API Settings,获取 API Key、API Secret 和 Account SID
- 前往 Numbers 部分,记下已注册的电话号码和来电显示号码
- 访问 DLT 部分,获取 DLT 模板和实体 ID(印度短信合规所需)
- 使用 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','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 不可用时,请使用本地服务。短信活动和所有其他工具的运行方式与生产环境相同。
# 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'}"
}
}
}
}
完全退出并重新打开 Claude Desktop,让 CoWork 加载该服务。协调操作期间,请保持本地 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 发送测试短信”
部署故障排查
连接问题
- 检查防火墙设置
- 验证 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 控制面板 → 设置 → API 设置中的 API Key 和 API Secret
- 确保在编码前,API Key 和 Secret 之间包含冒号(
:)分隔符 - 检查账户 SID 是否与 Exotel 账户匹配
- 确保电话号码已在 Exotel 正确注册
短信未送达
- 验证 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 发送短信、拨打电话并使用音频工具!
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。