T-Bank Invest MCP Server (read-only)
MCP-сервер для работы с инвестиционным портфелем Т-Банка (Тинькофф) через AI-ассистентов. Предоставляет только чтение — сервер не может совершать сделки, выводить средства или изменять настройки счёта.
Возможности
- Портфель и счета — просмотр счетов, позиций, доходности, маржинальных показателей
- История операций — сделки, дивиденды, купоны, налоги, комиссии с фильтрацией и пагинацией
- Поиск инструментов — по тикеру, названию, ISIN, FIGI; детальная информация по акциям, облигациям, ETF, валютам, фьючерсам
- Рыночные данные — свечи (OHLCV), стакан заявок, статус торгов, цены закрытия
- Аналитика — технический анализ (SMA, EMA, RSI, MACD, Bollinger Bands), фундаментальные показатели (P/E, EPS, ROE), консенсус-прогнозы аналитиков, а также
get_stock_snapshot— сводка по тикеру одним вызовом (фундаментал + изменение цены + консенсус) - Облигации — купонный календарь, НКД, события (амортизации, оферты)
- Дивиденды — история и предстоящие выплаты
Требования
- uv — запускает сервер одной командой: сам подбирает Python 3.11+ и ставит зависимости в изолированное окружение
- Токен T-Invest API — выпустить на tbank.ru/invest/settings/api
Какой токен выпускать
Выпускайте токен только для чтения (readonly). Сервер вызывает только методы чтения, права на сделки ему не нужны, а с таким токеном торговые поручения невозможны уже на стороне Т-Банка — это вторая линия защиты помимо кода сервера. Токен можно дополнительно ограничить одним счётом.
MCP-клиенты хранят токен в своей конфигурации открытым текстом — ещё одна причина не давать ему прав на сделки.
Подключение
Сервер опубликован на PyPI: клонировать репозиторий не нужно, uvx скачает и запустит его сам. Токен передаётся через переменную окружения TBANK_INVEST_TOKEN в конфигурации MCP-клиента.
Claude Code
claude mcp add t-bank-invest -e TBANK_INVEST_TOKEN=your_token_here -- uvx t-bank-invest-mcp-read-only
По умолчанию сервер подключается только к текущему проекту; чтобы он был доступен во всех проектах, добавьте --scope user. С --scope project конфигурация вместе с токеном записывается в .mcp.json в корне проекта — не коммитьте этот файл.
Claude Desktop
Добавьте сервер в claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\) и перезапустите приложение:
{
"mcpServers": {
"t-bank-invest": {
"command": "uvx",
"args": ["t-bank-invest-mcp-read-only"],
"env": {
"TBANK_INVEST_TOKEN": "your_token_here"
}
}
}
}
Если Claude Desktop не находит uvx, укажите в command полный путь к нему (его покажет which uvx).
Другие MCP-клиенты
Сервер работает по stdio. В любом клиенте укажите ту же команду, те же аргументы и переменную окружения, что в примере для Claude Desktop.
Сервер также есть в реестре MCP-серверов под именем io.github.Sicness/t-bank-invest-mcp-read-only.
Конкретная версия
uvx берёт последнюю версию с PyPI и обновляется сам. Чтобы закрепить версию, укажите её после имени — [email protected]; что менялось от версии к версии — в истории изменений.
Ещё не выпущенное состояние ветки main: uvx --from git+https://github.com/Sicness/t-bank-invest-mcp-read-only t-bank-invest-mcp-read-only.
Установка из исходников
Для разработки или если uv не подходит:
git clone https://github.com/Sicness/t-bank-invest-mcp-read-only.git
cd t-bank-invest-mcp-read-only
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[test]"
В конфигурации MCP-клиента тогда указывается полный путь к команде: /path/to/t-bank-invest-mcp-read-only/.venv/bin/t-bank-invest-mcp-read-only, без args.
Запуск напрямую
Сервер не загружает .env файл — переменную нужно экспортировать в shell:
export TBANK_INVEST_TOKEN=your_token_here
uvx t-bank-invest-mcp-read-only
Из установленного окружения то же самое делает команда t-bank-invest-mcp-read-only или python -m tbank_invest_mcp.
Доступные инструменты
Счета и пользователь
Портфель и позиции
Операции
Инструменты
Рыночные данные
Заявки
Списки инструментов
Справочники, кроме валютного, — выгрузки для скриптов: в контекст модели они не помещаются, клиент сохранит такой ответ в файл или отклонит его. Чтобы найти бумагу, используйте find_instrument.
Формат данных
Ответы рассчитаны на то, что их читает модель, поэтому сервер не пересылает ответ API как есть:
- Цены и суммы — обычные числа, а не пары
units/nano. Валюта указана один раз, в полеcurrencyтого же объекта; сумма в другой валюте записана как{"value": ..., "currency": ...}. - В списках позиций, операций и событий облигаций опущены нулевые и пустые поля. Отсутствие поля означает ноль, «нет» или пусто.
- Инструмент можно назвать как угодно: тикером, FIGI, ISIN или UID — в любом параметре, который принимает инструмент. Если под одним тикером торгуются разные бумаги (
T— это и Т-Технологии, и AT&T), сервер попросит уточнить в видеТИКЕР_КЛАСС, напримерT_TQBR. По названию ищетfind_instrument. - Даты — в UTC. Дата без времени в
to_dateвключает весь этот день.
Примеры запросов к ассистенту
- «Покажи мой портфель и общую доходность»
- «Какие дивиденды я получил за последний год?»
- «Найди облигации Газпрома и покажи купонный календарь»
- «Сравни P/E Сбера и ВТБ»
- «Дай сводку по SBER: фундаментал, динамика цены, консенсус аналитиков»
- «Построй RSI для AAPL за последние 3 месяца»
- «Какие у меня активные заявки?»