Vonage MCP服务器
Vonage的,之SMS发送CSV提供批量发送、语音通话功能MCP (Model Context Protocol) Server实施。
安装方法
方法1:MCPB Bundle(建议-一键安装)
Claude Desktop易于安装:
- MCPB下载文件
- Claude Desktop打开
- .mcpb双击文件或Claude Desktop拖放到
- 设置环境变量
- Claude Desktop在安装对话框中输入: - VONAGE_APPLICATION_ID:Vonage应用程序ID - VONAGE_PRIVATE_KEY_PATH:私钥文件路径(例如: /Users/your-name/vonage/private.key) - VONAGE_VOICE_FROM:音声通话用の电话番号(E.164形式、例: 81345438093)
- 安装完成
- Claude Desktop重新启动时Vonage MCP服务器可用
方法2:手动设置
安装,安装
安装相关性
npm installVonage设定
- Vonage创建帐户
- Vonage开发者门户 创建帐户 - 创建应用程序Application ID获得
- 私钥准备
- Vonage Developer Portal下载私钥 - 项目根目录 private.key 保存为
- 设置环境变量
cp .env.example .env.env 编辑文件并设置:
VONAGE_APPLICATION_ID=your_application_id_here
VONAGE_PRIVATE_KEY_PATH=./private.key
VONAGE_VOICE_FROM=14155550100 # Voice通話用のFROM番号安装开发依赖关系
npm install --save-dev @types/node typescript ts-node开発
启动开发服务器
npm run dev:startTypeScript编译
npm run build运行编译的代码
# 環境変数ファイル(.env)を使用して実行(推奨・Node.js v22以降)
npm start
# 環境変数ファイルを使用せずに実行(従来方式)
npm run start:legacy文件监视模式(编译)
npm run dev清理构建文件
npm run clean运行测试
npm test测试监控模式
npm run test:watch覆盖测试
npm run test:coverageClaude Desktop利用期间
这MCP打开服务器Claude Desktop中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
方法1:MCPB Bundle(建议-一键安装)
.mcpb在您查看完详细信息后,单击Claude Desktop对较大场景进行渲染期间已观察到该故障。
安装说明
- MCPB创建文件
npm run build:mcpb因此 vonage-mcp-server.mcpb 创建文件。
- Claude Desktop打开
- 已创建 .mcpb 双击文件 - 或Claude Desktop 拖放到
- 设置环境变量
Claude Desktop 在安装对话框中输入:
- Vonage应用程序ID:Vonage应用程序ID - 私钥路径:私钥文件的绝对路径(例如: /Users/your-name/vonage/private.key) - 来自号码的语音呼叫:音声通话用の电话番号(E.164形式、例: 81345438093)
- 安装完成
Claude Desktop 重新启动时Vonage MCP 服务器可用。
MCPB文件分发
已创建 .mcpb 文件可以与其他用户共享:
- GitHub Releases 分发
- 直接共享文件
方法2:手动设置
1.构建和启动服务器
# プロジェクトをビルド
npm run build
# サーバーを起動(Node.js v22以降、推奨)
npm start
# または従来方式で起動(環境変数ファイルを使用しない場合)
npm run start:legacy2. Claude Desktop配置
Claude Desktop配置文件 claude_desktop_config.json 中添加以下设置:
{
"mcpServers": {
"vonage-mcp-server": {
"command": "node",
"args": ["--env-file=.env", "dist/index.js"],
"cwd": "/Users/your-username/path/to/vonage-mcp-server"
}
}
}或直接指定环境变量:
{
"mcpServers": {
"vonage-mcp-server": {
"command": "node",
"args": ["/Users/your-username/path/to/vonage-mcp-server/dist/index.js"],
"env": {
"VONAGE_APPLICATION_ID": "your-application-id",
"VONAGE_PRIVATE_KEY_PATH": "/Users/your-username/path/to/vonage-mcp-server/private.key"
}
}
}
}配置文件位置
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
设定手顺
- 在上述路径中
claude_desktop_config.json的双曲正切值 mcpServers将上述设置添加到节- 保存文件
- Claude Desktop重新启动
3.可用功能
设定完成后Claude Desktop中所述的工具,调整墙的布局和几何形状
工具
- send_sms:单发SMS发送工具
- 入力: - to (必须):送信先の电话番号 - message (必需):要发送的消息 - from (可选):发件人(如果省略)VonageMCP') - 机能: - 日本的电话号码(从0开始)是自动的E.164转换为格式 - 发送结果和消息ID归还
- bulk_sms_rom_csv: CSV一次性SMS发送工具
- 入力: - csv_content (必需):CSV文件内容(带页眉的phone,from,message) - 机能: - CSV分析文件并汇总到多个目标SMSdeliver a letter - 自动跳过无效行 - 返回发送结果详细信息报表 - API为了避免限制100ms按间隔顺序发送
- makevoice_call:语音通话工具
- 入力: - to (必须):発信先电话番号(0ABJ形式) - message (必需):要读的消息 - voice (可选):语音类型(默认值:女性) - 机能: - 发送给指定号码,用声音朗读信息 - 日本語音声対応(女性・男性) - NCCO(Nexmo Call Control Object)を使用 - 自动估计通话时间
- get_call_status:通话状态获取工具
- 入力: - callId (必须):取得的通话的Call ID(UUID格式) - 机能: - Vonage Voice API获取呼叫状态信息 - status(通话状态)、start_time(开始时间)、price(费用)、rate(汇率)、duration(通话时间)返还 - 自动从环境变量Application ID和Private Key装入
- 发电机_jwt: JWT生成工具
- 入力: - expiresIn (可选):令牌到期时间(以秒为单位,默认值:86400=24小时) - subject (可选):标记的对象(默认值:VonageMCP) - 机能: - Vonage Voice API使用JWT生成认证令牌 - 自动从环境变量Application ID和Private Key装入 - 默认ACL包括设置(Voice API的标准路径) - 可自定义过期时间和主题
4. 使用例
Claude Desktop可以问以下问题:
単発SMS送信
「090XXXXYYYYに「これはVonage MCPサーバーを使って送信しています。」とSMSを送ってください」
→ send_smsツールを使用してSMS送信CSV一括SMS送信
「以下のCSVデータで一括SMS送信をしてください」
phone,from,message
090-1234-5678,VonageMCP,テストメッセージです
080-9876-5432,SalesTeam,お打ち合わせの件でご連絡しました
→ bulk_sms_from_csvツールを使用して一括送信音声通話
「090XXXXYYYYに女性の声で『会議は明日の10時からです』と電話をかけて」
→ make_voice_callツールを使用して発信・音声読み上げ
「080XXXXYYYYに男性の声で『システム障害が発生しました。至急対応をお願いします』と電話で伝えて」
→ make_voice_callツールを使用して緊急連絡获取呼叫状态
「Call ID ca6b7710-3423-4c8d-b630-7b981ec4b2c2 の通話ステータスを取得してください」
→ get_call_statusツールを使用して通話情報を取得
「先ほどの通話の料金と時間を教えてください」
→ get_call_statusツールで通話詳細を確認JWT生成
「Vonage Voice API用のJWTトークンを生成してください」
→ generate_jwtツールを使用してデフォルト設定(24時間有効)でJWT生成
「有効期限1時間のJWTトークンを生成してください」
→ generate_jwtツールを使用してexpiresIn=3600でJWT生成
「サブジェクトを'AdminUser'にしてJWTトークンを生成してください」
→ generate_jwtツールを使用してカスタムサブジェクトでJWT生成CSV一括送信机能
CSV文件格式
CSV在批量发送功能中,以下形式的CSV使用文件:
phone,from,message
090-1234-5678,VonageMCP,テストメッセージです
080-9876-5432,SalesTeam,お打ち合わせの件でご連絡しました
070-1111-2222,Support,システムメンテナンスのお知らせ字段规格
- 电话:送信先电话番号
- 日本的0ABJ推荐格式(090-1234-5678) - 自动E.164转换为格式(+819012345678)
- 从: 送信者名
- 只有3~11个字母数字字符(A-Z,a-z,0-9) - 只有数字,数字开始,日语不能使用 - 例: VonageMCP, SalesTeam, Support
- 消息:发送消息
- 70文字以内推奨(超过时は警告表示) - 日本语使用可能
验证功能
- 自动跳过无效行并继续处理
- 返回详细的错误报告
- 显示发送成功/失败的数量和详细信息
样本CSV文件
项目包括:CSV包含文件:
csv/sample_contacts.csv-用于基本测试csv/meeting_reminder.csv-用于会议提醒csv/emergency_notification.csv-紧急连络用csv/sales_follow_up.csv-营业跟踪用csv/invalid_data_example.csv-验证测试
Voice通话机能
机能概要
Voice API使用发送自动语音通话,用日语朗读指定的信息。
主要特征
- 自动発信:自动发送至指定编号
- 日本語音声:通过女性、男性声音自然朗读
- NCCO制御: Nexmo Call Control Object的通话流控制
- 通话时间见积:根据消息长度自动计算通话时间
音频选项
|语音类型|性别|语言|特征| |------------|------|------|------| 女性|女性|日语|自然易懂(默认)| 男性,男性,男性,男性,男性
使用例
// 会議リマインダー
make_voice_call({
to: "090-1234-5678",
message: "明日の会議は10時から会議室Aで行います。資料をご準備ください。",
voice: "女性"
})
// 緊急連絡
make_voice_call({
to: "080-9876-5432",
message: "システム障害が発生しました。至急対応をお願いします。",
voice: "男性"
})通话状态取得功能
机能概要
Vonage Voice API中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。查看通话详细信息(状态、费用、汇率、通话时间)。
主要特征
- 详细情报取得:一次性获取通话状态、费用、费率和通话时间
- 自动配置读取:自动从环境变量Application ID和Private Key获得
- 错误处理:不存在Call ID正确的错误消息
参数
参数|类型|说明| |------------|------|------| | callId | string | 取得通话Call ID(UUID格式)
返回的信息
- 状态:通话状态(completed、answered、busy、failed等)
- 开始时间:通话开始时刻(ISO 8601形式)
- 价格:通话料金(数値形式)
- 比率:通话率(每分钟费用)
- 持续时间:通话时间(秒単位)
使用例
// Call IDを指定して通話ステータスを取得
get_call_status({
callId: "ca6b7710-3423-4c8d-b630-7b981ec4b2c2"
})
// 結果例:
// ステータス: completed
// 開始時刻: 2025-12-10T03:53:19.000Z
// 料金: 0.06287850
// レート: 0.13973000
// 通話時間: 27秒JWT生成机能
机能概要
Vonage Voice API使用JWT生成验证令牌。自动从环境变量Application ID和Private Key装入并生成安全令牌。
主要特征
- 自动配置读取:自动从环境变量Application ID和Private Key获得
- 可定制:灵活设置过期时间和主题
- 默认ACL: Voice API标准的ACL自动应用设置
- 有効期限管理:自动计算和显示标记过期时间
参数
参数|类型|默认|说明| |------------|------|------------|------| | expiresIn | number | 86400 | 令牌过期时间(以秒为单位,86400=24小时) | subject | string | VonageMCP | 标记的对象(识别用)
使用例
// デフォルト設定(24時間有効)
generate_jwt()
// 1時間有効のトークン
generate_jwt({
expiresIn: 3600
})
// カスタムサブジェクト
generate_jwt({
subject: "AdminUser",
expiresIn: 7200 // 2時間
})ACL设定
生成JWT默认值为ACL(Access Control List)包括:
/*/users/**-用户管理/*/conversations/**- 会話管理/*/sessions/**-会话管理/*/devices/**-设备管理/*/image/**- 画像管理/*/media/**-介质管理/*/applications/**-应用程序管理/*/push/**-推送通知/*/knocking/**-爆震功能/*/legs/**-呼叫分支管理
5.故障排除
如果服务器未启动
npm run build确认是否成功完成npm start确认是否出现错误- Node.js确保版本为20.6.0或更高版本(
node -v)
Claude桌面错误
- JSON分析错误“取消激活的token'd”,“\[dotenv@17."... is not valid JSON」显示:
- claude_desktop_config.json的,之args的--env-file=.env查看项目中可用的所有族 - 服务器代码dotenv中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积dotenv未使用) - MCP重新启动服务器
Claude Desktop缺少支持的问题
claude_desktop_config.json确认的设置是否正确- 检查工作目录路径是否正确
- Claude Desktop重新启动
功能不可用时
- 检查服务器日志(可在Claude Desktop的设置画面中查看)
- 重新启动服务器
Voice呼叫故障排除
- Voice如果没有呼叫:
- VONAGE_VOICE_FROM确认环境变量是否设置正确 - Vonage在应用程序中Voice确认功能是否有效 - FROM编号Vonage确认是否注册了账户
- 通话是相连的,但是没有播放声音的情况下:
- NCCO确认参数的声音设定 - 确认语音选项(女性/男性)是否正确指定
项目结构
vonage-mcp-server/
├── src/ # TypeScriptソースコード
│ ├── index.ts # エントリーポイント・MCPツール定義
│ ├── vonage.ts # Vonage SMS送信機能
│ ├── csvUtils.ts # CSV解析・バリデーション機能
│ ├── voiceCall.ts # Voice通話機能・NCCO生成
│ ├── jwtUtils.ts # JWT生成機能
│ └── callStatus.ts # 通話ステータス取得機能
├── csv/ # サンプルCSVファイル
│ ├── sample_contacts.csv # 基本テスト用
│ ├── meeting_reminder.csv # 会議リマインダー用
│ ├── emergency_notification.csv # 緊急連絡用
│ ├── sales_follow_up.csv # 営業フォロー用
│ └── invalid_data_example.csv # バリデーションテスト用
├── tests/ # テストファイル
│ ├── index.test.ts # メイン機能のテスト
│ ├── utils.test.ts # ユーティリティのテスト
│ ├── jwtUtils.test.ts # JWT生成のテスト
│ ├── callStatus.test.ts # 通話ステータス取得のテスト
│ └── integration.test.ts # 統合テスト
### HTTPラッパー (Dify / 外部アプリ用)
HTTPラッパーを使用してサーバーを実行することで、外部アプリケーション(Difyなど)からHTTP POSTリクエスト経由でMCPツールを呼び出すことができます。
npm run start:http
因此,在端口3000(默认)HTTP服务器启动。
#### 认证
所有请求(`/health`),则`X-API-KEY` 需要标头。
值包括环境变量 `VONAGE_APPLICATION_ID` 中所述修改相应参数的值。
curl -X POST http://localhost:3000/mcp-invoke \ -H "Content-Type: application/json" \ -H "X-API-KEY: your_application_id" \ -d '{"tool": "tool_name", "params": { ... }}'
#### API端点
**获取** `/mcp-tools`
返回可用工具列表。
**答复:**
{ "tools": [ { "name": "tool_name", "description": "Tool description", "inputSchema": { ... } } ] }
**发布** `/mcp-invoke`
**主体:**
{ "tool": "tool_name", "params": { "param1": "value1" } }
**答复:**
MCP从工具JSON形式的结果。
├── dist/ # 已编译JavaScript
├── package.json # 项目设置
├──tsconfig.json # TypeScript设定
是.config.js # 是设置
├──.env.example # 环境变数设定例
├──private.key # Vonage秘密键(要设定)
└── README.md # 此文件
依存関係
主要パッケージ
@vonage/server-sdk- Vonage SMS機能@vonage/voice- Voice通話機能専用SDK@vonage/jwt- JWT認証トークン生成csv-parse- CSVファイル解析@modelcontextprotocol/sdk- MCP Server実装zod- スキーマ検証
ライセンス
ISC
