🚀 ExotelMCP
ExotelMCP 是一个模型上下文协议(MCP)服务器,它能实现 Claude AI 与 Exotel 的短信和语音通话服务通信 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 桌面 → 设置 → 开发者 → 编辑配置
{
"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 仪表板。
- 导航到 设置 → API 设置。
- 复制你的 API 密钥 和 API 密钥。
步骤 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:用于短信合规性的 DLT 模板 ID(从仪表板 → DLT 获取)。
- YOUR_DLT_ENTITY:用于短信合规性的 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 调用。 示例命令:
- "向 +919999999999 发送短信,内容为 '来自 Claude 的问候!'"
- "拨打 +919999999999"
- "检查我最后一条短信的发送状态"
- "将 +919999999999 与 +919888888888 进行通话连接" 音频命令:
- "播放来自 https://example.com/song.mp3 的音频"
- "打开音频播放器界面"
- "下载来自 https://example.com/podcast.mp3 的音频"
✨ 主要特性
- 📱 短信服务:发送单条、批量和动态短信,符合 DLT 合规要求。
- ☎️ 语音通话:发起语音通话、连接号码并与通话流程集成。
- 📊 状态跟踪:实时交付状态和回调管理。
- 🎵 快速音频工具:一键音频播放、下载和访问网络播放器。
- 🔐 安全认证:基于令牌的认证系统。
- 🤖 Claude AI 集成:通过 MCP 协议与 Claude 直接集成。
📦 安装指南
安装 MCP 远程包
如果你还没有安装 mcp-remote
,可以运行以下命令进行安装:
npm install -g mcp-remote
验证安装是否成功:
npm list -g mcp-remote
💻 使用示例
基础用法
配置完成后,你可以使用 Claude 通过自然语言命令与 Exotel 服务进行交互。例如:
"Send an SMS to +919999999999 saying 'Hello from Claude!'"
高级用法
在复杂场景下,你可以组合多个操作,如同时发送多条短信和发起语音通话:
"Send an SMS to +919999999999 saying 'Hello from Claude!' and call +919888888888"
📚 详细文档
API 服务
短信服务
发送单条短信
向特定电话号码发送符合 DLT 合规要求的单条短信。 示例:
向 +919999999999 发送短信,内容为 "来自 Claude 的问候!",使用 DLT 模板 1107160086208866373 和实体 1101428740000012125
发送批量短信(相同消息)
同时向多个收件人发送相同的消息。 示例:
向以下号码发送 "欢迎使用我们的服务!":+919999999999、+919888888888、+919777777777
发送动态批量短信
向多个收件人发送个性化消息,每个消息内容不同。 示例:
发送个性化消息:向 +919999999999 发送 "你好,John",向 +919888888888 发送 "你好,Jane"
语音服务
发起语音通话
使用你注册的 Exotel 号码向任何电话号码发起语音通话。 示例:
从我的注册号码拨打 +919999999999
连接两个号码
在单个通话中桥接两个电话号码,将它们连接在一起。 示例:
在会议通话中连接 +919999999999 和 +919888888888
通话流程集成
将电话号码连接到预定义的 Exotel 通话流程或 IVR 系统。 示例:
将 +919999999999 连接到通话流程应用 ID 12345
状态与跟踪服务
检查短信发送状态
获取已发送短信的实时发送状态和详细信息。 示例:
检查发送到 +919999999999 的短信的发送状态
检查语音通话状态
检索语音通话的详细信息、时长和状态。 示例:
获取拨打到 +919999999999 的通话详细信息
获取通话历史记录
检索批量通话详细信息和历史记录以进行分析。 示例:
获取从 +919999999999 拨打的所有通话详细信息
号码信息
获取电话号码的元数据和信息。 示例:
获取电话号码 +919999999999 的信息
音频服务
快速音频工具
一键式快速音频播放和管理工具。
快速播放音频
获取可点击的链接,以便在浏览器中播放任何音频 URL。 示例:
播放来自 https://example.com/song.mp3 的音频
打开音频播放器
访问基于网络的音频播放器界面以进行全面控制。 示例:
打开音频播放器界面
快速下载
获取任何音频文件的直接下载链接。 示例:
下载来自 https://example.com/song.mp3 的音频
🔧 技术细节
认证
Exotel MCP 服务器使用安全的基于令牌的认证。你所有的 Exotel 凭证都在 Claude 桌面配置中进行配置,并用于与 Exotel 的 API 进行认证。
安全特性
- 安全令牌处理:你的 Exotel API 令牌得到安全处理。
- 用户隔离:每个用户的数据都保持独立和安全。
- DLT 合规性:内置支持印度短信的 DLT(分布式账本技术)要求。
获取你的 Exotel 凭证
- 登录到你的 Exotel 仪表板
- 导航到设置 → API 设置 以获取你的 API 密钥、API 密钥和账户 SID。
- 转到号码部分 以记录你注册的电话号码和来电显示 ID。
- 访问 DLT 部分 以获取你的 DLT 模板和实体 ID(印度短信合规性必需)。
- 使用 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 桌面。
- 发送测试消息:"使用 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
- 验证环境变量。
- 测试数据库连接。
回调问题
- 确保网络钩子可以访问你的服务器。
- 检查 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 密钥和 API 密钥。
- 确保在编码之前 API 密钥和密钥之间包含冒号 (
:
) 分隔符。 - 检查你的账户 SID 是否与你的 Exotel 账户匹配。
- 确保你的电话号码已正确在 Exotel 注册。
短信未送达
- 验证 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 发送短信、拨打电话和使用音频工具!







