mcpField
V
VirtualSMS MCP — SMS Verification for AI Agents

VirtualSMS MCP — SMS Verification for AI Agents

远程服务
github.com/virtualsms-io通信协作85 周前更新
代码仓库

关于 VirtualSMS MCP — SMS Verification for AI Agents

VirtualSMS MCP 将短信验证平台提供给 AI Agent,可查询服务与价格、购买号码并接收验证码,也支持号码租用和代理配置。工具覆盖订单管理,验证码可通过 WebSocket 推送或轮询获取。

主要功能

  1. 01搜索服务并查询价格
  2. 02购买号码及接收验证码
  3. 03管理和取消验证订单
  4. 04租用号码并延长租期
  5. 05查询代理目录并购买代理

适用场景

  1. 01为 WhatsApp 或 Telegram 获取验证码
  2. 02自动化测试 OTP 注册流程
  3. 03在 CI 中配置临时号码
  4. 04为号码匹配同国家代理

MCP 相关

此 MCP 服务通过托管端点或本地 stdio 向兼容客户端提供 VirtualSMS 平台工具。默认提供 40 个工具,可通过环境变量启用额外会话工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.virtualsms.io/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.virtualsms.io/mcp需要授权
安装包
npmvirtualsms-mcp1.3.3

工具

40

此工具无需参数。

详细介绍

VirtualSMS MCP 服务

CI npm version smithery badge License: MIT GitHub Stars

快速链接: 快速入门 · 为什么选择 VirtualSMS · 你可以构建什么 · 工具 · 问题 · 示例 · 更新日志 · 安全策略 · 状态

VirtualSMS 是面向开发者和 AI Agent 的账户验证平台。它通过一个 API、一个 MCP 服务和一笔预付余额,整合了一次性短信验证、专属号码租赁、国家匹配的代理和私有云浏览器会话。

为需要真实世界电话验证的 AI Agent 提供基础设施。

这些号码由运营商签发,是运营商网络上由真实实体 SIM 卡支持的移动号码,而非 VoIP 号码,因此能够通过注册时会拒绝 VoIP 号码的线路类型检查。

使用一笔预付余额,你可以:

  • 接收一次性短信验证码,费用低至 $0.05
  • 租用专属号码,租期为 1 至 30 天
  • 购买国家匹配的住宅、移动和数据中心代理
  • 启动私有云浏览器会话,与号码和代理配合使用(测试版)

这四项服务共用一笔预付余额、一个 API 和一个控制面板。你可以只使用所需功能,也可以将它们组合成一个验证工作流。

大多数服务商只解决验证工作流中的一个环节。VirtualSMS 通过一个 API、SDK 和 MCP 服务整合号码、租赁、代理和云浏览器会话,让你只使用所需功能,或将它们组合成一个工作流。

个人用户可以手动使用 VirtualSMS,也可以通过 SDK 和 API 将其集成到应用中,或通过 MCP 让 AI Agent 驱动。你可以通过 REST API、适用于 Node、Python、PHP、Ruby 和 .NET 的官方 SDK、托管 MCP 服务,或 n8n 等自动化工具使用该平台。

此服务可将该平台提供给任何 MCP 客户端。专为 AI Agent 构建,为 AI Agent 工作流设计。兼容 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 密钥。然后向你的 Agent 提出请求:

“帮我在最便宜的国家购买一个 Telegram 号码,并等待验证码。”

更愿意通过 stdio 在本地运行:

npx virtualsms-mcp

为什么选择 VirtualSMS

验证账户不应意味着要把一家服务商的号码、另一家的代理和第三家的浏览器会话拼凑在一起:这会带来多个账户、多笔余额和多个 API,支持服务也分散在不同供应商之间。VirtualSMS 通过一笔余额、一个 API 和一个 MCP 服务整合了这些环节。

VirtualSMS 在一个账户下整合了这三项服务,并提供一种统一的使用方式:

  • 运营商签发的移动号码。 由真实实体 SIM 卡支持,而非 VoIP,因此注册时会识别为移动号码。
  • 国家匹配的代理。 提供住宅、移动和数据中心代理池,确保号码和 IP 所属国家一致。
  • 私有云浏览器会话。 测试版。
  • REST API。 文档见 virtualsms.io/docs。
  • 托管 MCP 服务。 即本仓库,在线地址为 https://mcp.virtualsms.io/mcp。
  • 一笔预付余额。 验证、租赁和代理服务均从中扣款。

下文将逐一介绍以上六项内容。


可构建的应用场景

此服务目前能完成的实际任务。每项都是 Agent 可转换为工具调用的普通英语请求:

你的需求向 Agent 提出请求使用的工具
在 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
保留号码一周“帮我租一个英国号码,租期为 7 天”rentals_available → create_rental
让号码和 IP 地址相匹配“购买一个英国代理 IP,与我的英国号码匹配”list_proxy_catalog → buy_proxy → generate_proxy_endpoint
在信任号码前进行筛查“这个号码是 VoIP 号码吗?”check_number(无需 API 密钥)
恢复失效的号码“这个号码一直没收到验证码,帮我换一个”swap_number

前两项的可运行示例位于 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 仅通过 SSE 或流式 HTTP 连接远程 MCP 服务,因此请使用托管端点,而不要使用本地 stdio 命令。如果你更愿意构建自定义 GPT 或 Action,也可以使用 REST API。


配置

变量必填默认值说明
VIRTUALSMS_API_KEY是,账户工具必需无你的 VirtualSMS API 密钥。密钥以 vsms_ 为前缀
VIRTUALSMS_BASE_URL否https://virtualsms.ioAPI 基础 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 个工具)

核心短信验证功能:查找服务、查询价格、购买号码并获取验证码。

工具认证说明
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 收到短信,或直到超时
get_order是完整订单详情及收到的所有消息
list_orders是你的有效订单。对于崩溃恢复至关重要
order_history是过往订单,可按状态、服务、国家/地区和日期筛选
cancel_order是如果尚未收到短信,则取消订单并退款。购买后有 120s 冷却时间
cancel_all_orders是批量取消所有有效订单
swap_number是更换为同一服务和国家/地区的新号码,不额外收费。冷却时间为 120s

get_sms 与 wait_for_sms: 对于交互式 Agent 工作流,建议默认使用 wait_for_sms。它会阻塞等待,并在短信通过 WebSocket 到达时立即返回。批处理、由 cron 驱动的轮询,或你已管理自己的轮询循环时,请使用 get_sms。

wait_for_sms 接受的是 order_id,而不是服务和国家/地区。 请先调用 create_order,然后传入返回的 order_id。这就是先购买、再等待的两步流程。

租用(9 个工具)

按天保留号码,而不是只购买一次验证服务。分为两种类型:

  • 完全访问: 使用本地 SIM 卡库存,提供可用于任何服务的完整号码。今天有库存的每个国家/地区都会列出 1、7 和 30 天的选项,价格因国家/地区而异。这里有意不将时长和价格写死:请调用 rentals_available 获取各国家/地区的实时列表,并以其结果为准。
  • 平台: 通过我们的全球供应商网络提供,绑定到所选的一项服务,可租用 1、3 或 7 天。请调用 rentals_price 查询(服务、国家/地区、时长)组合的确切零售价。

库存、时长和价格因类型及国家/地区而异,因此在确认租用前,请先调用 rentals_available。有效租用可通过 extend_rental 按当前目录价格续期,时长可选范围取决于其所属类型。

两种类型的退款条款相同:购买后 20 分钟内且尚未收到第一条短信时取消,可全额退款。平台类型的取消还受 2 分钟最低保留时间限制,因此在前 2 分钟内取消会被拒绝,必须稍后重试。

| 工具 | 身份验证 | 描述 | |---|---|---| | `rentals_pricing` | 是 | Full Access 定价档位:时长和价格 | | `rentals_available` | 是 | 有租赁库存的国家、库存数量和各档位价格 | | `rentals_services` | 是 | 某个国家可用于 Platform 档位租赁的服务、库存和价格 | | `rentals_price` | 是 | 某项服务、国家和时长组合的零售价 | | `create_rental` | 是 | 租用一个号码。请先检查库存和价格 | | `list_rentals` | 是 | 查看你在两个档位下的租赁,可按状态筛选 | | `get_rental` | 是 | 查看单笔租赁的完整详情:档位、号码、服务锁定、状态、到期时间和短信 | | `extend_rental` | 是 | 延长有效租赁。按当前目录价格收费 | | `cancel_rental` | 是 | 全额退款,须在购买后 20 分钟内且尚未收到任何短信 |
代理(10 个工具)

与号码所在国家匹配的代理,确保号码和 IP 一致。提供三种代理池:住宅、移动和数据中心。按 GB 购买流量,然后生成连接字符串。

工具身份验证描述
list_proxy_catalog是代理池类型、国家和每 GB 价格。从这里开始
list_proxy_locations否查询指定代理池类型和国家的城市、州、ASN 或邮编。无需购买
buy_proxy是按 GB 购买代理流量。返回凭证和剩余余额
list_proxies是查看你的代理、剩余 GB 和凭证。返回 proxy_id 值
generate_proxy_endpoint是生成可直接使用的连接字符串:可按国家、州、城市、邮编或 ASN 定位,支持轮换或粘性会话,以及 HTTP 或 SOCKS5
rotate_proxy是为现有代理申请新的出口 IP
test_proxy是验证代理是否可用。报告出口 IP、国家、城市、ISP 和延迟
get_proxy_usage是查看单个代理已使用和剩余的缓存 GB 数,以及请求数
get_proxy_usage_history是查看过去 7 天或 30 天的每日流量和请求数序列
set_proxy_targeting是为代理子用户保存默认地理定位设置
其他(3 个工具)
工具身份验证描述
retry_order是请求将短信重新发送到同一号码。并非所有订单类型都支持
check_number否查询任意 E.164 号码的运营商和线路类型:移动、固定电话或 VoIP,并检查垃圾号码风险
start_manual_registration_session是Beta 版,仅限受邀者。 启动一个与国家匹配的云端浏览器,你可以通过实时查看器自行操作。由 Agent 驱动的导航需要单独选择启用(即会话工具)。加入 https://t.me/VirtualSMS_io 以获取 Beta 版访问权限
会话工具(另外 3 个,默认关闭)

Beta 版,仅限受邀者。 浏览器栈仍处于早期阶段。它可以正常运行,但这些工具的形式仍可能改变,目前也不保证稳定性。加入 https://t.me/VirtualSMS_io 以获取 Beta 版访问权限和更新。

只有在将 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")
号码收不到短信?换一个
swap_number(order_id: "abc123")
→ {order_id: "def456", phone_number: "+628...", status: "waiting"}
租用一个号码一个月
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")

常见问题

什么是账户验证基础设施?

账户验证基础设施是一整套系统,用于让真实账户通过要求提供电话号码的注册流程。它包含五个层级,任何一个环节缺失,整条链路都会失败:

  1. 号码。 运营商签发的移动号码,因为系统会检查号码类型。
  2. 短信。 发送到该号码的验证码,并且应能由软件读取,而不是由拿着手机的人读取。
  3. 代理。 与号码属于同一国家/地区的 IP,确保两者相符。
  4. 浏览器。 用于执行注册流程的干净环境。
  5. 自动化。 能够端到端、无人值守地运行整条链路的 API 或 Agent。

大多数服务商只提供前两个层级,其余部分都要你自行解决,而问题恰恰出在这里:号码、IP 和浏览器提供的信息不再一致。VirtualSMS 提供了支撑这五个层级的基础设施。

VirtualSMS 是面向个人、开发者和 AI Agent 的账户验证平台。它通过一个 API、一个 MCP 服务和一个预付费余额,整合了一次性短信验证、专用号码租赁、同国家/地区代理以及私有云浏览器会话。

什么是用于短信验证的 MCP 服务?

MCP(模型上下文协议)是一种开放标准,允许 AI 客户端调用外部工具。用于短信验证的 MCP 服务会将电话号码和验证码操作作为工具提供,让 Agent 可以直接调用,这样 Agent 就能购买号码、等待验证码并读取验证码,无需你编写任何粘合代码。本仓库就是 VirtualSMS 的 MCP 服务:包含 40 个涵盖验证、号码租赁和代理的工具。如果你完全不需要驱动 Agent,也可以通过普通的 REST 验证 API 使用相同的操作。

什么时候应该使用它?
  • 你的 AI Agent 需要登录或注册要求提供电话号码的账户。
  • 你正在测试 OTP 或注册流程,希望按需获取新号码,而不是准备一抽屉测试 SIM 卡。
  • 你需要在 CI 或无人值守任务中自动获取验证码。
  • 你需要号码和相匹配的同国家/地区 IP。
  • 你正在通过浏览器执行自动化注册,希望号码、IP 和浏览器都来自同一家服务,而不是三个不同来源。
  • 你需要一个只用于接收一条验证码的临时电话号码,或一个最长可保留 30 天的专用号码。
  • 你希望按验证码计费,每条低至 $0.05,无需订阅,也无需按月租用号码。
什么时候不应该使用它?

坦诚说明,免得你白费一个下午:

  • 你需要发送短信。 该平台只接收,不发送。请使用 Twilio 等消息服务商。
  • 你需要用于业务的永久号码。 验证号码按设计就是临时号码,租用期限以天计,而非以年计。请向运营商购买真实号码。
  • 你需要在自己已有的号码上接收验证码。 该平台不支持号码转入,号码均来自我们的库存。
  • 你正在开展 A2P 营销活动。 这完全不是合适的工具。
  • 你试图规避某个平台的服务条款。 你的使用是否符合所验证服务的条款,由你负责,而非我们。
Claude 或 Cursor 能接收短信验证码吗?

可以,通过此服务即可。Claude Code、Claude Desktop、Cursor、Windsurf、Cline、Zed、Continue.dev、Codex、OpenClaw 和 Hermes 都是 MCP 客户端,只需粘贴配置即可完成设置(参见客户端设置)。安装完成后,“购买一个 Telegram 号码并等待验证码”这样的请求,Agent 就能端到端地处理。ChatGPT 也可以使用它:通过 Developer Mode 自定义连接器(参见这适用于 ChatGPT 吗?),或者通过 REST API 使用,如果你不想启用 Developer Mode。

AI Agent 如何自动接收 OTP 验证码?

调用两个工具即可。create_order 为指定服务和国家购买号码,并返回一个 order_id。随后,wait_for_sms 会等待该 order_id 对应的短信,并在验证码到达时立即返回;验证码通过 WebSocket 推送,通常只需 2 到 15 秒。Agent 无需轮询,也无需循环休眠,更不需要人工读取手机短信。如果你更愿意自行驱动循环,可以改用 get_sms 轮询单个订单。

这与 Twilio 有什么不同?

Twilio 是一个完整的通信平台:发送和接收 SMS 与语音、长期使用的号码、A2P 活动等一应俱全。VirtualSMS 只专注于一项工作:按需接收验证码。实际区别如下:

  • 线路类型。 Twilio 号码属于 VoIP。许多服务会在注册时拒绝 VoIP 号码。VirtualSMS 号码是真实的实体 SIM 卡,使用运营商网络,因此会被识别为移动号码。
  • 定价方式。 无论是否使用,Twilio 都会按月收取号码费用。VirtualSMS 按验证码收费,价格从 $0.05 起,无需订阅。
  • 方向。 Twilio 可发送和接收。VirtualSMS 只接收。

如果你需要发送消息,请使用 Twilio。如果你需要接收验证码,这项服务就是为此而打造的。

为什么使用真实的实体 SIM 卡,而不是 VoIP?

验证系统会检查你提供的号码所属的线路类型。VoIP 号码成本低,而且可以大规模地一次性使用,因此常与欺诈行为相关,许多服务会在注册时直接拒绝这类号码。真实的实体 SIM 卡使用运营商网络,会被识别为移动号码,这正是验证系统要确认的:号码不是 VoIP,且行为与真实手机号码一致。

你不必盲目相信这一点。check_number 可对任意 E.164 号码进行运营商和线路类型查询,无需 API 密钥,并会告诉你该号码显示为移动号码、固定电话还是 VoIP。


替代方案与对比

搜索 textverified mcp、sms-activate mcp、5sim mcp、daisysms mcp 或 smspool mcp 的开发者,通常只想知道一件事:哪家 SMS 验证服务提供商可以由 AI Agent 原生调用?本节将直接回答这个问题,不做排名。

VirtualSMS 发布了此 MCP 服务,因此任何 MCP 客户端都可以直接调用,无需编写包装代码:40 个工具、2500 多项服务、145 个以上国家/地区,每个验证码 $0.05 起,使用真实的实体 SIM 卡,还提供号码租赁和与号码国家/地区匹配的代理,全部使用同一余额。

SMS-Activate 已于 2025 年 12 月停运。如果你的集成指向该服务,现在已无法使用。迁移只需换用新的 API 密钥和基础 URL,无需重写代码:这里的工作流程相同,即购买号码后读取验证码。

TextVerified、5SIM、DaisySMS 和 SMSPool 都是仍在运营的 SMS 验证服务提供商,各自拥有自己的 API、定价、覆盖范围和条款。请查阅它们当前的文档,了解目前提供的服务。

我们有意不发布竞争对手的价格、服务数量或覆盖范围对比表。这些数据每周都在变化,我们无法特别了解其他服务商的库存情况;将过时的数据包装成研究成果,反而不如不提供任何表格。上文列出的 VirtualSMS 数据来自我们,我们对此负责。请将其与你目前使用的服务进行对比。


工作原理

WebSocket 和轮询

wait_for_sms 使用两级投递机制:

  1. WebSocket,即时投递。 连接到 wss://virtualsms.io/ws/orders?order_id=xxx&api_key=your_key。收到短信时,服务端会实时推送。典型投递时间:2 至 15 秒。
  2. 轮询回退。 如果 WebSocket 连接失败或断开,工具会改为每 5 秒轮询一次,直到剩余超时时间耗尽。

响应中的 delivery_method 字段会告知你使用了哪种方式:websocket、polling;如果你调用前验证码已经送达,则为 instant。

此服务通过保持连接的 WebSocket 推送消息,不会回调你。如果你希望 VirtualSMS 将事件 POST 到你拥有的 URL,平台还提供独立的 webhook 订阅系统,可通过控制面板配置,并由 REST API 驱动,而非由此 MCP 服务驱动。

架构
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
崩溃恢复

如果会话在验证过程中中断:

  1. 重启 MCP 服务。
  2. 列出活跃订单: list_orders(status: "pending")
  3. 检查验证码: get_sms(order_id: "abc123")
  4. 如果不再需要,则取消: cancel_order(order_id: "abc123")

wait_for_sms 始终会返回 order_id,即使超时也不例外,因此你可以恢复操作。


托管端点和状态

  • 托管 MCP 端点: https://mcp.virtualsms.io/mcp。仅支持 TLS 的 StreamableHTTP,由 Cloudflare 提供前置服务。
  • 平台状态和正常运行时间: virtualsms.io/status,实时轮询以下服务:网站和控制面板、短信网关、REST API、Telegram 机器人和数据库。托管 MCP 端点作为独立服务运行,目前尚未列入该页面。
  • 目标 SLA: 托管 MCP 路径的目标为 99.9%。这是我们要求自己达到的目标,并非合同保证;上述状态页面目前也尚未对此进行监测。
  • 覆盖范围: 145+ 个国家/地区在线,已收录 2500+ 项服务。
  • 数据保留: 短信正文保留 7 天,之后将永久删除。订单元数据(电话号码、服务、国家/地区、时间戳)会在你的账户存续期间保留。详情请参阅 SECURITY.md。
  • 漏洞披露: 请发送邮件至 [email protected],或提交私密安全公告。

👉 在 VirtualSMS.io 注册


示例

此仓库中包含三个可运行的示例。设置 VIRTUALSMS_API_KEY 后,只需运行 node run.mjs 即可。

SDK 和工具

无论你使用哪种语言编写,都能使用同一平台:

仓库说明
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-docsREST API 文档源文件
examples多种语言的可运行示例
n8n-nodes-virtualsmsn8n 社区节点
automation-integrationsMake、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

两种传输方式共用一张工具表: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 构建。为开发者和 AI Agent 提供账户验证,使用真实的实体 SIM 卡:2500+ 项服务 · 145+ 个国家/地区 · 每个验证码低至 $0.05。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。