返回市场
语音呼叫MCP服务器

语音呼叫MCP服务器

作者:popcornspace52 星标更新:2025-04-15

项目介绍

声音呼叫MCP服务器

这是一个模型上下文协议(MCP)服务器,它使Claude和其他AI助手能够使用Twilio和OpenAI(GPT-4o实时模型)发起和管理语音通话。

使用此基础来启动您的AI驱动的语音呼叫探索,节省时间,并在此基础上开发额外的功能。

演示

序列图

sequenceDiagram
    participant AI as AI助手(例如,Claude)
    participant MCP as MCP服务器
    participant Twilio as Twilio
    participant Phone as 目标电话
    participant OpenAI as OpenAI
    
    AI->>MCP: 1) 发起外拨电话请求<br>(POST /calls)
    MCP->>Twilio: 2) 通过Twilio API拨打电话
    Twilio->>Phone: 3) 拨打目标电话
    Twilio->>MCP: 4) 通话状态更新及音频回调(webhooks)
    MCP->>OpenAI: 5) 向OpenAI的实时模型转发实时音频
    OpenAI->>MCP: 6) 返回语音流
    MCP->>Twilio: 7) 发送语音流
    Twilio->>Phone: 8) 转发语音流
    Note over Phone: 双向对话持续进行<br>直到通话结束

特性

  • 通过Twilio发起外拨电话 📞
  • 使用GPT-4o实时模型处理实时通话音频 🎙️
  • 在通话期间实时切换语言 🌐
  • 预建常见呼叫场景(如餐厅预订)的提示词 🍽️
  • 自动公共URL隧道(ngrok)🔄
  • 安全处理凭证 🔒

为什么选择MCP?

模型上下文协议(MCP)弥合了AI助手与现实世界行动之间的差距。通过实现MCP,该服务器允许像Claude这样的AI模型:

  1. 代表用户发起实际电话
  2. 处理并响应实时音频对话
  3. 执行需要语音通信的复杂任务

这个开源实现提供了透明性和可定制性,允许开发者扩展功能同时保持对其数据和隐私的控制。

要求

  • Node.js >= 22
    • 如果您需要更新Node.js,我们建议使用nvm(Node版本管理器):
      nvm install 22
      nvm use 22
      
  • 具有API凭证的Twilio账户
  • OpenAI API密钥
  • Ngrok认证令牌

安装

手动安装

  1. 克隆仓库

    git clone https://github.com/lukaskai/voice-call-mcp-server.git
    cd voice-call-mcp-server
    
  2. 安装依赖项并构建

    npm install
    npm run build
    

配置

服务器需要几个环境变量:

  • TWILIO_ACCOUNT_SID:您的Twilio账户SID
  • TWILIO_AUTH_TOKEN:您的Twilio认证令牌
  • TWILIO_NUMBER:您的Twilio号码
  • OPENAI_API_KEY:您的OpenAI API密钥
  • NGROK_AUTHTOKEN:您的ngrok认证令牌
  • RECORD_CALLS:设置为“true”以记录通话(可选)

Claude桌面配置

要将此服务器与Claude桌面一起使用,请在配置文件中添加以下内容:

macOS~/Library/Application Support/Claude/claude_desktop_config.json

Windows%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桌面以重新加载配置。如果已连接,您应该能在🔨菜单下看到语音呼叫。

与Claude的示例交互

这里有一些自然的方式通过Claude与服务器互动:

  1. 简单呼叫:
你可以拨打+1-123-456-7890并告诉他们我开会迟到15分钟吗?
  1. 餐厅预订:
请拨打Delicious Restaurant的+1-123-456-7890并预订今晚7:30的4人餐位。请用德语交谈。
  1. 预约安排:
请拨打Expert Dental NYC的+1-123-456-7899并将我的周一预约改到下周五下午4-6点之间。

重要注意事项

  1. 电话号码格式:所有电话号码必须采用E.164格式(例如,+11234567890)
  2. 速率限制:请注意您的Twilio和OpenAI账户的速率限制和定价
  3. 语音对话:AI将实时处理自然对话
  4. 通话时长:注意通话时长,因为它会影响OpenAI API和Twilio的成本
  5. 公开暴露:请注意ngrok隧道会公开暴露您的服务器供Twilio访问(尽管是随机URL且受随机密钥保护)

故障排除

常见的错误消息及其解决方案:

  1. “电话号码必须采用E.164格式”

    • 确保电话号码以"+"开头并包含国家代码
  2. “无效凭证”

    • 再次检查您的TWILIO_ACCOUNT_SID和TWILIO_AUTH_TOKEN。您可以从Twilio控制台复制它们
  3. “OpenAI API错误”

    • 验证您的OPENAI_API_KEY是否正确且有足够的信用额度
  4. “ngrok隧道无法启动”

    • 确保您的NGROK_AUTHTOKEN有效且未过期
  5. “OpenAI实时模型未能检测到语音输入的结束,或存在延迟。”

    • 有时,可能会出现Twilio与接收方网络运营商之间的语音编码问题。尝试使用不同的接收方。

贡献

欢迎贡献!以下是希望改进的一些领域:

  • 实现对当前实现之外多个AI模型的支持
  • 添加数据库集成以本地存储对话历史并使其可供AI上下文使用
  • 改进延迟和响应时间以增强通话体验
  • 增强错误处理和恢复机制
  • 添加更多预建的常见场景对话模板
  • 实现改进的通话监控和分析

如果您想贡献,请在提交拉取请求之前打开一个议题讨论您的想法。

许可

本项目根据MIT许可发布 - 查看LICENSE文件了解详情。

安全

请不要在GitHub问题或拉取请求中包含任何敏感信息(如电话号码或API凭证)。此服务器处理敏感通信;请负责任地部署并确保所有凭证安全。

新使命时刻?

我们正在招聘工程师,在语音AI的前沿进行建设——并将其融入下一代电信服务。

感兴趣?前往careers.popcorn.space 🍿!