TL;DR — Claude can do almost anything except receive an SMS code — until you connect an MCP server that gives it a phone number. The VirtualSMS MCP server lets Claude Desktop, Claude Code, and the Claude API request a real carrier-issued SIM number, poll for the incoming OTP, and pass the code back into an agent workflow. Numbers are real SIM cards on carriers like Vodafone, O2, and T-Mobile — not VoIP — across 145+ countries. Two transports: zero-install StreamableHTTP or local stdio via Node. Single-use activations start at cents; Full Access and Platform Rentals cover multi-day flows. Auto-refund if no SMS arrives within 20 minutes.
The one thing an AI agent cannot do on its own is receive a text message. Claude can write the signup code, fill the form, and click submit — then it hits the SMS one-time code and stops, because there is no phone in the loop. The Model Context Protocol (MCP) closes that gap: connect the VirtualSMS MCP server and Claude gains a tool that buys a real phone number, waits for the code, and reads it back. This guide covers the full setup for Claude Desktop, Claude Code, and the Claude API, the tools the server exposes, and three production agent workflows.
Key Takeaways
- MCP gives Claude a phone number as a tool — the server calls the VirtualSMS API, which allocates a real SIM and returns the incoming OTP.
- Numbers are real carrier-issued SIM cards (Vodafone, O2, T-Mobile, Lebara), not VoIP, so they clear line-type checks on WhatsApp, Telegram, and Google.
- Two transports: StreamableHTTP (zero-install, best for teams/CI) and stdio (local Node, best for development). Same tools on both.
- Coverage spans 145+ countries and thousands of SMS-verifiable services, with live price and availability returned at request time.
- Auto-refund fires if no SMS arrives within 20 minutes, so failed activations cost nothing.
What Does the VirtualSMS Claude MCP Server Do?
The VirtualSMS Claude MCP server gives Claude a set of tools to request a real-SIM phone number, poll for an incoming SMS one-time code, and return that code into the conversation — turning “verify this account” from a manual step into something an agent completes end to end. It is the bridge between Claude’s reasoning and a live carrier network.
Concretely, the server sits between your Claude client and the VirtualSMS API. When Claude decides it needs a number, it calls a tool; the server forwards the request to the API; the API allocates a real carrier-issued SIM, watches that physical SIM for the incoming code, and hands the result back up the chain. Claude reads the returned OTP exactly as it reads any other tool output, then continues the task.
The distinction that matters for verification is the number itself. These are real SIM cards on live carrier networks — the kind that return “mobile” when a platform runs a line-type lookup — not VoIP numbers that get flagged and rejected before a code is ever sent. That is why an agent workflow built on this server actually completes on strict platforms instead of silently failing at the OTP step.
See the services available for verification →Citation Capsule — The VirtualSMS MCP server exposes SMS-verification tools to Claude Desktop, Claude Code, and the Claude API via the Model Context Protocol. It does not receive SMS directly; it calls the VirtualSMS API, which allocates a real carrier-issued SIM number, waits for the one-time code to arrive on that physical SIM, and returns it to Claude as a tool result. Because the numbers are real SIM cards on carriers like Vodafone, O2, and T-Mobile — not VoIP — they pass the line-type checks that platforms such as WhatsApp, Telegram, and Google run before dispatching a code. Coverage spans 145+ countries. This lets an autonomous agent complete a signup-and-verify flow without a human relaying the code.
How Do I Install the Claude MCP Server for SMS Verification?
Install it by adding the VirtualSMS MCP server to your client’s MCP config with your API key, then restarting the client — either as a remote StreamableHTTP endpoint (zero local install) or as a local stdio process launched with Node. Both take a few minutes and expose the identical set of tools.
Before you start, you need a VirtualSMS account, an API key, and some account balance — the tools draw from your balance when they buy a number.
Option A — StreamableHTTP (zero-install)
The HTTP transport connects Claude to a hosted MCP endpoint over HTTPS. Nothing runs on your machine. Add the VirtualSMS MCP server to your Claude Desktop or Claude Code MCP configuration as an HTTP-type server, supply the endpoint URL and your API key, and restart the client. On restart, the verification tools appear in Claude’s tool list. This is the right choice for team setups, hosted agents, and CI pipelines where you want no local dependencies.
Option B — stdio (local Node)
The stdio transport runs the MCP server as a local process. Register it in your MCP config as a command-type server that launches the VirtualSMS MCP package with npx (Node required), passing your API key through the environment. Claude starts the process on demand and talks to it over standard input/output. This is the right choice for local development and offline-friendly work where you want the server on your own hardware.
Whichever transport you pick, confirm the connection the same way: ask Claude to list a service and buy a number. If it returns a live price and a number, the server is wired up correctly. For a deeper comparison of when real SIM numbers matter versus VoIP, see our breakdown of VoIP vs physical SIM verification.
What Tools Does the MCP Server Expose to Claude?
The server exposes a catalog of verification tools — discover available services and countries, check live pricing and stock, buy a number, poll for the incoming code, and cancel or reactivate an order — so Claude can run an entire signup-and-verify flow by chaining tool calls, with no values hard-coded.
The tools fall into four functional groups:
| Tool group | What Claude uses it for |
|---|---|
| Discovery | Query the service catalog and country availability so the agent picks the right target at runtime |
| Pricing & stock | Read live price and availability before committing to a purchase |
| Ordering | Buy a single-use activation, or open a Full Access / Platform Rental for multi-day flows |
| Receiving & lifecycle | Poll for the incoming SMS code, then cancel, reactivate, or complete the order |
Because discovery and pricing are tools rather than static config, the agent adapts on its own: if a service or country is out of stock, Claude can query alternatives and choose one, instead of failing on a hard-coded value. Prices are returned live at request time, not baked into the workflow.
Full pricing breakdown →Workflow 1: WhatsApp Account Verification, End-to-End
Ask Claude to “sign up for WhatsApp and verify it,” and with the MCP server connected it runs the whole loop: query the catalog for WhatsApp, check availability and price, buy a real-SIM number, submit it to WhatsApp, poll for the incoming code, read the OTP, and enter it — no human relaying the text.
The sequence Claude follows:
- Discover — call the catalog tool for WhatsApp and confirm a country with stock.
- Price-check — read the live price and decide whether to proceed.
- Buy — allocate a real carrier-issued SIM number for the activation.
- Submit — enter the number in the WhatsApp signup flow.
- Poll — wait on the receive tool until the code lands on the physical SIM.
- Verify — read the returned OTP and submit it to complete signup.
The reason this works where a free VoIP number would fail: WhatsApp runs a line-type check before it sends the code. A real SIM returns “mobile” and gets the OTP; a VoIP number is flagged and the code never sends. If no SMS arrives within 20 minutes, the activation auto-refunds, so a dead attempt costs the agent nothing and it can retry with a fresh number.
Why SMS verification gets blocked →Workflow 2: Bulk Signup Pipeline for QA and Testing
For developers who need many verified test accounts — QA suites, integration tests, load testing — Claude Code can loop the verification tools: for each account, query stock, buy a number, receive the code, record the result, and move on, drawing prices live and auto-refunding any activation that gets no SMS.
This is where the stdio transport and Claude Code shine. Claude Code treats the MCP tools like any other tool in its agent loop, so a batch job becomes a straightforward iteration: allocate, verify, log, repeat. The discovery tools let the loop skip out-of-stock countries automatically instead of stalling.
For test workflows that need a number to persist across sessions — receiving codes from one service over several days — a Platform Rental is the fit: you lock a number to a single service for 1, 3, or 7 days. For a dedicated number across any service over a longer window, Full Access gives exclusive use for 1, 3, 7, 14, or 30 days. Both are orderable through the same MCP tools. See how developers use rented numbers in virtual numbers for developer QA testing.
Compare Full Access and Platform Rentals →Workflow 3: Telegram Bot Deployment
To stand up a Telegram bot that owns its own number, Claude buys a real-SIM number through the MCP server, submits it to Telegram, receives the login code, and completes the bot’s phone verification — then, if the bot needs that number long-term, moves it to a rental so the same number keeps receiving codes.
The single-use activation is enough to get through the initial Telegram verification. But a bot that must stay reachable on that number over time needs persistence, and that is a rental decision: a Platform Rental locks the number to Telegram specifically for 1–7 days, while Full Access holds a number exclusively across any service for up to 30 days. Claude can open either through the MCP tools, so the “verify once” and “keep the number” steps live in the same agent flow.
Telegram, like WhatsApp, checks line type — which is again why a real carrier SIM clears verification where a VoIP number is rejected before the code sends.
When Should You Use an Activation vs a Rental Through MCP?
Use a single-use activation when the agent needs one code and will not reuse the number; use a rental when the same number must keep receiving codes over days. The MCP tools order all three through the same interface, so the choice is about the workflow’s lifetime, not about the setup.
| Option | Best for | Duration | Scope |
|---|---|---|---|
| Activation | One OTP, then done — signups, one-time KYC | Single code, 20-min window | One code on a real-SIM number |
| Platform Rental | Ongoing account on one service; multi-session testing | 1, 3, or 7 days | Real-SIM number locked to a single service, on a partner/global network |
| Full Access | Dedicated number across any service; developer integrations | 1, 3, 7, 14, or 30 days | A local-SIM number held exclusively for you, any service |
The practical rule: if the agent’s job ends when the account is created, an activation is the cheapest path and auto-refunds on failure. If the agent — or the account it created — needs that number to keep working next week, open a rental in the same flow. All three sit behind real carrier-issued SIM cards, so all three pass the same platform checks.
Real SIM vs VoIP, explained →Troubleshooting: Why Isn’t the Code Arriving?
If the tool call succeeds but no code comes back, the usual causes are an out-of-stock country, a service that needs a different country, or a genuinely undelivered SMS — all of which the auto-refund and the discovery tools are built to handle. The failure is almost never the MCP connection itself.
- Authentication errors — the API key is missing or wrong in the MCP config. Re-check the key and restart the client so the config reloads.
- Empty stock — the requested country has no numbers for that service right now. Have Claude call the discovery tool and pick another available country instead of retrying the same one.
- No SMS within 20 minutes — the activation auto-refunds. This is expected behavior, not an error: the agent loses nothing and can request a fresh number. A repeated no-code result on a strict platform is usually a signal to switch country, not to keep retrying.
- Tools not appearing — the client did not reload the MCP config. Restart Claude Desktop or Claude Code after any config change; MCP servers are read at startup.
Because pricing and availability are live tool results rather than static values, most “it’s not working” cases resolve by letting the agent re-query and choose a different country — which is exactly what the discovery tools exist for.
Frequently Asked Questions
How do I install the Claude MCP server for SMS verification?
You have two paths. The fastest is StreamableHTTP: add the VirtualSMS MCP endpoint and your API key to your Claude Desktop or Claude Code MCP config, restart the client, and the SMS tools appear — no local install. The second path is stdio: run the MCP server locally with Node (npx), point your client at the command, and it launches on demand. HTTP is best for hosted or team setups where you want zero local dependencies; stdio is best for local development where you want the server process on your own machine. Both expose the same verification tools and both require a VirtualSMS API key with account balance. After restarting the client, ask Claude to list a service and buy a number to confirm the connection works.
Can an MCP server actually receive a real SMS code?
Yes — but the MCP server does not receive the SMS itself. It calls the VirtualSMS API, which allocates a real carrier-issued SIM number, waits for the one-time code to land on that physical SIM, and returns the code to Claude through the tool result. Claude never touches telecom hardware directly; it calls a tool, the tool returns the OTP text, and Claude reads it like any other tool output. Because the numbers are real SIM cards on live carrier networks (not VoIP), they pass the line-type checks that platforms like WhatsApp, Telegram, and Google run before sending a code. That is the whole point of routing through a real-SIM provider instead of a free VoIP number.
Does Claude Code support phone-verification tools natively?
No. Claude Code has no built-in ability to receive SMS — it is a coding agent, not a telephony client. It gains that ability only when you connect an MCP server that exposes phone-number tools. Once the VirtualSMS MCP server is registered in your Claude Code MCP config, the verification tools become available to Claude Code exactly like filesystem or git tools: it can call them inside an agent loop, buy a number, poll for the code, and continue the task. The same server works identically in Claude Desktop and through the Claude API, so a workflow you build in Claude Code transfers without change.
What is the difference between HTTP and stdio MCP transport?
StreamableHTTP connects Claude to a remote MCP endpoint over HTTPS — nothing runs on your machine, so it is ideal for hosted setups, teams, and CI where you want zero local dependencies. The stdio transport launches the MCP server as a local process (via Node/npx) that communicates over standard input and output; it is ideal for local development, offline-friendly workflows, and cases where you want the server on your own hardware. Both transports expose the identical set of verification tools and both authenticate with your VirtualSMS API key. Choose HTTP for convenience and portability, stdio for local control.
How much does it cost to verify a number through the Claude MCP server?
Pricing follows the standard VirtualSMS rates: single-use activations start at a few cents and vary by service and country, with live prices returned by the tools at request time rather than hard-coded. For flows that need the same number over multiple days, Full Access and Platform Rentals are billed per rental period. There is no separate charge for using the MCP server — you pay only for the numbers you request, drawn from your account balance. If an activation gets no SMS within 20 minutes, it auto-refunds, so failed attempts do not cost you.
Which platforms can Claude verify accounts on through MCP?
Any service that verifies by SMS one-time code — thousands of them, spanning messengers (WhatsApp, Telegram, Signal, Discord), social platforms, email providers, marketplaces, and developer tools. The MCP server exposes a service catalog Claude can query, so the agent picks the right service and country at runtime instead of you hard-coding it. Availability and price vary by service and country and are returned live by the tools. Because the numbers are real carrier SIMs, they clear the checks that reject VoIP numbers on stricter platforms.
The Bottom Line
An AI agent is only as capable as its tools, and until you connect an MCP server, receiving an SMS code is the one step Claude cannot take. The VirtualSMS MCP server closes that gap for Claude Desktop, Claude Code, and the Claude API: Claude requests a real carrier-issued SIM number, the server waits for the code on that physical SIM, and the OTP flows back into the agent loop. Because the numbers are real SIM cards on carriers like Vodafone, O2, and T-Mobile — not VoIP — they clear the checks that reject free numbers on WhatsApp, Telegram, Google, and beyond.
Setup takes minutes on either transport, coverage spans 145+ countries, and pricing is pay-per-number with a 20-minute auto-refund on any activation that never delivers. Browse the services available for verification, compare Full Access and Platform Rentals for multi-day flows, or check live pricing before you wire the server into your agent.