sber-mcp
Unofficial MCP server for SberBank Online, enabling agents to read banking products and operations and perform transfers between own accounts directly via HTTP, with human confirmation for transfers. Also provides an async SDK and CLI for use without an agent.
README
<!-- Generated by tools/render_brand.py from docs/brand/readme.ru.md — do not edit this file; edit the template and re-run the script. --> <p align="center"><img src="docs/img/ru/banner.svg" alt="SBER-MCP — неофициальный MCP-сервер и async SDK для СберБанк Онлайн" width="900"></p>
<p align="center"> Неофициальный <b>MCP-сервер</b> и async <b>SDK</b> для СберБанк Онлайн: вход, чтение продуктов и операций, перевод между своими продуктами — <b>напрямую, client ↔ Сбербанк</b>. </p>
<p align="center"> <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-1B7A2C.svg" alt="MIT"></a> <img src="https://img.shields.io/badge/python-3.11%2B-2C4E6B.svg" alt="Python 3.11+"> <a href="https://pypi.org/project/sber-unofficial-mcp/"><img src="https://img.shields.io/pypi/v/sber-unofficial-mcp?label=mcp&color=21A038" alt="PyPI · sber-unofficial-mcp"></a> <a href="https://pypi.org/project/sber-unofficial-sdk/"><img src="https://img.shields.io/pypi/v/sber-unofficial-sdk?label=sdk&color=21A038" alt="PyPI · sber-unofficial-sdk"></a> <a href="https://github.com/ex3lite/sber-mcp/actions/workflows/ci.yml"><img src="https://github.com/ex3lite/sber-mcp/actions/workflows/ci.yml/badge.svg" alt="CI"></a> </p>
<p align="center"> <b>Русский</b> · <a href="README.en.md">English</a> · <a href="README.zh.md">中文</a> · <a href="docs/mcp/README.ru.md">документация MCP</a> · <a href="docs/SDK.ru.md">справочник SDK</a> </p>
Неофициальный проект. Не связан с ПАО Сбербанк. Использование может нарушать условия сервиса и привести к блокировке аккаунта; работает с реальными деньгами и учётными данными. Никаких гарантий и никакой ответственности — DISCLAIMER.md · LICENSE.
Вход одной командой
<p align="center"><img src="docs/img/ru/hero-login.svg" alt="sber-unofficial-mcp login — интерактивный вход, профиль сохраняется с правами 0600" width="900"></p>
<p align="center"><sub>Интерактивно спросит логин, пароль, SMS-код и новый PIN, сам сгенерирует device-отпечаток и сохранит профиль в <code>0600</code>. Ни кук, ни HAR, ни ручного редактирования файлов.</sub></p>
Что это
Один проект — два равноправных способа использования; оба работают прямыми HTTP-запросами, без Chrome, WebDriver и HAR.
SBER-MCP — агент (Claude, Codex, Cursor) читает продукты и операции и делает переводы между вашими продуктами с явным подтверждением человеком.<br><br>uv tool install sber-unofficial-mcp |
SBER-SDK — те же возможности в вашем Python-коде или из терминала, без агента и без MCP. Ставится с одним certifi+curl-cffi.<br><br>uv add sber-unofficial-sdk |
Где живут секреты
<p align="center"><img src="docs/img/ru/flow.svg" alt="Поток данных: агент → MCP-сервер на вашей машине → Сбербанк" width="900"></p>
- Прямо 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:
sber-unofficial-mcp login
sber-unofficial-mcp status # проверить, что профиль сохранён
3. Подключите к агенту. Дальше сервер входит сам по сохранённому профилю.
<details open> <summary><b>Claude Code</b></summary>
claude mcp add sber -- sber-unofficial-mcp
</details>
<details> <summary><b>Claude Desktop</b> — <code>claude_desktop_config.json</code></summary>
{
"mcpServers": {
"sber": { "command": "sber-unofficial-mcp" }
}
}
</details>
<details> <summary><b>Codex</b> — <code>~/.codex/config.toml</code></summary>
[mcp_servers.sber]
command = "sber-unofficial-mcp"
</details>
<details> <summary><b>Cursor</b> — <code>~/.cursor/mcp.json</code></summary>
{
"mcpServers": {
"sber": { "command": "sber-unofficial-mcp" }
}
}
</details>
sber_transfer_confirmдвигает реальные деньги. Не добавляйте её в авто-разрешения.
Как это выглядит у агента
<p align="center"><img src="docs/img/ru/agent-chat.svg" alt="Агент отвечает, вызвав sber_products()" width="760"></p>
Инструменты
<p align="center"><img src="docs/img/ru/tools.svg" alt="14 инструментов MCP по группам" width="900"></p>
14 инструментов: sber_setup_status, sber_auth_start/continue, sber_auth_resend_otp, sber_session_info/close, sber_products/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:
uv add sber-unofficial-sdk # или: pip install sber-unofficial-sdk
Пайплайн целиком в коде — без 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 enroll → sber-unofficial balances/operations (см. docs/SDK.ru.md).
Полный справочник (конструкторы, авторизация, сущности, ошибки, переводы, CLI) — docs/SDK.ru.md · SDK (EN); детали авторизации и доказательства — AUTHENTICATION.md.
Проверить, что всё на месте
<p align="center"><img src="docs/img/ru/status.svg" alt="sber-unofficial-mcp status" width="560"></p>
- Модель защиты секретов и что именно её обеспечивает — док MCP §1 и §8.
- Нашли уязвимость — SECURITY.md (не через публичный issue).
- PR и issue приветствуются — CONTRIBUTING.md. Главное правило: никогда не коммитить реальные креды, куки, deviceprint, сессии, HAR и балансы.
Контрибьюторы
<p align="center"><img src="docs/img/ru/contributors.svg" alt="Контрибьюторы по коммитам" width="900"></p>
<p align="center"><sub>По коммитам — из docs/data/contributors.json, обновляется в CI.</sub></p>
Лицензия
MIT. Полный отказ от ответственности — DISCLAIMER.md. Неофициальный проект, не связан с ПАО Сбербанк; вся ответственность за использование — на пользователе.
<p align="center"><sub>Графика и README генерируются: <code>python tools/render_brand.py</code> → <code>docs/img/</code> · версия 0.6.3</sub></p>
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.