Skip to main content
Glama
plasm-one

tinvest-mcp

by plasm-one

WARNING

Это неофициальная программа, и она умеет работать с реальными деньгами. Проект не связан с Т-Банком и не поддерживается им. Ничто здесь не является инвестиционной рекомендацией. У любого MCP-сервера с доступом к брокерскому счёту есть риски, которые код не может убрать полностью, — например, prompt injection и ошибки самой модели. Прежде чем подключать боевой токен, прочитайте DISCLAIMER.md и docs/security.ru.md. По умолчанию сервер работает в песочнице, а реальная торговля включается только двумя отдельными настройками. Не трогайте их, пока не прочитаете оба документа.


Что это

tinvest-mcp — MCP-сервер (Model Context Protocol) для Т-Инвестиций (бывшие Тинькофф Инвестиции). Он запускается на вашем компьютере и даёт ИИ-ассистенту 35 инструментов для работы с брокерским счётом через T-Invest API. Ассистент может посмотреть портфель, отобрать бумаги из каталога, посчитать доходность и риск, составить план ребалансировки, а если вы это явно разрешите — выставить лимитную заявку.

Проще говоря, это способ подключить ИИ к Т-Инвестициям так, чтобы он помогал разбираться с портфелем, но не мог выйти за рамки, которые задали вы.

Главный принцип: ИИ здесь аналитик, а не трейдер. Смотреть можно всё. Любое действие с деньгами сначала превращается в черновик заявки, который модель не может пропустить. Цена в нём сверяется со свежей котировкой, а сумма проверяется по лимитам из вашего конфига — не из промпта.

Токен уходит только к брокеру, который его выдал. Он не хранится в настройках редактора, не синхронизируется между устройствами и не передаётся третьим лицам, в том числе нам. Зачем так сделано и от каких рисков это не защищает — в docs/security.ru.md.

Related MCP server: T-Invest MCP Server

Зачем подключать ИИ к брокерскому счёту

Купить или продать бумагу несложно — для этого у брокера есть приложение. Сложно другое: понять, что у тебя на самом деле в портфеле, сколько это стоит в комиссиях и налогах, что пора поменять, раз изменились обстоятельства, и чего нельзя делать ни при каких доводах.

С первыми тремя вопросами языковая модель справляется хорошо. С последним — ненадёжно, а деньги теряют как раз на нём. Поэтому обязанности разделены. Модель получает полный доступ к данным и отвечает за анализ и объяснения. Всё, что должно соблюдаться всегда, записано в коде и в вашем файле настроек, и никакой убедительный аргумент модели этого не изменит.

Поэтому MCP здесь и подходит. Идея не в том, чтобы «переписываться с брокером». Модель видит портфель целиком, разбирает его с учётом ваших целей и предлагает конкретный шаг с готовым расчётом. Решение остаётся за вами, и его легко проверить. А рамки, за которые модели нельзя выходить, она не может ни увидеть, ни поменять.

Именно так должно выглядеть управление капиталом с помощью ИИ, прежде чем ему можно доверить настоящий счёт: агент, который не торгует сам, а думает и советует — в рамках, которые не обсуждаются.

T-Invest MCP от Т-Банка или tinvest-mcp: что выбрать

У Т-Банка есть официальный MCP-сервер Т-Инвестиций — T-Invest MCP. Он работает на серверах банка. Это хороший продукт, и если вам важна официальная поддержка, выбирайте его. tinvest-mcp — неофициальная альтернатива, которая работает локально. У каждого варианта свои плюсы:

tinvest-mcp

T-Invest MCP (Т-Банк)

Где работает

на вашем компьютере

на серверах Т-Банка

Где хранится токен

в .env, его читает только локальный процесс

в настройках MCP-клиента, отправляется с каждым запросом

Транспорт

stdio, без открытых портов

streamable HTTP

Как выставляется заявка

черновик → сверка со свежей котировкой → отдельное подтверждение

сразу при вызове инструмента

Лимиты риска

ваши, в config.toml

на стороне брокера, настроить нельзя

Песочница

есть

нет

Claude Desktop

работает (stdio)

не поддерживается

Новости и инвестидеи рядом с торговлей

нет, намеренно

есть: новости, настроения рынка, идеи

Поддержка

сообщество, по мере сил

официальная

Установка

Python, около 10 минут

одна команда

Если коротко: официальный сервер проще поставить, и у него есть поддержка. tinvest-mcp хранит токен у вас, позволяет задать свои жёсткие лимиты и не смешивает непроверенный текст из интернета с инструментами для сделок. Подробное сравнение: T-Invest MCP и tinvest-mcp.

Возможности

Анализ (только чтение, работает всегда)

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

  • Подбор бумаг — отдельный инструмент для каждого класса активов, чтобы в выдаче были только важные для него поля: list_bonds, list_shares, list_etfs. Фильтры по риску, сроку погашения, дюрации, сектору, дивидендам и минимальной ликвидности.

  • По отдельной бумаге: историческая доходность, годовая волатильность, максимальная просадка; для облигаций — доходность к погашению, текущая доходность и график купонов; для акций — дивидендная доходность и мультипликаторы (P/E, EV/EBITDA, ROE, маржинальность, долг); консенсус аналитиков; для фондов — комиссии и отслеживаемый индекс.

  • Рыночные данные: bid/ask/last, спред, возраст котировки и три варианта лимитной цены — «подождать», «сбалансированно», «быстро». Цена берётся из стакана, а не придумывается моделью.

  • История операций: сделки, комиссии, купоны, дивиденды, удержанный налог.

Планирование (только чтение)

  • Целевая структура портфеля по профилю риска и горизонту. Её задаёт таблица правил в коде, а не мнение модели.

  • План ребалансировки всего портфеля сразу: сначала продажи, потом покупки. По каждой сделке учтены комиссия и НКД, налог считается по FIFO с учётом льготы на долгосрочное владение (ЛДВ, 3 года). В конце — вывод WORTH_IT / NOT_WORTH_IT: если издержки съедают выгоду, сервер прямо посоветует ничего не делать.

Сделки (по умолчанию выключены, только с подтверждением)

  • create_order_proposal — черновик заявки с проверкой риска. Сам по себе ничего не выставляет.

  • post_order — отправляет черновик, если он ещё действителен, и перед этим заново проверяет риск по свежей котировке. Только лимитные заявки. Повторный вызов не создаёт дубль.

  • Для плана из нескольких сделок подтверждений два: сначала весь план, затем каждая сделка по отдельности.

Все инструменты с аргументами и форматом ответа: docs/tools.md.

Что понадобится

  • Python 3.12+

  • MCP-клиент: Claude Code, Claude Desktop, Cursor, VS Code (режим агента), Gemini CLI, Qwen Code или любой другой, который поддерживает MCP через stdio.

  • Токен T-Invest API. Он бесплатный и выпускается в личном кабинете брокера — как это сделать, описано ниже.

  • Желательно uv, но подойдёт и обычный pip.

Установка

1. Скачайте код и установите зависимости

git clone https://github.com/plasm-one/tinvest-mcp.git
cd tinvest-mcp
uv sync                      # или: python3 -m venv .venv && .venv/bin/pip install -e .

gRPC SDK (t-tech-investments) скачивается с индекса, который иногда отдаёт повреждённые wheel-файлы. Тогда uv sync падает с ошибкой хеша или архива. На этот случай есть два запасных варианта, оба работают из коробки:

  1. Старый пакет. tinvest_mcp.sdk сначала пробует t_tech.invest, а если его нет — tinkoff.invest. Поэтому можно просто поставить прежний пакет:

    uv pip install tinkoff-investments
  2. Локальный wheel. Положите проверенный wheel-файл в vendor/ и раскомментируйте блок [tool.uv.sources] в конце pyproject.toml.

Какой пакет в итоге загрузился, видно в поле sdk_package инструмента status. Подробнее: docs/installation.md.

2. Выпустите токен API

В Т-Инвестициях: Настройки → Токены API → Создать токен (в браузере: https://www.tbank.ru/invest/settings/api/ · документация: https://developer.tbank.ru/invest/intro/intro/token).

При создании токена выбираются его права. Это самое важное решение для безопасности во всей настройке:

Права

Для чего

Что выбрать

Только чтение

всё, что умеет сервер, кроме заявок

начните с этого и, скорее всего, на этом и остановитесь

Полный доступ

реальные заявки

⚠️ только если вы правда хотите, чтобы агент торговал

+ переводы денег

перевод денег между счетами

никогда: серверу это не нужно, а при утечке файла с таким токеном можно вывести деньги

IMPORTANT

Токен показываетсятолько один раз, восстановить его нельзя — сохраните сразу. Если есть сомнения, что токен в безопасности, отзовите его на том же экране и выпустите новый. Это бесплатно и срабатывает мгновенно.

Самый безопасный вариант для реального счёта — два разных токена: один только для чтения, для анализа, и второй с полным доступом, который вы не добавляете в настройки, пока действительно не решите торговать. При запуске сервер проверяет, что это не один и тот же токен.

3. Передайте токен серверу

Токены хранятся в файле .env и никогда в настройках MCP-клиента: такие файлы часто попадают в git или синхронизируются между устройствами.

cp .env.example .env
cp config.toml.example config.toml
chmod 600 .env                # доступ только для владельца — не пропускайте

Откройте .env и впишите токен. Для начала — токен песочницы (рекомендуем):

TINVEST_SANDBOX_TOKEN=t.ваш_токен

Больше секретов нет. Всё остальное — режим работы, лимиты, транспорт — не секретно и задаётся в config.toml.

MCP-клиент может запустить сервер из любой папки. Поэтому сервер ищет config.toml и .env сначала в текущей папке и выше, а потом в ~/.config/tinvest-mcp/. Если положить файлы туда, сервер найдёт их откуда угодно, а секреты не окажутся ни в одном репозитории:

mkdir -p ~/.config/tinvest-mcp
cp .env.example ~/.config/tinvest-mcp/.env
cp config.toml.example ~/.config/tinvest-mcp/config.toml
chmod 600 ~/.config/tinvest-mcp/.env

4. Проверьте настройку до подключения клиента

uv run tinvest-mcp-doctor       # или: .venv/bin/tinvest-mcp-doctor

Команда покажет, какие файлы настроек нашлись, какие токены заданы (в скрытом виде), и выполнит стартовые проверки безопасности. Сервер при этом не запускается, порты не открываются, заявки не выставляются. В свежей песочнице вывод будет примерно таким:

Resolved files
------------------------------------------------------------
config.toml:          /Users/you/.config/tinvest-mcp/config.toml
.env:                 /Users/you/.config/tinvest-mcp/.env
state directory:      /Users/you/.config/tinvest-mcp
audit journal:        /Users/you/.config/tinvest-mcp/audit.jsonl

Mode
------------------------------------------------------------
mode:                 sandbox
real trading:         disabled
transport:            stdio
SDK package:          t_tech.invest

Tokens (masked)
------------------------------------------------------------
sandbox:              present (t.a***xyz)
read-only (prod):     not set
full access (prod):   not set

Startup security checks
------------------------------------------------------------
[ok]   real_trading_default_off: real_trading_enabled=False mode=sandbox
[ok]   token_present: sandbox token configured
[ok]   limits_configured: max_order_rub=500000 max_daily=5000000

Особенно внимательно посмотрите на блок «Resolved files». Если сервер не нашёл config.toml, ваши лимиты не действуют.

5. Подключите клиент

Любому клиенту нужен абсолютный путь к исполняемому файлу tinvest-mcp в виртуальном окружении. Узнать его можно командой readlink -f .venv/bin/tinvest-mcp (или uv run which tinvest-mcp).

claude mcp add tinvest -- /абсолютный/путь/tinvest-mcp/.venv/bin/tinvest-mcp

Или вручную в .mcp.json (для проекта) либо ~/.claude.json (для пользователя):

{
  "mcpServers": {
    "tinvest": {
      "command": "/абсолютный/путь/tinvest-mcp/.venv/bin/tinvest-mcp"
    }
  }
}

Отредактируйте claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\) и перезапустите приложение:

{
  "mcpServers": {
    "tinvest": {
      "command": "/абсолютный/путь/tinvest-mcp/.venv/bin/tinvest-mcp"
    }
  }
}

Claude Desktop работает через stdio, а этот сервер по умолчанию использует именно его. Поэтому, в отличие от облачных серверов на streamable HTTP, здесь всё подключается.

.cursor/mcp.json (для проекта) или ~/.cursor/mcp.json (для всех проектов):

{
  "mcpServers": {
    "tinvest": {
      "command": "/абсолютный/путь/tinvest-mcp/.venv/bin/tinvest-mcp"
    }
  }
}

.vscode/mcp.json. Обратите внимание: в VS Code ключ называется servers, а не mcpServers.

{
  "servers": {
    "tinvest": {
      "type": "stdio",
      "command": "/абсолютный/путь/tinvest-mcp/.venv/bin/tinvest-mcp"
    }
  }
}

Токен сюда не пишите: папку .vscode/ часто коммитят. Сервер берёт токен из .env как раз для того, чтобы в настройках редактора не было секретов.

Если файлы лежат там, где сервер их сам не найдёт, укажите пути явно:

{
  "mcpServers": {
    "tinvest": {
      "command": "/абсолютный/путь/.venv/bin/tinvest-mcp",
      "env": {
        "TINVEST_MCP_CONFIG": "/Users/you/.config/tinvest-mcp/config.toml",
        "TINVEST_MCP_ENV_FILE": "/Users/you/.config/tinvest-mcp/.env"
      }
    }
  }
}

Здесь только пути, а не секреты, так что такой файл можно коммитить.

6. Первый запуск в песочнице

Напишите ассистенту:

Проверь статус сервера T-Invest, открой счёт в песочнице, пополни его на 100 000 ₽ виртуальных денег и покажи портфель.

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

Тот же сценарий можно запустить скриптом:

uv run python -m tinvest_mcp.scripts.sandbox_smoke

Работа с реальным счётом

Переходите осознанно, по шагам и только после docs/security.ru.md.

Только анализ — рекомендуемый вариант. Положите в .env токен только для чтения, оставьте TINVEST_FULLACCESS_TOKEN пустым и укажите:

[tinvest]
mode = "prod"
enable_real_trading = false

Теперь агент видит ваш настоящий портфель и реальные цены, но не может выставить заявку. Дело не в запрете, а в том, что у сервера просто нет токена с правом на сделки. Большинству этого достаточно.

Реальная торговля — только если вы точно этого хотите. Нужно выполнить все четыре условия:

  1. mode = "prod" в config.toml

  2. enable_real_trading = true в config.toml

  3. TINVEST_FULLACCESS_TOKEN задан в .env — и это другой токен, не тот, что только для чтения

  4. Лимиты в config.toml проверены и выставлены на суммы, потерю которых вы готовы пережить. Уберите значения, которые увеличивали для песочницы. По умолчанию для реального счёта — 1 500 ₽ на заявку и 3 000 ₽ оборота в день: специально мало, чтобы первая ошибка обошлась дёшево.

Безопасность

Коротко:

  • Токен остаётся у вас. Его читает из .env один процесс и отправляет только в API Т-Банка по TLS. Больше его не видит никто, включая нас.

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

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

  • Жёсткие лимиты заданы в config.toml, а не в промпте: сумма заявки, дневной оборот, доля позиции, отклонение цены, возраст котировки. Только лимитные заявки, без плеча и шортов, при желании — строгий список разрешённых бумаг.

  • Повторная проверка при отправке. Черновик, который устарел или цена в котором уже не совпадает со стаканом, выставить нельзя.

  • Никакого непроверенного текста. Нет новостей, оценок настроений и доступа в интернет — главных источников prompt injection среди инструментов просто нет.

  • Журнал действий, в который можно только дописывать: в нём фиксируется каждое обращение наружу.

  • Только локальная работа по умолчанию. Сервер не открывает сетевой порт, пока вы сами этого не настроите.

Не менее важно, от чего такая схема не защищает. В MCP сервер не знает, кто именно вызвал инструмент — модель или человек, поэтому правило «агент не должен сам вызывать post_order» — это инструкция в промпте, а не техническая блокировка. Если взломан компьютер, взломан и счёт. А для gRPC-соединений этого процесса добавлено доверие к российскому национальному удостоверяющему центру. Каждый пункт и то, что действительно помогает, разобраны в docs/security.ru.md.

Нашли уязвимость? Напишите по инструкции из SECURITY.md, а не в публичный issue.

Документация

docs/installation.md

Подробная установка, выпуск токена, все клиенты, решение проблем

docs/security.ru.md

Модель угроз, какие проверки где выполняются, чеклист защиты

docs/configuration.md

Все параметры config.toml и переменные окружения

docs/tools.md

Все 35 инструментов: аргументы, ответы, какие только читают данные

docs/architecture.md

Устройство сервера, подтверждения сделок, проверки риска

docs/comparison.ru.md

Честное сравнение с официальным T-Invest MCP от Т-Банка

DISCLAIMER.md

Неофициальный статус, риски MCP, отказ от инвестиционных рекомендаций

Разработка

uv sync --all-extras          # зависимости для разработки
uv run pytest                 # 213 тестов, без сети и без токена
uv run ruff check .
uv run ruff format .

Тесты полностью работают без сети: все обращения к брокеру идут через заглушку, а журнал пишется во временный файл. Поэтому pytest можно спокойно запускать даже на компьютере, где в окружении лежат боевые токены.

src/tinvest_mcp/
  server.py          регистрация MCP-инструментов и инструкция для агента
  tools.py           сигнатуры инструментов и проверка входных данных
  services.py        бизнес-логика: анализ, черновики заявок, планы, исполнение
  adapter.py         единственный модуль, который обращается к SDK брокера
  risk_engine.py     все жёсткие проверки, по функции на правило
  proposals.py       хранилище черновиков заявок со сроком жизни и защитой от дублей
  trade_plan.py      планы из нескольких сделок и два шага подтверждения
  allocation.py      таблица правил для целевой структуры портфеля
  schemas.py         pydantic-модели — формат данных, который видит модель
  journal.py         журнал действий (только дописывание)
  config/            поиск config.toml и .env, итоговые настройки
  tls.py             корневые сертификаты для gRPC-соединения с Т-Банком

Будем рады вашим улучшениям — см. CONTRIBUTING.md. Изменения в risk_engine.py, proposals.py и trade_plan.py принимаются только с тестами: именно эти модули не дают деньгам уйти по ошибке.

О Plasm

В Plasm мы строим автономные финансы. Идея в том, что финансы должны сами думать наперёд, подстраиваться под обстоятельства и действовать, а не быть набором разрозненных продуктов, которые приходится сводить вручную. Подробнее о нашем видении: The Future of Finance →

В нём описаны четыре агента, которые работают вместе. Этот сервер — рабочая и открытая для проверки реализация той же модели на примере одного реального брокера:

Агент Plasm

Как это устроено здесь

Планирование — найти варианты для капитала

allocation.py — целевая структура по таблице правил; trade_plan.py — просчитанный набор сделок с выводом, стоит ли их делать

Риск — сберечь резервы

risk_engine.py — лимиты на заявку, проверки цены, ликвидности и торговой сессии

Контроль — проверить ограничения

личные правила: эмитент, сектор, минимальный остаток денег, валютная доля — проверяются по портфелю после сделки

Действие — исполнить с вашего согласия

черновик → сверка со свежей котировкой → отдельное подтверждение; без вас ничего не происходит

«Правила задаёте вы. Агенты им следуют». Здесь правила — это буквально config.toml, единственное, что модель не может изменить.

И раз возможности не должны зависеть от размера счёта, проект распространяется под лицензией MIT, работает на обычном ноутбуке и требует только бесплатный токен API брокера.

Тоже работаете в этой области? Будем рады пообщаться — alex@plasm.one.

Лицензия

MIT © 2026 Plasm


Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to interact with Trading 212 investment accounts for portfolio tracking, account management, and real-time order execution. It supports managing investment pies, analyzing historical data, and monitoring market performance across multiple instrument types.
    23
    2
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables interaction with the T-Invest (Tinkoff Investments) API to manage investment portfolios, access market analytics, and retrieve technical analysis data. It supports executing trading operations, including placing and canceling market or stop orders, with optional confirmation workflows.
    25
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    Enables personal AI-driven portfolio analysis and management for Tinkoff Investments through natural language chat, providing risk assessment, goal tracking, and market-aware recommendations in read-only mode.
    19
    1
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables natural language interaction with your T-Invest brokerage account for portfolio analysis, dividend tracking, and optional trading with safety confirmations.
    20
    23 npm
    2
    Apache 2.0