关于 VirtualSMS MCP — SMS Verification for AI Agents
VirtualSMS MCP 将短信验证平台提供给 AI Agent,可查询服务与价格、购买号码并接收验证码,也支持号码租用和代理配置。工具覆盖订单管理,验证码可通过 WebSocket 推送或轮询获取。
主要功能
- 01搜索服务并查询价格
- 02购买号码及接收验证码
- 03管理和取消验证订单
- 04租用号码并延长租期
- 05查询代理目录并购买代理
适用场景
- 01为 WhatsApp 或 Telegram 获取验证码
- 02自动化测试 OTP 注册流程
- 03在 CI 中配置临时号码
- 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 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.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 个工具)
核心短信验证功能:查找服务、查询价格、购买号码并获取验证码。
| 工具 | 认证 | 说明 |
|---|---|---|
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 分钟内取消会被拒绝,必须稍后重试。
代理(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")
常见问题
什么是账户验证基础设施?
账户验证基础设施是一整套系统,用于让真实账户通过要求提供电话号码的注册流程。它包含五个层级,任何一个环节缺失,整条链路都会失败:
- 号码。 运营商签发的移动号码,因为系统会检查号码类型。
- 短信。 发送到该号码的验证码,并且应能由软件读取,而不是由拿着手机的人读取。
- 代理。 与号码属于同一国家/地区的 IP,确保两者相符。
- 浏览器。 用于执行注册流程的干净环境。
- 自动化。 能够端到端、无人值守地运行整条链路的 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 使用两级投递机制:
- WebSocket,即时投递。 连接到
wss://virtualsms.io/ws/orders?order_id=xxx&api_key=your_key。收到短信时,服务端会实时推送。典型投递时间:2 至 15 秒。 - 轮询回退。 如果 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
崩溃恢复
如果会话在验证过程中中断:
- 重启 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,实时轮询以下服务:网站和控制面板、短信网关、REST API、Telegram 机器人和数据库。托管 MCP 端点作为独立服务运行,目前尚未列入该页面。
- 目标 SLA: 托管 MCP 路径的目标为 99.9%。这是我们要求自己达到的目标,并非合同保证;上述状态页面目前也尚未对此进行监测。
- 覆盖范围: 145+ 个国家/地区在线,已收录 2500+ 项服务。
- 数据保留: 短信正文保留 7 天,之后将永久删除。订单元数据(电话号码、服务、国家/地区、时间戳)会在你的账户存续期间保留。详情请参阅 SECURITY.md。
- 漏洞披露: 请发送邮件至
[email protected],或提交私密安全公告。
示例
此仓库中包含三个可运行的示例。设置 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 Agent 的标准模式。examples/03-claude-desktop-config/:可直接使用的 Claude Desktop 配置,以及通过 StreamableHTTP“询问 Claude 我的余额是多少”的对话记录。
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-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
两种传输方式共用一张工具表: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。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。