VirtualSMS MCP — SMS Verification for AI Agents について
VirtualSMS MCPは、SMS認証プラットフォームをAIエージェントに公開します。サービスや料金の検索、番号購入、コード受信に加え、番号レンタルやプロキシ設定ができ、コードはWebSocketプッシュまたはポーリングで取得します。
主な機能
- 01サービス検索と料金確認
- 02番号購入と認証コード受信
- 03認証注文の管理とキャンセル
- 04番号レンタルと期間延長
- 05プロキシの検索と購入
活用シーン
- 01WhatsAppやTelegramの認証コード取得
- 02OTP登録フローの自動テスト
- 03CIで一時番号を用意
- 04番号と同じ国のプロキシを組み合わせ
MCP 対応
このMCPサーバーは、ホスト型エンドポイントまたはローカルstdio経由で互換クライアントにVirtualSMSのツールを提供します。標準で40個のツールがあり、環境変数で追加のセッションツールを有効にできます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.virtualsms.io/mcpclaude mcp add --transport http virtualsms-io https://mcp.virtualsms.io/mcp{"mcpServers":{"virtualsms-io":{"type":"http","url":"https://mcp.virtualsms.io/mcp"}}}Cursor で開く{"servers":{"virtualsms-io":{"type":"http","url":"https://mcp.virtualsms.io/mcp"}}}VS Code で開く{"mcpServers":{"virtualsms-io":{"type":"http","url":"https://mcp.virtualsms.io/mcp"}}}{"mcpServers":{"virtualsms-io":{"serverUrl":"https://mcp.virtualsms.io/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.virtualsms.io/mcp認証が必要ツール
40このツールにパラメーターはありません。
詳細
VirtualSMS MCP サーバー
クイックリンク: クイックスタート · VirtualSMS を選ぶ理由 · 構築できるもの · ツール · 質問 · 例 · 変更履歴 · セキュリティポリシー · ステータス
VirtualSMS は、開発者と AI エージェント向けのアカウント認証プラットフォームです。ワンタイム SMS 認証、専用番号のレンタル、国が一致するプロキシ、プライベートなクラウドブラウザーセッションを、1 つの API、1 つの MCP サーバー、1 つのプリペイド残高にまとめています。
実際の電話番号認証が必要な AI エージェントのためのインフラストラクチャです。
番号は通信事業者が発行した携帯電話番号で、通信事業者のネットワーク上にある実物の SIM カードを利用しています。VoIP ではないため、登録時に VoIP 番号を拒否する回線種別チェックを通過できます。
1 つのプリペイド残高から、次のことができます。
- 0.05 ドルからワンタイム SMS コードを受信する
- 専用番号を 1〜30 日間レンタルする
- 国が一致する住宅用、モバイル、データセンタープロキシを購入する
- 番号とプロキシを連携させて使えるプライベートなクラウドブラウザーセッションを開始する(ベータ版)
これら 4 つはすべて、1 つのプリペイド残高、1 つの API、1 つのダッシュボードで連携します。必要な機能だけを使うことも、組み合わせて 1 つの認証ワークフローにすることもできます。
多くのプロバイダーは、認証ワークフローの一部分だけを解決します。VirtualSMS は、番号、レンタル、プロキシ、クラウドブラウザーセッションを 1 つの API、SDK、MCP サーバーにまとめているため、必要な機能だけを使うことも、組み合わせて 1 つのワークフローにすることもできます。
VirtualSMS は、個人で手動利用したり、SDK や API を使ってアプリケーションに統合したり、MCP 経由で AI エージェントから操作したりできます。REST API、Node、Python、PHP、Ruby、.NET 向けの公式 SDK、ホスト型 MCP サーバー、n8n などの自動化ツールからプラットフォームを利用できます。
このサーバーは、あらゆる MCP クライアントからこのプラットフォームを利用できるようにします。AI エージェント向けに構築され、AI エージェントのワークフローを念頭に設計されています。Claude Code、Claude Desktop、Cursor、Windsurf、および MCP 互換クライアントで動作し、ラッパーコードを書く必要はありません。
クイックスタート
これを MCP クライアントの設定に貼り付けてください。インストールは不要で、クライアントに Node.js も必要ありません。
{
"mcpServers": {
"virtualsms": {
"type": "streamableHttp",
"url": "https://mcp.virtualsms.io/mcp",
"headers": {
"x-api-key": "vsms_your_api_key_here"
}
}
}
}
virtualsms.io で API キーを取得してください。次に、エージェントにこう依頼します。
「最も安い国の Telegram 番号を購入して、認証コードを待って。」
ローカルで stdio 経由で実行したい場合は、こちらを使ってください。
npx virtualsms-mcp
VirtualSMS を選ぶ理由
アカウント認証のために、あるプロバイダーから番号を、別のプロバイダーからプロキシを、さらに別のプロバイダーからブラウザーセッションを寄せ集める必要はありません。複数のアカウント、残高、API を管理し、サポートも複数のベンダーに分散してしまいます。VirtualSMS は、これらを 1 つの残高、1 つの API、1 つの MCP サーバーにまとめています。
VirtualSMS は 3 つすべてを 1 つのアカウントに統合し、操作方法も 1 つにまとめています。
- 通信事業者が発行した携帯電話番号。 実物の SIM カードを利用しており、VoIP ではないため、登録時に携帯電話番号として判定されます。
- 国が一致するプロキシ。 住宅用、モバイル、データセンターの各プールがあり、番号と IP の国が一致します。
- プライベートなクラウドブラウザーセッション。 ベータ版です。
- REST API。 virtualsms.io/docs にドキュメントがあります。
- ホスト型 MCP サーバー。 このリポジトリのサーバーは
https://mcp.virtualsms.io/mcpで稼働しています。 - 1 つのプリペイド残高。 認証、レンタル、プロキシのすべてに利用できます。
以下では、この 6 項目について詳しく説明します。
構築できるもの
このサーバーが現在実行できる具体的なタスクです。どれも、エージェントがツール呼び出しに変換する平易な英語のリクエストです。
| したいこと | エージェントへの依頼 | 使用するツール |
|---|---|---|
| Claude Code から WhatsApp アカウントを認証する | 「英国の電話番号で WhatsApp のコードを取得して」 | create_order → wait_for_sms |
| Cursor から Telegram アカウントを作成する | 「最も安い国の Telegram 用番号を購入して、コードを待って」 | find_cheapest → create_order → wait_for_sms |
| 認証コードを自動で取得する | 「コードを待って、フォームに貼り付けて」 | wait_for_sms |
| QA 中に OTP フローをテストする | 「サインアップフローを 10 回実行して、コードが届いた回数を報告して」 | create_order → wait_for_sms → cancel_order |
| CI 中に一時的な番号を用意する | 「テストスイート用に新しい番号を用意して、使い終わったら解放して」 | create_order → get_sms → cancel_order |
| 番号を 1 週間使う | 「英国の番号を 7 日間レンタルして」 | rentals_available → create_rental |
| 番号と IP を一致させる | 「英国の番号に合わせて英国のプロキシを購入して」 | list_proxy_catalog → buy_proxy → generate_proxy_endpoint |
| 信頼する前に番号を確認する | 「この番号は VoIP ですか?」 | check_number(API キー不要) |
| 応答がなくなった番号を交換する | 「その番号にコードが届かなかったので、交換して」 | swap_number |
最初の 2 つを実行できるサンプルは、examples/ にあります。
クライアントのセットアップ
すべてのクライアントで、同じ npx virtualsms-mcp の stdio コマンドを実行します。異なるのはファイルの場所と形式だけです。上記のホスト型設定は streamableHttp がサポートされている場所ならどこでも動作し、推奨される方法です。
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)を編集します。
{
"mcpServers": {
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
Claude Desktop を終了して、再度開きます。すぐに使える設定と実際のやり取りの記録は、examples/03-claude-desktop-config/ にあります。
Claude Code、Cursor、Windsurf、OpenClaw、Codex、Hermes、Cline、Zed、Continue.dev
Claude Code(CLI)
claude mcp add --scope user virtualsms npx virtualsms-mcp -e VIRTUALSMS_API_KEY=vsms_your_api_key_here
Cursor
~/.cursor/mcp.json を編集します。
{
"mcpServers": {
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json を編集します。
{
"mcpServers": {
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
OpenClaw
~/.openclaw/mcp.json を編集します。
{
"mcpServers": {
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
Codex(OpenAI Codex CLI)
~/.codex/config.toml を編集します。
[mcp_servers.virtualsms]
command = "npx"
args = ["virtualsms-mcp"]
env = { VIRTUALSMS_API_KEY = "vsms_your_api_key_here" }
Hermes
Hermes の MCP 設定を編集します。
{
"mcpServers": {
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
Cline(VS Code)
Cline の MCP 設定パネルを開き、次を追加します。
{
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
Zed
~/.config/zed/settings.json を編集します。
{
"context_servers": {
"virtualsms": {
"command": {
"path": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
}
Continue.dev
~/.continue/config.yaml を編集します。
mcpServers:
- name: virtualsms
command: npx
args:
- virtualsms-mcp
env:
VIRTUALSMS_API_KEY: vsms_your_api_key_here
ChatGPT で使えますか?
はい。ChatGPT の Developer Mode を使います。設定を開いて Developer mode をオンにし、カスタムコネクターとして https://mcp.virtualsms.io/mcp を追加します(Plus、Pro、Business、Enterprise、Edu プランが対象で、無料プランでは利用できません)。設定は設定ファイルではなく URL を貼り付ける方式のため、上記のクライアント設定とは異なります。ChatGPT がリモート MCP サーバーに接続できるのは SSE またはストリーミング HTTP 経由のみなので、ローカルの stdio コマンドではなく、ホスト型エンドポイントを使用してください。カスタム GPT や Action を作成する場合は、REST API も引き続き利用できます。
設定
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
VIRTUALSMS_API_KEY | はい。アカウント関連ツールで必要 | なし | VirtualSMS API キーです。キーには vsms_ プレフィックスが付いています |
VIRTUALSMS_BASE_URL | いいえ | https://virtualsms.io | API のベース URL |
VIRTUALSMS_ENABLE_SESSIONS | いいえ | オフ | 1、true、または yes に設定すると、セッション関連のツールが 3 つ追加されます。デフォルトではオフです |
VIRTUALSMS_ENABLE_RELEASE | いいえ | オフ | 1、true、または yes に設定すると、早期リリース版のレンタルツールが利用可能になります。返金条件が確定するまでは、デフォルトでオフです |
ツール
デフォルトで 40 個のツールを利用できます。VIRTUALSMS_ENABLE_SESSIONS=1 を設定すると、さらに 3 個のツールが利用可能になります。
ツール名は読みやすさを考慮して、virtualsms_ プレフィックスを省略して表示しています。実際のワイヤー名には、virtualsms_create_order、virtualsms_get_sms などのプレフィックスが付きます。
認証とアカウント(18 個のツール)
SMS 認証の基本機能です。サービスを探して料金を確認し、番号を購入してコードを取得できます。
| ツール | 認証 | 説明 |
|---|---|---|
list_services | はい | 利用可能なすべての認証サービス。任意で search フィルターを指定できます |
list_countries | はい | 利用可能なすべての国。任意で service フィルターを指定できます |
get_price | いいえ | サービスと国の組み合わせの料金と在庫状況 |
find_cheapest | いいえ | サービスの料金が安い国を、在庫レベルとともに料金順で表示します |
search_services | はい | 自然言語によるサービス検索。「telega」で Telegram が見つかります |
get_balance | はい | アカウント残高(USD) |
get_profile | はい | メールアドレス、Telegram リンク、残高、生涯利用額、注文総数、有効な API キー |
get_stats | はい | 注文数、成功率、利用額、およびステータス/サービス/国別の内訳 |
get_transactions | はい | 種類、日付範囲、ページネーションの各フィルターに対応した取引履歴 |
create_order | はい | サービスと国を指定して番号を購入します。order_id と phone_number を返します |
get_sms | はい | 注文をポーリングしてコードを取得します。バッチ処理や cron ジョブで使用します |
wait_for_sms | はい | 既存の order_id に SMS が届くまで、またはタイムアウトするまで待機します |
get_order | はい | 注文の詳細と、受信したすべてのメッセージ |
list_orders | はい | 有効な注文一覧。クラッシュからの復旧に不可欠です |
order_history | はい | ステータス、サービス、国、日付の各フィルターに対応した過去の注文 |
cancel_order | はい | SMS が届いていない場合にキャンセルして返金します。購入後 120 秒間はクールダウンがあります |
cancel_all_orders | はい | 有効な注文をすべて一括キャンセルします |
swap_number | はい | 同じサービスと国で新しい番号に交換します。追加料金はありません。120 秒間のクールダウンがあります |
get_smsとwait_for_smsの違い:wait_for_smsは、対話型のエージェントワークフローでのデフォルトとして推奨されます。WebSocket 経由で SMS が届くと、その時点でブロックを解除して結果を返します。バッチ処理、cron によるポーリング、または独自のポーリングループをすでに管理している場合は、get_smsを使用してください。
wait_for_smsに渡すのはサービスや国ではなく、order_idです。 まずcreate_orderを呼び出し、返されたorder_idを渡してください。これが、購入してから待機する 2 段階のフローです。
レンタル(9 個のツール)
1 回限りの認証ではなく、日単位で番号を保持できます。プランは 2 種類です。
- フルアクセス: ローカルの SIM 在庫から提供される番号で、あらゆるサービスで利用できます。現在在庫のある各国では、料金は国によって異なり、1 日、7 日、30 日のプランが用意されています。期間と料金は意図的にここでは固定していません。国ごとの最新一覧を取得するには
rentals_availableを呼び出し、その結果を正として扱ってください。 - プラットフォーム: グローバルなサプライヤーネットワークを通じて調達され、選択した 1 つのサービス専用です。期間は 1 日、3 日、7 日から選べます。(サービス、国、期間)の組み合わせに対する正確な販売価格は、
rentals_priceを呼び出して確認してください。
在庫、期間、料金はプランと国によって異なるため、どちらのプランを選ぶ場合も、申し込みを確定する前に rentals_available を呼び出してください。有効なレンタルは、そのプランで利用可能な期間と同じ期間を選択して、現在のカタログ価格で extend_rental により延長できます。
どちらのプランにも同じ返金条件が適用されます。購入後 20 分以内、かつ最初の SMS が届く前であれば、全額返金でキャンセルできます。プラットフォームのキャンセルには、さらに 2 分間の最低保持時間が適用されるため、最初の 2 分以内にキャンセルすると拒否され、再試行が必要です。
| ツール | 認証 | 説明 |
|---|---|---|
rentals_pricing | はい | Full Access の料金プラン:利用期間と価格 |
rentals_available | はい | レンタル在庫がある国、在庫数、プランごとの価格 |
rentals_services | はい | 各国で Platform プランのレンタルに利用できるサービス、在庫数、価格 |
rentals_price | はい | サービス、国、利用期間の組み合わせに対する小売価格 |
create_rental | はい | 電話番号をレンタルします。まず在庫と価格を確認してください |
list_rentals | はい | 2 つのプランのレンタルをステータスで絞り込んで一覧表示します |
get_rental | はい | 1 件のレンタルの詳細:プラン、電話番号、サービスロック、ステータス、有効期限、SMS |
extend_rental | はい | 有効なレンタルを延長します。現在のカタログ価格が課金されます |
cancel_rental | はい | 購入後 20 分以内かつ SMS を受信する前であれば全額返金されます |
プロキシ(10 個のツール)
電話番号と IP アドレスの国が一致するプロキシです。住宅用、モバイル、データセンターの 3 つのプールがあります。GB 単位でトラフィックを購入し、接続文字列を生成します。
| ツール | 認証 | 説明 |
|---|---|---|
list_proxy_catalog | はい | プールの種類、国、GB あたりの価格を表示します。まずここから始めてください |
list_proxy_locations | いいえ | プールの種類と国を指定して、都市、州、ASN、または ZIP を表示します。購入は不要です |
buy_proxy | はい | GB 単位でプロキシトラフィックを購入します。認証情報と残高が返されます |
list_proxies | はい | 残りの GB 数と認証情報を含むプロキシを一覧表示します。proxy_id の値が返されます |
generate_proxy_endpoint | はい | 国、州、都市、ZIP、ASN によるターゲティング、ローテーションまたは固定、HTTP または SOCKS5 に対応した、すぐに使える接続文字列を生成します |
rotate_proxy | はい | 既存のプロキシに新しい出口 IP を割り当てます |
test_proxy | はい | プロキシの動作を確認します。出口 IP、国、都市、ISP、レイテンシが報告されます |
get_proxy_usage | はい | 1 件のプロキシについて、キャッシュされた使用済みおよび残りの GB 数とリクエスト数を取得します |
get_proxy_usage_history | はい | 過去 7 日間または 30 日間の日ごとのトラフィックとリクエスト数を取得します |
set_proxy_targeting | はい | プロキシのサブユーザーにデフォルトの地域ターゲティングを保存します |
その他(3 個のツール)
| ツール | 認証 | 説明 |
|---|---|---|
retry_order | はい | 同じ電話番号に SMS を再送するよう依頼します。すべての注文タイプが対応しているわけではありません |
check_number | いいえ | 任意の E.164 電話番号について、携帯電話、固定電話、VoIP の回線種別と通信事業者を確認し、迷惑電話のリスクも調べます |
start_manual_registration_session | はい | ベータ版、招待制。 国が一致するクラウドブラウザーを開始し、ライブビューアーから自分で操作します。エージェントによるナビゲーションは別途オプトインが必要です(セッションツール)。ベータ版の利用申請は https://t.me/VirtualSMS_io に参加してください |
セッションツール(追加の 3 個、デフォルトでは無効)
ベータ版、招待制。 ブラウザースタックはまだ初期段階です。動作しますが、ツールの仕様は変更される可能性があり、現時点では安定性は保証されません。ベータ版の利用申請と最新情報の確認は https://t.me/VirtualSMS_io に参加してください。
VIRTUALSMS_ENABLE_SESSIONS を 1、true、または yes に設定した場合にのみ提供されます。デフォルトでは公開されません。
| ツール | 説明 |
|---|---|
navigate_session | アクティブなブラウザーセッションで URL に移動します |
session_viewer | アクティブなセッションのライブビューアー URL と現在のステータスを取得します |
stop_session | アクティブなブラウザーセッションを停止して解放します |
一般的なワークフロー
認証コードを取得する
create_order(service: "telegram", country: "US")
→ {order_id: "abc123", phone_number: "+14155552671", status: "pending"}
wait_for_sms(order_id: "abc123", timeout_seconds: 180)
→ {success: true, code: "12345", delivery_method: "websocket", elapsed_seconds: 8}
最も安い国を先に探す
find_cheapest(service: "telegram", limit: 3)
→ {cheapest_options: [{country: "PK", price_usd: 0.05, ...}]}
create_order(service: "telegram", country: "PK")
wait_for_sms(order_id: "abc123")
電話番号で SMS を受信できない場合は交換する
swap_number(order_id: "abc123")
→ {order_id: "def456", phone_number: "+628...", status: "waiting"}
電話番号を 1 か月レンタルする
rentals_available(tier: "full_access")
→ countries holding local SIM stock, each with its own duration and price list
create_rental(tier: "full_access", country: "FR", duration_hours: 720)
→ {rental_id: "rnt_1", phone_number: "+33...", expires_in_days: 30}
在庫は国とプランごとに異なるため、まず在庫を確認してからレンタルしてください。rentals_available(tier: "platform") では、別のサービスロック付きカタログを確認できます。
電話番号と同じ国のプロキシを組み合わせる
list_proxy_catalog()
buy_proxy(pool_type: "residential", gb: 1, country_code: "GB")
generate_proxy_endpoint(proxy_id: "px_1", country_code: "GB", protocol: "socks5")
質問
アカウント認証インフラとは?
アカウント認証インフラとは、電話番号を要求する登録フローを、実在するアカウントで完了させるための仕組みです。以下の5つのレイヤーで構成され、どれか1つでも欠けると、すべてが失敗します。
- 電話番号。 携帯電話会社が発行したモバイル回線です。回線の種類が確認されるためです。
- SMS。 その番号に届く認証コードです。端末を持つ人ではなく、ソフトウェアが読み取れる必要があります。
- プロキシ。 番号と同じ国のIPアドレスです。両者の情報が一致するようにします。
- ブラウザー。 登録フローを実行するためのクリーンな環境です。
- 自動化。 一連の処理を無人で最初から最後まで実行するAPIまたはエージェントです。
多くのプロバイダーが提供するのは最初の2つのレイヤーだけで、残りは自分で用意する必要があります。まさにそこで、番号、IPアドレス、ブラウザーの情報に食い違いが生じます。VirtualSMSは、5つすべてを支えるインフラを提供します。
VirtualSMSは、個人、開発者、AI エージェント向けのアカウント認証プラットフォームです。1つのAPI、1つのMCP サーバー、1つのプリペイド残高で、ワンタイムSMS認証、専用番号のレンタル、番号と同じ国のプロキシ、プライベートなクラウドブラウザーセッションを利用できます。
SMS認証用MCP サーバーとは?
MCP(Model Context Protocol)は、AI クライアントが外部ツールを呼び出せるようにするオープン標準です。SMS認証用のMCP サーバーは、電話番号や認証コードに関する操作を、エージェントが直接呼び出せるツールとして提供します。そのため、エージェントは番号を購入し、コードを待ち、取得したコードを読み取ることができ、あなたが連携コードを書く必要はありません。このリポジトリはVirtualSMS向けのサーバーで、認証、レンタル、プロキシをカバーする40個のツールを備えています。エージェントを使わない場合も、同じ操作を通常のREST認証APIから利用できます。
どんなときに使うべきですか?
- AI エージェントで、電話番号を要求するアカウントへのサインインやアカウント登録を行う場合。
- OTPや登録フローをテストする際、テスト用SIMを引き出しにためておくのではなく、必要に応じて新しい番号を使いたい場合。
- CIや無人ジョブで、認証コードを自動取得する必要がある場合。
- 番号と、番号と同じ国のIPアドレスが互いに一致する必要がある場合。
- ブラウザーで登録の自動化を行っており、番号、IPアドレス、ブラウザーを別々の場所から用意するのではなく、1か所から揃えたい場合。
- 1つのコードのための一時的な電話番号、または最長30日間維持できる専用番号が必要な場合。
- サブスクリプションや月額の番号レンタルなしで、コード1件あたり$0.05からの料金を希望する場合。
どんなときに使うべきではありませんか?
時間を無駄にしないために、正直にお伝えします。
- SMSを送信する必要がある場合。 このプラットフォームはSMSを受信しますが、送信はできません。Twilioなどのメッセージングプロバイダーをご利用ください。
- ビジネス用の恒久的な番号が必要な場合。 認証用番号は一時利用を前提としており、レンタル期間は年単位ではなく日単位です。電話会社から通常の回線をご購入ください。
- すでに所有している番号でコードを受信したい場合。 番号の持ち込みには対応していません。番号は当社の在庫から提供されます。
- A2Pマーケティングキャンペーンを実施する場合。 まったく用途が異なります。
- プラットフォームの利用規約を回避しようとしている場合。 認証先のサービスの規約に準拠した利用かどうかは、お客様の責任であり、当社の責任ではありません。
ClaudeやCursorでSMS認証コードを受け取れますか?
はい、このサーバーを通じて受け取れます。Claude Code、Claude Desktop、Cursor、Windsurf、Cline、Zed、Continue.dev、Codex、OpenClaw、HermesはいずれもMCPクライアントです。各クライアントは設定を貼り付けるだけで利用できます(クライアントのセットアップを参照)。インストール後は、「Telegramの番号を購入してコードを待って」と依頼すれば、エージェントが最初から最後まで実行できます。ChatGPTからも、Developer Modeのカスタムコネクター(ChatGPTで使えますか?を参照)、またはDeveloper Modeを有効にしたくない場合はREST APIを通じて利用できます。
AI エージェントは OTP コードを自動でどのように受け取りますか?
ツールを 2 つ呼び出します。create_order は指定したサービスと国の電話番号を購入し、order_id を返します。次に wait_for_sms はその order_id を待機し、コードが届いた瞬間に返します。コードは WebSocket 経由でプッシュされ、通常 2~15 秒で届きます。エージェントはポーリングもループ内でのスリープも不要で、人間に電話を確認してもらう必要もありません。独自のループを動かしたい場合は、代わりに get_sms で 1 件の注文をポーリングできます。
Twilio との違いは何ですか?
Twilio は、SMS や音声の送受信、長期利用の電話番号、A2P キャンペーンなどを備えた総合通信プラットフォームです。VirtualSMS は、必要なときに認証コードを受信するという 1 つの用途に特化しています。実用上の違いは次のとおりです。
- 回線の種類。 Twilio の電話番号は VoIP です。多くのサービスでは、登録時に VoIP 番号が拒否されます。VirtualSMS の電話番号は、通信事業者のネットワーク上にある実際の物理 SIM カードなので、モバイル回線として判定されます。
- 料金体系。 Twilio では、使うかどうかにかかわらず、電話番号の月額料金が発生します。VirtualSMS はサブスクリプション不要で、コードごとに $0.05 から課金されます。
- 通信の方向。 Twilio は送受信に対応しています。こちらは受信のみです。
メッセージを送信する必要がある場合は、Twilio をお使いください。認証コードを受信する必要がある場合は、この用途に特化したサービスをご利用ください。
VoIP ではなく実際の物理 SIM カードを使うのはなぜですか?
認証システムは、入力された電話番号の回線種別を確認します。VoIP 番号は安価で大量に使い捨てられるため、不正行為との関連が見られ、多くのサービスでは登録時に完全に拒否されます。実際の物理 SIM カードは通信事業者のネットワーク上にあり、モバイル回線として判定されます。これはまさに、認証システムが確認している条件、つまり実際の携帯電話のように機能する非 VoIP 番号です。
これをそのまま信じる必要はありません。check_number は E.164 番号の通信事業者と回線種別を調べます。API キーは不要で、その番号がモバイル、固定電話、VoIP のどれとして判定されるかを知らせます。
代替サービスと比較
textverified mcp、sms-activate mcp、5sim mcp、daisysms mcp、smspool mcp を検索する開発者が知りたいのは、たいてい 1 つのことです。AI エージェントがネイティブに操作できる SMS 認証プロバイダーはどれか。このセクションでは、順位付けをせずにその疑問に答えます。
VirtualSMS はこの MCP サーバーを公開しているため、どの MCP クライアントからもラッパーコードなしで直接呼び出せます。ツール 40 個、サービス 2500 以上、国 145 以上、実際の物理 SIM カードを利用し、コード 1 件あたり $0.05 から利用できます。同じ残高で電話番号のレンタルや、番号と同じ国のプロキシも利用できます。
SMS-Activate は 2025 年 12 月にサービスを終了しました。連携先が SMS-Activate だった場合、その連携先はもう利用できません。移行に必要なのは API キーとベース URL の変更で、作り直す必要はありません。番号を購入してコードを受け取るという処理の流れは、こちらでも同じです。
TextVerified、5SIM、DaisySMS、SMSPool は、いずれも現在も利用できる SMS 認証プロバイダーで、それぞれ独自の API、料金、対応範囲、利用規約があります。現在の提供内容については、各サービスの最新ドキュメントをご確認ください。
競合サービスの料金、サービス数、対応範囲をまとめた比較表は、意図的に公開していません。こうした数値は毎週変わり、他社の在庫を特別に把握しているわけでもありません。調査結果を装った古い表は、表がないよりも有害です。上記の VirtualSMS に関する数値は当社のものであり、その内容に責任を持ちます。現在お使いのサービスと比較してください。
仕組み
WebSocket とポーリング
wait_for_sms は、2 段階の配信システムを使用します。
- WebSocket による即時配信。
wss://virtualsms.io/ws/orders?order_id=xxx&api_key=your_keyに接続します。SMS が届くと、サーバーからリアルタイムでプッシュされます。通常の配信時間は 2~15 秒です。 - ポーリングによるフォールバック。 WebSocket に接続できない場合、または接続が切れた場合、ツールは残りのタイムアウト時間、5 秒ごとのポーリングに切り替えます。
レスポンスの delivery_method フィールドで、使用された方法を確認できます。値は websocket、polling、または呼び出す前にコードがすでに届いていた場合の instant です。
このサーバーは接続を維持した WebSocket 経由でプッシュ配信を行います。コールバックを送ることはありません。VirtualSMS から所有する URL にイベントを POST させたい場合は、プラットフォームの別の Webhook サブスクリプションシステムを利用してください。このシステムはダッシュボードで設定し、この MCP サーバーではなく REST API を通じて動作します。
アーキテクチャ
AI Agent (Claude / Cursor / Codex / Windsurf / any MCP client)
│
▼ MCP (stdio or StreamableHTTP)
VirtualSMS MCP Server (this package)
│
├──► REST API: https://virtualsms.io/docs
│ create_order, get_sms, cancel_order, get_balance ...
│
└──► WebSocket: wss://virtualsms.io/ws/orders
real-time SMS push delivery
クラッシュからの復旧
セッションが認証の途中で中断された場合は、次の手順で復旧できます。
- MCP サーバーを再起動します。
- アクティブな注文を一覧表示します:
list_orders(status: "pending") - コードを確認します:
get_sms(order_id: "abc123") - 不要な注文をキャンセルします:
cancel_order(order_id: "abc123")
wait_for_sms はタイムアウト時も必ず order_id を返すため、復旧できます。
ホステッドエンドポイントとステータス
- ホステッド MCP エンドポイント:
https://mcp.virtualsms.io/mcp。TLS 専用の StreamableHTTP で、Cloudflare を経由します。 - プラットフォームのステータスと稼働時間: virtualsms.io/status。ウェブサイトとダッシュボード、SMS ゲートウェイ、REST API、Telegram ボット、データベースの状況をリアルタイムでポーリングします。ホステッド MCP エンドポイントは別のサービスとして稼働しており、現時点ではこのページに項目がありません。
- 目標 SLA: ホステッド MCP の経路で 99.9%。契約上の保証ではなく、当社が自らに課している目標です。上記のステータスページでは、まだ測定されていません。
- 対応範囲: 145 か国以上で利用可能、2500 以上のサービスを掲載しています。
- データ保持: SMS メッセージの本文は 7 日間保持した後、完全に削除されます。注文のメタデータ(電話番号、サービス、国、タイムスタンプ)はアカウントの有効期間中保持されます。詳しくは SECURITY.md をご覧ください。
- 脆弱性の報告:
[email protected]にメールを送るか、非公開のセキュリティアドバイザリを作成してください。
例
実行可能な例が 3 つ、このリポジトリに含まれています。VIRTUALSMS_API_KEY を設定すれば、いずれも node run.mjs ですぐに実行できます。
examples/01-quick-balance-check/:5 秒で実行できるホステッド MCP のスモークテスト(get_balance)。examples/02-buy-sms-and-wait-for-code/:認証フロー全体の例。find_cheapest→create_order→wait_for_sms→ タイムアウト時のキャンセル。AI エージェント向けの標準的なパターンです。examples/03-claude-desktop-config/:すぐに使える Claude Desktop の設定と、StreamableHTTP 経由で「残高を教えて」と Claude に尋ねた会話の記録。
SDK とツール
すでにお使いの言語から、同じプラットフォームを利用できます。
| Repo | 概要 |
|---|---|
| node-sdk | 公式 Node.js / TypeScript SDK |
| python-sdk | 公式 Python SDK |
| virtualsms-php-sdk | 公式 PHP SDK |
| ruby-sdk | 公式 Ruby SDK |
| dotnet-sdk | 公式 .NET SDK |
| go-sdk | 公式 Go SDK |
| rust-sdk | 公式 Rust SDK |
| swift-sdk | 公式 Swift SDK |
| java-sdk | 公式 Java SDK |
| api-docs | REST API ドキュメントのソース |
| examples | 各言語で実行できるサンプル |
| n8n-nodes-virtualsms | n8n コミュニティノード |
| automation-integrations | Make、Zapier、ワークフローとの連携 |
| virtual-number-checker | 携帯電話会社と回線種別の照会ツール |
| claude-skill-sms-verification | SMS 認証用の Claude スキル |
| cursor-rules-sms-verification | SMS 認証用の Cursor ルール |
ビルドと貢献
git clone https://github.com/virtualsms-io/mcp-server.git
cd mcp-server
npm install
npm run build # tsc
npm test # vitest
npx tsc --noEmit # typecheck only
2 つのトランスポートは同じツールテーブルを共有しています。src/index.ts(stdio)と src/http-server.ts(StreamableHTTP)です。ツールの定義とハンドラーは src/tools.ts にあります。ツールを追加する場合は、両方のトランスポートに組み込んでください。追加し忘れると src/__tests__/transport-parity.test.ts がビルドを失敗させ、ドキュメントに存在しないツール名が記載されていると src/__tests__/docs-tool-names.test.ts が失敗します。
課題とプルリクエスト:github.com/virtualsms-io/mcp-server。
v1.0.0 から v1.3.1 までのリリースノートは CHANGELOG.md にあります。
セキュリティ
API キーは x-api-key ヘッダー(ホスト型)または VIRTUALSMS_API_KEY 環境変数(ローカル stdio)経由で渡され、virtualsms.io のアカウントからローテーションできます。ポリシー、データ保持の詳細、情報開示の手順については、SECURITY.md をご覧ください。
脆弱性は [email protected] までご報告ください。
ライセンス
MIT。LICENSE をご覧ください。
VirtualSMS.io が開発。実際の物理 SIM カードを使った、開発者と AI エージェント向けのアカウント認証:2500+ のサービス、145+ か国、1 コードあたり $0.05 から。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。