mobilebiz/vonage-mcp-server
If you are the rightful owner of vonage-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
Vonage MCP Server is an implementation of a Model Context Protocol Server that provides SMS sending functionality using Vonage's services.
Vonage MCP Server
VonageのSMS送信、CSV一括送信、音声通話機能を提供するMCP (Model Context Protocol) Server実装です。
インストール方法
方法1: MCPB Bundle(推奨 - ワンクリックインストール)
Claude Desktopで簡単にインストールできます:
-
MCPBファイルのダウンロード
- vonage-mcp-server.mcpb をダウンロード
-
Claude Desktopで開く
.mcpbファイルをダブルクリック、またはClaude Desktopにドラッグ&ドロップ
-
環境変数の設定
- Claude Desktopのインストールダイアログで以下を入力:
VONAGE_APPLICATION_ID: Vonage Application IDVONAGE_PRIVATE_KEY_PATH: 秘密鍵ファイルのパス(例:/Users/your-name/vonage/private.key)VONAGE_VOICE_FROM: 音声通話用の電話番号(E.164形式、例:81345438093)
- Claude Desktopのインストールダイアログで以下を入力:
-
インストール完了
- Claude Desktopを再起動すると、Vonage MCPサーバーが利用可能になります
方法2: 手動セットアップ
セットアップ
依存関係のインストール
npm install
Vonage設定
-
Vonageアカウントの作成
- Vonage Developer Portal でアカウントを作成
- アプリケーションを作成し、Application IDを取得
-
秘密鍵の準備
- Vonage Developer Portalで秘密鍵(private.key)をダウンロード
- プロジェクトルートに
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:start
TypeScriptのコンパイル
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:coverage
Claude 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 Application ID: Vonage Application ID
- Private Key Path: 秘密鍵ファイルの絶対パス(例:
/Users/your-name/vonage/private.key) - Voice Call From Number: 音声通話用の電話番号(E.164形式、例:
81345438093)
-
インストール完了 Claude Desktop を再起動すると、Vonage MCP サーバーが利用可能になります。
MCPBファイルの配布
作成した .mcpb ファイルは他のユーザーと共有できます:
- GitHub Releases で配布
- 直接ファイルを共有
方法2: 手動セットアップ
1. サーバーのビルドと起動
# プロジェクトをビルド
npm run build
# サーバーを起動(Node.js v22以降、推奨)
npm start
# または従来方式で起動(環境変数ファイルを使用しない場合)
npm run start:legacy
2. 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 - Windows:
%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_from_csv: CSV一括SMS送信ツール
- 入力:
csv_content(必須): CSVファイルの内容(phone,from,messageのヘッダー付き)
- 機能:
- CSVファイルを解析して複数宛先に一括SMS送信
- 無効な行は自動的にスキップ
- 送信結果の詳細レポートを返却
- API制限回避のため100ms間隔で順次送信
- 入力:
-
make_voice_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を読み込み
- 入力:
-
generate_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,システムメンテナンスのお知らせ
フィールド仕様
-
phone: 送信先電話番号
- 日本の0ABJ形式(090-1234-5678)が推奨
- 自動的にE.164形式(+819012345678)に変換
-
from: 送信者名
- 3〜11文字の英数字のみ(A-Z, a-z, 0-9)
- 数字のみ、数字始まり、日本語は使用不可
- 例:
VonageMCP,SalesTeam,Support
-
message: 送信メッセージ
- 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形式) |
返却される情報
- status: 通話のステータス(completed, answered, busy, failed など)
- start_time: 通話開始時刻(ISO 8601形式)
- price: 通話料金(数値形式)
- rate: 通話レート(1分あたりの料金)
- duration: 通話時間(秒単位)
使用例
// 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解析エラー「Unexpected 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の設定が正しいか確認- 作業ディレクトリ(cwd)のパスが正しいか確認
- 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ツールを呼び出すことができます。
```bash
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エンドポイント
GET /mcp-tools
利用可能なツールの一覧を返します。
Response:
{
"tools": [
{
"name": "tool_name",
"description": "Tool description",
"inputSchema": { ... }
}
]
}
POST /mcp-invoke
Body:
{
"tool": "tool_name",
"params": {
"param1": "value1"
}
}
Response: MCPツールからのJSON形式の結果。
├── dist/ # コンパイルされたJavaScript ├── package.json # プロジェクト設定 ├── tsconfig.json # TypeScript設定 ├── jest.config.js # Jest設定 ├── .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