电话触发服务

Vapi MCP Server 是一个基于Model Context Protocol (MCP)的服务,用于通过Vapi AI平台触发外拨电话,支持HTTP/SSE传输协议并部署在Railway上。

  • by thekyleliao
  • JavaScript
  • 混合部署
  • 更新于
在 GitHub 查看 thekyleliao/vapi_mcp

使用说明

Vapi MCP服务器

用于使用Vapi AI平台触发出站电话呼叫的模型上下文协议(MCP)服务器。部署在铁路上,使用HTTP/SSE传输进行远程访问。

特性

  • MCP协议:使用HTTP/SSE传输的完整MCP服务器实现
  • 单一工具: trigger_vapi_call -使用ANDY助手触发出站呼叫
  • 远程访问:可部署在铁路上用于云访问
  • 苏格兰和南方能源公司运输:双向MCP通信的服务器发送事件

MCP工具

trigger_vapi_call

使用您配置的Vapi助手(Andy)触发出站电话。

参数:

  • phoneNumber (必填):要拨打的电话号码(包括国家代码,例如+1234567890)

MCP请求示例:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "trigger_vapi_call",
    "arguments": {
      "phoneNumber": "+1234567890"
    }
  }
}

地方发展

  1. 安装依赖项:

    npm install
    
  2. 创建 .env.local 文件:

    VAPI_API_KEY=your_vapi_api_key
    ANDY=cde00b8a-3ebf-4d4f-8587-7e8fec8e5fda
    
  3. 构建并运行:

    npm run build
    npm start
    
  4. 测试MCP服务器:

    # Health check
    curl http://localhost:3000/health
    
    # MCP SSE endpoint
    curl http://localhost:3000/sse
    

铁路部署

方法1:铁路仪表盘(推荐)

  1. 推送到GitHub:

    # Create a GitHub repository and push your code
    git remote add origin https://github.com/yourusername/vapi-mcp-server.git
    git push -u origin master
    
  2. 通过铁路仪表板部署:

    • 首选 Railway.app
    • 点击“新建项目”→ “从GitHub仓库部署”
    • 选择您的 vapi-mcp-server 仓库
    • Railway会自动检测到它是一个Node.js项目
  3. 设置环境变量:

    • 在铁路项目仪表板中,转到变量选项卡
    • 添加以下环境变量:
      • VAPI_API_KEY:您的Vapi私钥(不是公钥)
      • ANDY: cde00b8a-3ebf-4d4f-8587-7e8fec8e5fda
  4. 部署:

    • 铁路将自动构建和部署
    • 从部署中获取您的公共URL

方法2:铁路CLI(备选方案)

  1. 安装铁路CLI:

    npm install -g @railway/cli
    
  2. 登录铁路:

    railway login
    
  3. 初始化铁路项目:

    railway init
    
  4. 添加服务(交互式):

    railway add
    # Select "Empty Service" when prompted
    
  5. 设置环境变量:

    railway variables --set "VAPI_API_KEY=your_vapi_api_key"
    railway variables --set "ANDY=cde00b8a-3ebf-4d4f-8587-7e8fec8e5fda"
    
  6. 部署:

    railway up
    

使用Poke

STDIO传输(建议用于Poke)

Poke通过STDIO传输支持MCP服务器。使用服务器的STDIO版本:

本地测试:

npm run dev:stdio

对于Poke配置:

  • 命令: node /path/to/your/vapi-mcp-server/dist/stdio-server.js
  • 工作目录: /path/to/your/vapi-mcp-server
  • 环境变量:设置 VAPI_API_KEY 和 ANDY 在Poke的环境中

HTTP/SSE传输(用于远程访问)

HTTP版本可通过Railway进行远程访问:

本地测试:

npm run dev

铁路部署:

  • 统一资源定位符: https://YOUR_RAILWAY_URL/sse
  • 运输:服务器发送事件(SSE)
  • 认证:可选通过 MCP_API_KEY

与MCP客户端一起使用

部署后,您可以使用任何兼容MCP的客户端连接到MCP服务器:

连接到远程MCP服务器

SSE端点: https://YOUR_RAILWAY_URL/sse

服务器通过服务器发送事件(SSE)实现MCP协议,允许远程客户端:

  • 列出可用工具
  • 打电话给 trigger_vapi_call 工具
  • 通过SSE流接收响应

客户端连接示例

import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';

// Connect to your Railway-deployed MCP server
const transport = new SSEClientTransport('https://YOUR_RAILWAY_URL/sse');
const client = new Client({
  name: 'vapi-client',
  version: '1.0.0'
}, {
  capabilities: {}
});

await client.connect(transport);

// List available tools
const tools = await client.listTools();
console.log('Available tools:', tools);

// Trigger a call
const result = await client.callTool({
  name: 'trigger_vapi_call',
  arguments: {
    phoneNumber: '+1234567890'
  }
});

console.log('Call result:', result);

API终点

  • GET / -服务器信息和MCP详细信息
  • GET /health -铁路监控健康检查
  • GET /sse -MCP服务器发送事件端点

环境变量

  • VAPI_API_KEY:您的Vapi API密钥(必需)
  • ANDY:呼叫助理ID(默认为 cde00b8a-3ebf-4d4f-8587-7e8fec8e5fda)
  • MCP_API_KEY:用于MCP服务器身份验证的可选API密钥
  • PORT:服务器端口(Railway会自动设置此端口)

Vapi集成

服务器与Vapi的API集成:

  • 端点: POST https://api.vapi.ai/call
  • 认证:使用承载令牌 VAPI_API_KEY
  • 有效载荷: { "assistantId": "cde00b8a-3ebf-4d4f-8587-7e8fec8e5fda", "customer": { "number": "+1234567890" } }

故障排除

  • 检查日志: railway logs (如果使用CLI)或铁路仪表板中的视图
  • 健康检查:参观 https://YOUR_RAILWAY_URL/health 验证部署
  • MCP端点:测试 https://YOUR_RAILWAY_URL/sse 用于MCP连接
  • 环境变量:确保 VAPI_API_KEY 设置正确
  • 电话号码格式:包括国家代码(例如。, +1234567890)

MCP协议详细信息

此服务器实现了模型上下文协议(MCP)规范:

  • 运输:服务器发送事件(SSE)
  • 协议:基于SSE的JSON-RPC 2.0
  • 能力:工具
  • 工具: trigger_vapi_call