Smsverbot Mcp

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.

VerifiedStreamable HTTPWeb executableCommunication & CollaborationBusiness & Commerce

Overview

AI-generated overview

Lets an agent buy a real phone number for SMS verification, wait for the code, and cancel with a refund, using a prepaid balance.

What you can do
  • Browse the catalog: list available services and countries, and check the retail price of a service/country without buying.
  • Buy and wait: purchase a number (debiting the prepaid balance) and poll for the incoming SMS code.
  • Cancel and refund: cancel an order and get the retail price back once.
  • Account: check the current balance, list recent orders, and verify an API key with whoami.
When to use it
Useful when an agent needs to complete phone verification on a service it is legitimately allowed to sign up for, or to automate testing of your own product's SMS flow. A free sandbox mode with fake numbers and a fixed code lets you build the integration before spending money.
Requirements
Remote streamable-HTTP endpoint, or a local Python 3.11+ install run over stdio or HTTP. An API key obtained from the provider's Telegram bot, passed as an Authorization Bearer header or as the api_key argument of each tool. A funded prepaid balance in rubles; a separate sandbox key is available for testing. Live provider mode needs PROVIDER and FIVESIM_TOKEN.
Before you install
buy_number spends real money from a shared prepaid balance, and a code-wait timeout does not refund automatically — you must call cancel_order. The API key is a spending credential; keep it out of logs and configs you share. The service is hosted by a third party, so order and key data go to that operator and to the upstream SMS provider. Misuse such as spam, ban evasion or fake accounts is prohibited and can get the key blocked.

Installation

In SourceWeft

  1. Open Smsverbot Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

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.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "smsverbot": {
      "type": "http",
      "url": "https://kremledroid.duckdns.org/mcp"
    }
  }
}

README

smsverbot-mcp

[MCP Registry]

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.

  • Endpoint: https://kremledroid.duckdns.org/mcp
  • Tools: list_services, list_countries, get_price, buy_number, wait_for_code, cancel_order, get_balance, order_history, whoami

Step 1 — get your key in the bot

Open @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.

Step 2 — try the free sandbox first

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.

Step 3 — connect

bash
claude mcp add --transport http smsverbot https://kremledroid.duckdns.org/mcp

Badges

[MCP Registry] [Glama]


MCP-сервер, который продаёт AI-агентам номера для приёма SMS-кодов подтверждения. Это отдельный продукт, не связанный с Telegram-ботом. Работает без собственного UI и веб-фреймворка: агент подключается по stdio или streamable HTTP и вызывает инструменты MCP.

Деньги хранятся в целых копейках. Баланс предоплаченный: агент пополняет счёт, покупка номера списывает стоимость, отмена возвращает её ровно один раз.

Подключение за 30 секунд (хостед, без установки)

Эндпоинт: https://kremledroid.duckdns.org/mcp (streamable HTTP, TLS).

Claude Code:

bash
claude mcp add --transport http smsverbot https://kremledroid.duckdns.org/mcp

Cursor (~/.cursor/mcp.json):

json
{ "mcpServers": { "smsverbot": { "url": "https://kremledroid.duckdns.org/mcp" } } }

VS Code (.vscode/mcp.json):

json
{ "servers": { "smsverbot": { "type": "http", "url": "https://kremledroid.duckdns.org/mcp" } } }

Дальше: получить API-ключ у Telegram-бота @Smsverbot, положить баланс и передать ключ одним из двух способов — заголовком Authorization: Bearer <ключ> в конфиге клиента (рекомендуется для хостед-режима) или первым аргументом api_key любого инструмента. Проверка, что ключ принят: инструмент whoami — отдаёт key_id и баланс.

Возможности

  • 9 MCP-инструментов для каталога, цен, покупки, ожидания кода, отмены, баланса, истории и проверки ключа.
  • Провайдер-агностичный слой: детерминированный mock без сети и реальный адаптер fivesim.
  • SQLite с WAL и транзакциями BEGIN IMMEDIATE для всех операций с балансом.
  • Ключи API хранятся только как SHA-256; открытый ключ показывается один раз.
  • Идемпотентный возврат средств при отмене.
  • Ограничения частоты и дневной лимит на ключ.

Установка

Windows (PowerShell или cmd):

bat
python -m venv .venv.venv/Scripts/pip install -r requirements.txt

Linux/macOS:

bash
python -m venv .venv.venv/bin/pip install -r requirements.txt

Требуется Python 3.11+. Проект проверялся на Python 3.14.

Настройка

Скопируйте .env.example в .env и заполните значения. Файл .env читается автоматически, переменные окружения имеют приоритет.

ПеременнаяПо умолчаниюНазначение
MCP_DB./mcp.dbПуть к SQLite-базе
MCP_API_KEYпустоКлюч по умолчанию для stdio-клиентов, если api_key передан пустым
PROVIDERmockmock или fivesim
FIVESIM_TOKENпустоТокен 5sim, обязателен для fivesim
MCP_MARKUP2.5Наценка к закупочной цене
RATE_LIMIT_PER_15MIN20Лимит покупок на ключ за 15 минут
DAILY_CODE_LIMIT200Дневной лимит заявок на ключ (UTC)
CODE_WAIT_SECONDS120Максимальное ожидание SMS-кода
USD_KOP_RATE9200Курс USD→RUB в копейках за доллар

Секретов в репозитории нет. Не коммитьте .env и реальные токены.

Запуск

Mock-режим не делает сетевых запросов и подходит для тестов и локальной разработки:

bat
.venv/Scripts/python server.py --stdio

Live-режим включается только явно:

bat
set PROVIDER=fivesimset FIVESIM_TOKEN=your_token_here.venv/Scripts/python server.py --stdio

HTTP-транспорт (streamable HTTP):

bat
.venv/Scripts/python server.py --http --port 8765

По умолчанию HTTP слушает 127.0.0.1; хост можно изменить через --host.

Ключи и пополнение

Открытый API-ключ показывается только при создании. В базе остаётся лишь его SHA-256.

bat
.venv/Scripts/python server.py --create-key "my-agent".venv/Scripts/python server.py --topup svb_ВАШ_КЛЮЧ 500

Вторая команда пополняет баланс на 500 рублей (50000 копеек).

Админ: выдача ключей

admin.py читает путь к базе из MCP_DB (по умолчанию ./mcp.db).

Создать ключ с меткой и сразу пополнить баланс на 500 рублей:

bat
python admin.py create --label client1 --topup 500

Показать все ключи (ID, метка, баланс в рублях):

bat
python admin.py list

Пополнить баланс ключа на 200 рублей:

bat
python admin.py topup --key-id ID --amount 200

Показать последние заказы ключа:

bat
python admin.py orders --key-id ID

Открытый API-ключ показывается только один раз при создании.

Подключение MCP-клиентов

Во всех примерах замените путь на абсолютный путь к server.py. Для live-режима добавьте PROVIDER и FIVESIM_TOKEN в блок env.

Claude Desktop

Файл claude_desktop_config.json:

json
{  "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"      }    }  }}

Cursor

Файл .cursor/mcp.json (или глобальный ~/.cursor/mcp.json) использует ту же схему mcpServers, что и Claude Desktop.

Claude Code

bash
claude mcp add smsverbot -- python server.py --stdio

Публичный HTTP-сервер:

bash
claude mcp add --transport http smsverbot https://kremledroid.duckdns.org/mcp

Для отдельной базы и live-провайдера передайте переменные окружения в оболочке перед запуском команды.

Hermes и другие MCP-клиенты

Зарегистрируйте 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.

ИнструментОписание
list_services(country="indonesia")Список доступных сервисов
list_countriesСписок доступных стран
get_price(service, country)Розничная цена без покупки и списания
buy_number(service, country)Купить номер и списать баланс
wait_for_code(order_id)Дождаться SMS-кода по заказу
cancel_order(order_id)Отменить заказ и вернуть деньги один раз
get_balance()Текущий баланс в копейках и рублях
order_history(limit=10)Последние заказы ключа
whoamiПроверить ключ: key_id и баланс в рублях

Чтение каталога, цен, баланса и истории никогда не списывает деньги.

Биллинг

  • Все суммы хранятся и списываются в целых копейках; денежные операции не используют float.
  • Закупочная цена 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: допустимое и запрещённое использование

Разрешено:

  • легальная регистрация и подтверждение собственных аккаунтов;
  • автоматизация тестирования собственных продуктов;
  • сценарии, где использование временного номера не нарушает правила сервиса и законодательство.

Запрещено:

  • мошенничество, спам, обход банов и массовое создание фейковых аккаунтов;
  • покупка номеров для преступлений или нарушения законов;
  • перепродажа доступа способом, скрывающим конечного пользователя от проверки;
  • использование сервиса лицами младше установленного законом возраста.

Оператор вправе заблокировать ключ и отказать в обслуживании при нарушении AUP. Пользователь обязан соблюдать правила целевых сервисов, включая их ограничения на виртуальные номера.

Проверка

bat
.venv/Scripts/python -m pytest -q tests/.venv/Scripts/python -m compileall -q .

Тест 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

Tools

9

list_services

List services available for SMS activation in a country.

Parametersapi_keycountry

list_countries

List countries available for SMS activation.

Parametersapi_key

get_price

Get the retail price for a service and country without buying.

Parametersapi_keycountryrequiredservicerequired

buy_number

Buy a phone number and debit the prepaid balance.

Parametersapi_keycountryrequiredservicerequired

wait_for_code

Wait for an SMS code for an existing order.

Parametersapi_keyorder_idrequired

cancel_order

Cancel an order and refund the balance exactly once.

Parametersapi_keyorder_idrequired

get_balance

Return the current prepaid balance.

Parametersapi_key

order_history

Return recent orders for the API key.

Parameterslimitapi_key

whoami

Verify an API key and return its id and balance in rubles.

Parametersapi_key

Version history

3
  1. v0.1.3LatestOct 22, 2026
  2. v0.1.2Oct 21, 2026
  3. v0.1.0Oct 20, 2026

Score

90% 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.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.