语音呼叫MCP服务器
一个模型上下文协议(MCP)服务器,使Claude和其他AI助手能够使用Twilio和OpenAI(GPT-4o实时模型)发起和管理语音通话。
以此为基础,启动基于人工智能的语音通话探索,节省时间,并在此基础上开发其他功能。
序列图
sequenceDiagram
participant AI as AI Assistant (e.g., Claude)
participant MCP as MCP Server
participant Twilio as Twilio
participant Phone as Destination Phone
participant OpenAI as OpenAI
AI->>MCP: 1) Initiate outbound call request
(POST /calls)
MCP->>Twilio: 2) Place outbound call via Twilio API
Twilio->>Phone: 3) Ring the destination phone
Twilio->>MCP: 4) Call status updates & audio callbacks (webhooks)
MCP->>OpenAI: 5) Forward real-time audio to OpenaAI's realtime model
OpenAI->>MCP: 6) Return voice stream
MCP->>Twilio: 7) Send voice stream
Twilio->>Phone: 8) Forward voice stream
Note over Phone: Two-way conversation continues
until the call ends特性
- 通过Twilio拨打对外电话📞
- 使用GPT-4o实时模型实时处理呼叫音频🎙️
- 通话时实时切换语言🌐
- 常见通话场景(如餐厅预订)的预构建提示🍽️
- 使用ngrok实现自动公共URL隧道🔄
- 安全处理凭据🔒
为什么选择MCP?
模型上下文协议(MCP)弥合了人工智能助手和现实世界行为之间的差距。通过实施MCP,该服务器允许像Claude这样的AI模型:
- 代表用户发起实际电话
- 处理和响应实时音频对话
- 执行需要语音通信的复杂任务
这种开源实现提供了透明度和可定制性,允许开发人员扩展功能,同时保持对数据和隐私的控制。
需求
- Node.js>=22
- 如果你需要更新Node.js,我们建议使用 nvm (节点版本管理器):
nvm install 22
nvm use 22- 具有API证书的Twilio帐户
- OpenAI API密钥
- Ngrok身份验证令牌
安装
手动安装
- 克隆存储库
git clone https://github.com/lukaskai/voice-call-mcp-server.git
cd voice-call-mcp-server- 安装依赖项并构建
npm install
npm run build配置
服务器需要几个环境变量:
TWILIO_ACCOUNT_SID:您的Twilio帐户SIDTWILIO_AUTH_TOKEN:您的Twilio身份验证令牌TWILIO_NUMBER:你的Twilio号码OPENAI_API_KEY:您的OpenAI API密钥NGROK_AUTHTOKEN:您的ngrok身份证RECORD_CALLS:设置为“true”以记录通话(可选)
Claude桌面配置
要将此服务器与Claude Desktop一起使用,请将以下内容添加到配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"voice-call": {
"command": "node",
"args": ["/path/to/your/mcp-new/dist/start-all.cjs"],
"env": {
"TWILIO_ACCOUNT_SID": "your_account_sid",
"TWILIO_AUTH_TOKEN": "your_auth_token",
"TWILIO_NUMBER": "your_e.164_format_number",
"OPENAI_API_KEY": "your_openai_api_key",
"NGROK_AUTHTOKEN": "your_ngrok_authtoken"
}
}
}
}之后,重新启动Claude Desktop以重新加载配置。 如果已连接,您应该在下面看到语音通话🔨 菜单。
与Claude的互动示例
以下是通过Claude与服务器交互的一些自然方式:
- 简单呼叫:
Can you call +1-123-456-7890 and let them know I'll be 15 minutes late for our meeting?- 餐厅预订:
Please call Delicious Restaurant at +1-123-456-7890 and make a reservation for 4 people tonight at 7:30 PM. Please speak in German.- 预约时间安排:
Please call Expert Dental NYC (+1-123-456-7899) and reschedule my Monday appointment to next Friday between 4–6pm.重要提示
- 电话号码格式:所有电话号码必须采用E.164格式(例如+1234567890)
- 速率限制:了解您的Twilio和OpenAI帐户的费率限制和定价
- 语音对话:人工智能将实时处理自然对话
- 呼叫持续时间:注意呼叫持续时间,因为它们会影响OpenAI API和Twilio成本
- 暴露于公开场合:请注意,ngrok隧道会公开暴露您的服务器,供Twilio访问(尽管使用随机URL并受随机秘密保护)
故障排除
常见错误消息和解决方案:
- “电话号码必须采用E.164格式”
- 确保电话号码以“+”和国家代码开头
- “凭据无效”
- 仔细检查您的TWILIO_ACCOUNT_SID和TWILIO.AUTH_TOKEN。您可以从 Twilio控制台
- “OpenAI API错误”
- 验证您的OPENAI_API_KEY是否正确并且有足够的信用
- “Ngrok隧道无法启动”
- 确保您的NGROK_AUTHTOKEN有效且未过期
- “OpenAI Realtime无法检测到语音输入的结束,或者正在滞后。”
- 有时,Twilio和接收方的网络运营商之间可能存在语音编码问题。尝试使用其他接收器。
贡献
欢迎投稿!以下是我们希望改进的一些方面:
- 实现对当前实现之外的多个AI模型的支持
- 添加数据库集成,在本地存储对话历史记录,并使其可供人工智能上下文访问
- 改善延迟和响应时间,以增强通话体验
- 增强错误处理和恢复机制
- 为常见场景添加更多预构建的对话模板
- 实施改进的呼叫监控和分析
如果你想贡献,请在提交pull请求之前打开一个问题来讨论你的想法。
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
安全
请不要在GitHub问题或拉取请求中包含任何敏感信息(如电话号码或API凭据)。该服务器处理敏感通信;负责任地部署它,并确保所有凭据都保持安全。
是时候执行新任务了吗?
我们正在招聘工程师,在语音人工智能的前沿进行构建,并将其打造成下一代电信公司。
好奇?前往 职业者.popcorn.space 🍿 !
