Skip to main content
Glama
SMSC MCP

SMSC MCP

by heist1337

SMSC MCP

Check FastMCP MIT Python

Чтение SMSC и аналитика расходов через FastMCP. Состояние хранится в одном приватном SQLite файле. Отправки SMS, платежей, платных проверок и изменений аккаунта в коде нет.

Быстрый старт

Установить uv, затем:

git clone https://github.com/heist1337/smsc-analytics-mcp.git
cd smsc-analytics-mcp
cp .env.example .env
# Записать API-ключ SMSC в приватный .env.
uv run --locked --env-file .env smsc-mcp

По умолчанию используется stdio: сервер запускается самим MCP-клиентом. Python и зависимости устанавливает uv. Готовый шаблон подключения: mcp.example.json.

Related MCP server: WhatsApp Read Agent MCP Server

Инструменты

Инструмент

Действие

smsc_read

Каталог разрешённых чтений; живые чтения и обезличенные локальные снимки

smsc_history

Одна страница исходящих с явным продолжением

smsc_cost_report

Анализ одной живой страницы; не итог большого периода

smsc_refresh

Одна страница в локальную историю, checkpoint и защита конкуренции

smsc_analytics

Аналитика SQLite без API-ключа и запросов к SMSC

Начать с smsc_read(operation="catalog"): ключ для каталога не нужен. Даты — DD.MM.YYYY. Проверять complete, next_cursor, coverage и truncated; пустой или неполный кеш не означает отсутствие расходов. Стоимость сообщений отличается от всех списаний со счёта. Валюты не смешиваются, суммы считаются Decimal. Тексты и персональные данные по умолчанию скрыты.

Настройки

Переменная

Назначение

SMSC_API_TOKEN

API-ключ SMSC; alias SMSC_API_KEY

SMSC_CURRENCY

Подтверждённая валюта аккаунта; без настройки unknown

SMSC_TIMEZONE

По умолчанию Europe/Moscow

SMSC_DATABASE

По умолчанию ~/.local/share/smsc-mcp/state.sqlite3

SMSC_HISTORY_CURRENCY_VERIFIED

По умолчанию false; подтвердить валюту поля cost перед накопленной загрузкой

SMSC_STORE_MESSAGE_TEXT

По умолчанию false; хранение текстов требует отдельного решения

SMSC_REDACTION_KEY

Необязательный прежний HMAC-секрет; иначе создаётся и сохраняется в SQLite

SMSC_SERVER

primary или backup; произвольный endpoint запрещён

SMSC_CONFIG_FILE

Необязательный приватный JSON вместо env; поддерживает прежние login/psw

refresh принимает только закрытые дни и проверенную валюту cost. Нет автоматической загрузки истории и расписаний. Изменение валюты, зоны или HMAC-ключа после загрузки блокируется до согласования данных.

Все экземпляры одного аккаунта должны использовать один SQLite файл: в нём общий rolling budget, CAS/checkpoints и leases. Лимит истории — 20 запросов/час с интервалом минимум 21 секунда; неудачные запросы не возвращают резерв. Другие потребители SMSC на других машинах требуют координации отдельно.

HTTP и Docker

Для HTTP задать MCP_TOKEN длиной от 32 символов:

uv run --locked --env-file .env smsc-mcp --transport http --port 18092

URL: http://127.0.0.1:18092/mcp/, Authorization: Bearer <MCP_TOKEN>. Сервер слушает loopback; доступ извне требует приватного транспорта/HTTPS.

docker build -t smsc-mcp .
docker run --rm -i --env-file .env -v smsc-state:/state smsc-mcp

Контейнер работает UID 1000. Том /state нужно сохранять между запусками: бюджет, checkpoints и HMAC-ключ не должны пропадать. Docker Desktop не требуется.

Перенос и разработка

Остановить процессы и перенести checkout, приватный env и SQLite файл. Для живого backup использовать штатный SQLite backup API. База содержит финансовые данные и HMAC-секрет: файл 0600, каталог 0700, вне Git. Нет зависимости от Personal Context, Windmill, PostgreSQL или другого MCP.

uv sync --locked
uv run ruff check src tests
uv run python -m unittest discover -b -s tests
uv build

Передача коллегам и проверка · MIT

Available Tools

5 tools
smsc_analyticsSmsc AnalyticsA
Read-onlyIdempotent

Analyze accumulated local history without loading API credentials. Operations: coverage, summary, breakdown, messages, repeats, snapshots, reconcile. Check coverage/truncated; empty or partial cache is not zero spending.

Inputs: end (required), start (required), operation (required), limit, +4 more. Returns: object

smsc_cost_reportSmsc Cost ReportC
Read-only

Analyze one live history page in its reported currency/timezone. Check complete and next_cursor; partial pages are not period totals. Message costs differ from all account charges.

Inputs: end (required), start (required), prev_id, max_pages, +1 more. Returns: object

smsc_historySmsc HistoryA
Read-only

Read one outgoing-history page, dates DD.MM.YYYY. Follow next_cursor as prev_id until complete; this does not prove archive retention. Personal data/text hidden by default.

Inputs: end (required), start (required), email, phone, +6 more. Returns: object

smsc_readSmsc ReadC

Discover allowed SMSC reads without credentials using catalog. Other reads save redacted local snapshots. No sending, payments or account changes.

Inputs: operation, parameters, include_text, include_personal_data. Returns: object

smsc_refreshSmsc RefreshB

Explicitly ingest one page into private SQLite, retaining a checkpoint. Only closed days, verified currency and stable redaction key are accepted. Never changes SMSC or schedules work.

Inputs: end (required), start (required), restart. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 5 tools

    Disambiguation4/5

    smsc_history and smsc_cost_report both operate on a live history page, and smsc_read is a broad catalog/discovery tool, but the descriptions clarify live vs local and read vs analyze/ingest. Boundaries are mostly distinct with only minor overlap.

    Naming Consistency3/5

    All names use the smsc_ prefix and snake_case, which is readable and predictable. However, suffixes mix verbs (read, refresh) and nouns (history, cost_report, analytics), so there is no consistent verb_noun pattern.

    Tool Count5/5

    Five tools are well-scoped for a read-only SMS history/cost analytics server. Each tool covers a distinct stage: discovery, retrieval, reporting, ingestion, and analysis.

    Completeness4/5

    The core read-only workflow is covered: catalog discovery, paged history retrieval, cost reporting, local ingestion, and analytics with coverage/reconcile operations. Minor gaps around cache maintenance/reset and explicit checkpoint inspection limit it slightly.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables local querying of WhatsApp message history via SQLite, with profile separation, media transcription, and operational summaries.
      1
      MIT
    • F
      license
      A
      quality
      C
      maintenance
      Enables read-only access to your own WhatsApp history and attachments via the Model Context Protocol, allowing AI assistants to enumerate chats, page history deterministically, and retrieve approved attachment bytes.
      7
      -
    • F
      license
      Not graded
      quality
      B
      maintenance
      Enables AI clients to read and search macOS Messages history through a read-only MCP interface.
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides read-only access to Signal Desktop message history, enabling listing conversations, retrieving messages, and searching messages through MCP tools.
      1
      MIT