Skip to main content

Unofficial async SDK for observed SberBank Online web endpoints

Project description

SBER MCP

sber-mcp

Неофициальный MCP-сервер и async SDK для СберБанк Онлайн: вход, чтение продуктов и операций, перевод между своими продуктами — напрямую, client ↔ Сбербанк.

MIT Python 3.11+ MCP server CI

Документация: RU · EN · 中文

Неофициальный проект. Не связан с ПАО Сбербанк. Использование может нарушать условия сервиса и привести к блокировке аккаунта; работает с реальными деньгами и учётными данными. Никаких гарантий и никакой ответственности — DISCLAIMER.md · LICENSE.

Агент отвечает на вопрос пользователя, вызвав инструмент MCP:

Агент отвечает через MCP

Что это

Один пакет — два равноправных способа использования; оба работают прямыми HTTP-запросами, без Chrome, WebDriver и HAR:

  • MCP-сервер — дайте агенту (Claude, Codex, Cursor) доступ к СберБанк Онлайн: чтение продуктов и операций, переводы между своими продуктами с явным подтверждением человеком. Быстрый старт и подключение — ниже.

  • Async SDK / CLI — те же возможности прямо в вашем Python-коде или из терминала, без агента и без MCP (ставится только с certifi+curl-cffi). См. «Использовать как SDK» и справочник docs/SDK.ru.md · SDK (EN).

  • Прямо client ↔ Сбербанк. Никаких сторонних сервисов, прокси или облаков в цепочке — трафик идёт с вашей машины напрямую на сервера Сбербанка. Данные не проходят через инфраструктуру проекта, потому что её нет.

  • Секреты никогда не проходят через агента. Ни один инструмент не принимает и не возвращает логин, пароль, PIN, OTP, deviceprint, cookie или токен. Разовые секреты человек записывает в файл 0600, сервер читает его и удаляет до сетевого вызова. Подробно — док MCP §1.

  • Агент не управляет сессиями. Логин один раз — дальше sber_products() и прочее без session_id; активную сессию держит сервер.

  • Переводы под контролем человека. prepare рассчитывает, confirm исполняет только после явного «да»; токен прожигается до сети, повтор не отправляет деньги дважды.

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

1. Установка (команда sber-unofficial-mcp):

uv tool install sber-unofficial-mcp     # или: pipx install sber-unofficial-mcp

2. Вход одной командой. Интерактивно (скрытым вводом) спросит логин, пароль, SMS-код и новый PIN, сам сгенерирует device-отпечаток, сохранит профиль в 0600. Ни кук, ни HAR, ни ручного редактирования файлов:

sber-unofficial-mcp login
sber-unofficial-mcp status      # проверить, что профиль сохранён

3. Подключите к агенту (см. ниже). Дальше сервер входит сам по сохранённому профилю.

sber_transfer_confirm двигает реальные деньги. Не добавляйте её в авто-разрешения.

Подключение агента

Claude Code
claude mcp add sber -- sber-unofficial-mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "sber": { "command": "sber-unofficial-mcp" }
  }
}
Codex~/.codex/config.toml
[mcp_servers.sber]
command = "sber-unofficial-mcp"
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "sber": { "command": "sber-unofficial-mcp" }
  }
}

Как это выглядит

Вход одной командой

Статус профиля

Инструменты

14 инструментов: sber_setup_status, sber_auth_start/continue/resend_otp, sber_session_info/close, sber_products, sber_operations, sber_operations_page, sber_card_rename, sber_transfer_start/prepare/confirm, sber_transfer_resolve_uncertain. Полный справочник, конверт результата и next_action, runbook для агента — в документации MCP.

Использовать как SDK или CLI (без агента)

MCP-сервер — тонкая обёртка над sber_unofficial, самостоятельным async SDK (SRP-логин, RSA-OAEP шифрование PIN, двухфазный перевод, PIN-релогин без браузера). SDK не тянет зависимости MCP — ставится с одним certifi+curl-cffi:

pip install sber-unofficial-sdk         # чистый SDK (без mcp/rich/questionary)

Пайплайн целиком в коде — без CLI и без браузера. Deviceprint генерируется самим SDK. Шаг 1 — первый вход, один раз (полный пример: examples/first_login.py):

from sber_unofficial import (AsyncPrimaryAuth, PinOtpRequired,
                             generate_deviceprint, generate_antifraud_deviceprint)

dp = generate_deviceprint()                                    # без браузера
auth = AsyncPrimaryAuth.new(deviceprint=dp,
                            antifraud_deviceprint=generate_antifraud_deviceprint(dp))
async with auth:
    try:
        bundle = await auth.login(login, password, store_login=True)
    except PinOtpRequired:                                     # Сбер прислал SMS
        bundle = await auth.confirm_otp(sms_code)
    if bundle is None:                                         # нужен новый PIN
        bundle = await auth.create_pin("12345")
    bundle.save("profile.json")                                # атомарно, mode 0600

Шаг 2 — дальше просто читаете по PIN (пример: examples/quickstart.py):

from sber_unofficial import AsyncSberClient

async with await AsyncSberClient.from_pin_profile("profile.json", pin="12345") as sber:
    portfolio = await sber.portfolio()                         # карты + счета одним запросом
    for card in portfolio.cards:
        print(card.name, card.last4, card.balance)             # Money(amount, currency)
    for op in await sber.operations.list(limit=20):
        print(op.date, op.amount, op.description)

Опционально — если удобнее терминал, у SDK есть свой CLI без агента: sber-unofficial enrollsber-unofficial balances/operations (см. docs/SDK.ru.md).

Полный справочник (конструкторы, авторизация, сущности, ошибки, переводы, CLI) — docs/SDK.ru.md · SDK (EN); детали авторизации и доказательства — AUTHENTICATION.md.

Безопасность и вклад

  • Модель защиты секретов и что именно её обеспечивает — док MCP §1 и §8.
  • Нашли уязвимость — SECURITY.md (не через публичный issue).
  • PR и issue приветствуются — CONTRIBUTING.md. Главное правило: никогда не коммитить реальные креды, куки, deviceprint, сессии, HAR и балансы.

Лицензия

MIT. Полный отказ от ответственности — DISCLAIMER.md. Неофициальный проект, не связан с ПАО Сбербанк; вся ответственность за использование — на пользователе.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sber_unofficial_sdk-0.6.1.tar.gz (166.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sber_unofficial_sdk-0.6.1-py3-none-any.whl (67.6 kB view details)

Uploaded Python 3

File details

Details for the file sber_unofficial_sdk-0.6.1.tar.gz.

File metadata

  • Download URL: sber_unofficial_sdk-0.6.1.tar.gz
  • Upload date:
  • Size: 166.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for sber_unofficial_sdk-0.6.1.tar.gz
Algorithm Hash digest
SHA256 9f7506baa1ddf7ad801cc311e69ef69d997e14d5c12b282deb8c3092928f9392
MD5 52a76d984001fd71edf2f0423aa7d0f5
BLAKE2b-256 71fa99d72da21bb018ed80c99f212b7c6b8f404f16e50ecfcdb367507c0e830d

See more details on using hashes here.

Provenance

The following attestation bundles were made for sber_unofficial_sdk-0.6.1.tar.gz:

Publisher: release.yml on ex3lite/sber-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sber_unofficial_sdk-0.6.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sber_unofficial_sdk-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e1a39c84d212c18e8d4ce2c590d8d4f2476e824795cf4ef20e3e7c223eb8ed8d
MD5 f56933b5e83f995d9ce720f8ab3d3537
BLAKE2b-256 d669379875f33571feed33c935d6506cd34b6532421e433a9a3e9bd2dea7e794

See more details on using hashes here.

Provenance

The following attestation bundles were made for sber_unofficial_sdk-0.6.1-py3-none-any.whl:

Publisher: release.yml on ex3lite/sber-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page