list_services
List services available for SMS activation in a country.
api_keycountry
io.github.MassimoSunPublished by GitHub account MassimoSunv0.1.3Updated Oct 28, 2026
SMS verification for AI agents: buy a number, get the code, cancel with refund. Free sandbox.
Lets an agent buy a real phone number for SMS verification, wait for the code, and cancel with a refund, using a prepaid balance.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.MassimoSun%2Fsmsverbot-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config.
{
"mcpServers": {
"smsverbot": {
"type": "http",
"url": "https://kremledroid.duckdns.org/mcp"
}
}
}SMS verification for AI agents. An MCP server that lets an agent buy a real phone number, wait for the confirmation code, and cancel the order with a refund if the code never arrives. Remote streamable-HTTP endpoint, prepaid balance, pay-as-you-go — no subscriptions.
Works with Claude Code, Cursor, VS Code, Codex, Hermes and any MCP client. Keywords: MCP server, model context protocol, SMS verification, SMS activation, virtual numbers, AI agents, phone verification.
https://kremledroid.duckdns.org/mcplist_services, list_countries, get_price, buy_number, wait_for_code, cancel_order, get_balance, order_history, whoamiOpen @Smsverbot in Telegram, press 🤖 MCP для агентов (or send /api_key). The bot gives you the API key and shows your balance. The balance is shared with the bot: top up once — the same money pays for both numbers bought in the chat and numbers bought by your agent. No separate account, no card, no crypto wallet needed for MCP.
Press 🧪 Тестовый режим in the same menu. A sandbox key buys fake numbers (+10000000000) and returns the fixed code 123456 after ~4 seconds, costs nothing, and never touches real providers. Build and debug your integration for free, then switch to a real key when you are ready.
MCP-сервер, который продаёт AI-агентам номера для приёма SMS-кодов подтверждения. Это отдельный продукт, не связанный с Telegram-ботом. Работает без собственного UI и веб-фреймворка: агент подключается по stdio или streamable HTTP и вызывает инструменты MCP.
Деньги хранятся в целых копейках. Баланс предоплаченный: агент пополняет счёт, покупка номера списывает стоимость, отмена возвращает её ровно один раз.
Эндпоинт: https://kremledroid.duckdns.org/mcp (streamable HTTP, TLS).
Claude Code:
Cursor (~/.cursor/mcp.json):
VS Code (.vscode/mcp.json):
Дальше: получить API-ключ у Telegram-бота @Smsverbot, положить баланс и передать ключ одним из двух способов — заголовком Authorization: Bearer <ключ> в конфиге клиента (рекомендуется для хостед-режима) или первым аргументом api_key любого инструмента. Проверка, что ключ принят: инструмент whoami — отдаёт key_id и баланс.
mock без сети и реальный адаптер fivesim.BEGIN IMMEDIATE для всех операций с балансом.Windows (PowerShell или cmd):
Linux/macOS:
Требуется Python 3.11+. Проект проверялся на Python 3.14.
Скопируйте .env.example в .env и заполните значения. Файл .env читается автоматически, переменные окружения имеют приоритет.
Секретов в репозитории нет. Не коммитьте .env и реальные токены.
Mock-режим не делает сетевых запросов и подходит для тестов и локальной разработки:
Live-режим включается только явно:
HTTP-транспорт (streamable HTTP):
По умолчанию HTTP слушает 127.0.0.1; хост можно изменить через --host.
Открытый API-ключ показывается только при создании. В базе остаётся лишь его SHA-256.
Вторая команда пополняет баланс на 500 рублей (50000 копеек).
admin.py читает путь к базе из MCP_DB (по умолчанию ./mcp.db).
Создать ключ с меткой и сразу пополнить баланс на 500 рублей:
Показать все ключи (ID, метка, баланс в рублях):
Пополнить баланс ключа на 200 рублей:
Показать последние заказы ключа:
Открытый API-ключ показывается только один раз при создании.
Во всех примерах замените путь на абсолютный путь к server.py. Для live-режима добавьте PROVIDER и FIVESIM_TOKEN в блок env.
Файл claude_desktop_config.json:
Файл .cursor/mcp.json (или глобальный ~/.cursor/mcp.json) использует ту же схему mcpServers, что и Claude Desktop.
Публичный HTTP-сервер:
Для отдельной базы и live-провайдера передайте переменные окружения в оболочке перед запуском команды.
Зарегистрируйте stdio-сервер с командой python и аргументами server.py --stdio, либо подключите HTTP-транспорт по адресу http://127.0.0.1:8765/mcp. Передайте MCP_DB и при необходимости PROVIDER/FIVESIM_TOKEN через env.
Все инструменты принимают api_key первым аргументом. Если передать пустую строку, используется MCP_API_KEY из окружения. Успех: {"ok": true, ...}. Ошибка: {"ok": false, "error": "CODE", "message": "..."}. Коды ошибок: UNAUTHORIZED, INSUFFICIENT_FUNDS, RATE_LIMITED, DAILY_LIMIT, ORDER_NOT_FOUND, NO_NUMBERS, UNAVAILABLE, UPSTREAM_ERROR, INTERNAL.
Чтение каталога, цен, баланса и истории никогда не списывает деньги.
cost_kop берётся у провайдера.price_kop = max(ceil(cost_kop * MCP_MARKUP), cost_kop + 1000), затем округление вверх до 100 копеек.waiting, затем баланс списывается атомарно. При нехватке средств заказ отменяется у провайдера и помечается cancelled.wait_for_code только опрашивает провайдера. Таймаут переводит ответ в pending, деньги не возвращаются.waiting/open. Повторная отмена возвращает refunded_kop: 0.ledger: topup, debit, refund.RATE_LIMIT_PER_15MIN — скользящее окно на ключ, по умолчанию 20 запросов покупки за 15 минут.DAILY_CODE_LIMIT — число незавершённых отменой заказов на ключ за сутки UTC, по умолчанию 200.CODE_WAIT_SECONDS — максимум ожидания кода, по умолчанию 120 секунд; опрос каждые 2 секунды.cancel_order.Разрешено:
Запрещено:
Оператор вправе заблокировать ключ и отказать в обслуживании при нарушении AUP. Пользователь обязан соблюдать правила целевых сервисов, включая их ограничения на виртуальные номера.
Тест tests/test_mcp_client.py запускает сервер по stdio через официальный MCP-клиент, проверяет ровно 9 инструментов и читает баланс из общей тестовой базы.
config.py — настройки из окружения.store.py — SQLite, ключи, заказы, ledger, лимиты.providers/ — протокол, mock- и 5sim-адаптеры.service.py — бизнес-логика цен, покупки, ожидания и отмены.server.py — FastMCP, 9 инструментов и CLI.admin.py, admin_service.py — админ-CLI и операции с ключами в рублях.tests/ — сервисные тесты и интеграционный тест MCP-клиента.Source: README.md at commit a21e419
List services available for SMS activation in a country.
api_keycountryList countries available for SMS activation.
api_keyGet the retail price for a service and country without buying.
api_keycountryrequiredservicerequiredBuy a phone number and debit the prepaid balance.
api_keycountryrequiredservicerequiredWait for an SMS code for an existing order.
api_keyorder_idrequiredCancel an order and refund the balance exactly once.
api_keyorder_idrequiredReturn the current prepaid balance.
api_keyReturn recent orders for the API key.
limitapi_keyVerify an API key and return its id and balance in rubles.
api_key90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare a license in the repository or the registry entry.
claude mcp add --transport http smsverbot https://kremledroid.duckdns.org/mcpclaude mcp add --transport http smsverbot https://kremledroid.duckdns.org/mcp{ "mcpServers": { "smsverbot": { "url": "https://kremledroid.duckdns.org/mcp" } } }{ "servers": { "smsverbot": { "type": "http", "url": "https://kremledroid.duckdns.org/mcp" } } }python -m venv .venv.venv/Scripts/pip install -r requirements.txtpython -m venv .venv.venv/bin/pip install -r requirements.txt.venv/Scripts/python server.py --stdioset PROVIDER=fivesimset FIVESIM_TOKEN=your_token_here.venv/Scripts/python server.py --stdio.venv/Scripts/python server.py --http --port 8765.venv/Scripts/python server.py --create-key "my-agent".venv/Scripts/python server.py --topup svb_ВАШ_КЛЮЧ 500python admin.py create --label client1 --topup 500python admin.py listpython admin.py topup --key-id ID --amount 200python admin.py orders --key-id ID{ "mcpServers": { "smsverbot": { "command": "C:/path/to/.venv/Scripts/python.exe", "args": ["C:/path/to/smsverbot-mcp/server.py", "--stdio"], "env": { "MCP_DB": "C:/path/to/smsverbot-mcp/mcp.db", "PROVIDER": "mock" } } }}claude mcp add smsverbot -- python server.py --stdioclaude mcp add --transport http smsverbot https://kremledroid.duckdns.org/mcp.venv/Scripts/python -m pytest -q tests/.venv/Scripts/python -m compileall -q .