Skip to main content
Glama
Hamid-K

Avanza-MCP

by Hamid-K

Avanza-MCP

CLI-скрипт и TUI (текстовый интерфейс) для мониторинга портфеля Avanza, размещения обычных ордеров на покупку/продажу, управления стоп-лоссами, интеграции с MCP и бумажной торговли.

Учетные данные запрашиваются во время выполнения:

  • имя пользователя: отображается при вводе, если не передано через --username

  • пароль: скрыт

  • текущий код TOTP: скрыт

Альтернативно можно передать --onepassword-item ITEM и опционально --onepassword-vault VAULT для чтения имени пользователя, пароля и текущего кода TOTP из Avanza через CLI 1Password (op). В TUI есть соответствующий путь Login with 1Password. Инструмент не хранит эти секреты; op запросит у вас авторизацию доступа через локальное приложение 1Password.

Текущий код TOTP передается в avanza-api как totpToken — это имя поля, ожидаемое установленной версией библиотеки.

Настройка

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
chmod +x scripts/verify.sh .githooks/pre-commit .githooks/pre-push
git config core.hooksPath .githooks

Запуск полного набора тестов качества в любое время:

scripts/verify.sh

Команды

Консольные команды выводят читаемые человеком таблицы Rich и сводки, а не необработанные данные API.

Показать обзор счета:

python avanza_cli.py accounts

Показать сводку портфеля:

python avanza_cli.py portfolio summary

Показать подробные позиции портфеля:

python avanza_cli.py portfolio positions

Поиск акции/биржевого стакана:

python avanza_cli.py search-stock "VOLV B"

Список активных стоп-лосс ордеров:

python avanza_cli.py stoploss list

Тестовый запуск (dry-run) трейлинг/скользящего стоп-лосса:

python avanza_cli.py stoploss set \
  --account-id ACCOUNT_ID \
  --order-book-id ORDER_BOOK_ID \
  --trigger-type follow-upwards \
  --trigger-value 5 \
  --trigger-value-type % \
  --order-type sell \
  --order-price 1 \
  --order-price-type % \
  --volume 10

Разместите ордер по-настоящему, добавив --confirm после проверки вывода тестового запуска. Если --valid-until пропущено, avanza_cli автоматически использует самую длинную разрешенную дату (сегодня + 90 дней). Если --order-valid-days пропущено, avanza_cli использует текущее безопасное значение по умолчанию для Avanza (8).

Тестовый запуск удаления стоп-лосс ордера:

python avanza_cli.py stoploss delete \
  --account-id ACCOUNT_ID \
  --stop-loss-id STOP_LOSS_ID

Удаление по-настоящему путем добавления --confirm.

Список открытых обычных ордеров:

python avanza_cli.py orders list

Тестовый запуск обычного ордера на покупку/продажу:

python avanza_cli.py orders set \
  --account-id ACCOUNT_ID \
  --order-book-id ORDER_BOOK_ID \
  --order-type buy \
  --price 100 \
  --valid-until 2026-05-28 \
  --volume 10 \
  --condition normal

Тестовый запуск удаления ордера:

python avanza_cli.py orders delete \
  --account-id ACCOUNT_ID \
  --order-id ORDER_ID

Textual TUI

Запуск терминального интерфейса из того же скрипта:

python avanza_cli.py tui

TUI скрывает ввод пароля и TOTP, очищает эти поля после успешного входа и скрывает экран входа. Вы также можете ввести имя/ID элемента 1Password и опциональный сейф, а затем использовать Login with 1Password, чтобы позволить локальному CLI op получить имя пользователя, пароль и TOTP после вашего подтверждения в 1Password. Сначала используйте Review Only для проверки и регистрации запроса на ордер без создания бумажного или реального ордера.

После входа по умолчанию выбирается счет с наибольшей общей стоимостью. Верхняя панель группирует показатели счета в цветные карточки, объединяет кнопки действий и показывает живые часы, а также обратный отсчет до открытия/закрытия OMXS в будние дни. Показатель P/L циклически переключается между 1D P/L, 1W P/L, 1M P/L, 1Y P/L и Total P/L, при этом значения в SEK и % окрашены отдельно. Основная таблица показывает акции выбранного счета с изменением за день, состоянием прибыли, отдельной строкой заголовка и индикатором котировок в реальном времени: зеленая точка для реального времени, желтая точка для задержки или неразрешенного статуса. Билет ордера выполняет поиск по мере ввода названия акции, тикера или ISIN, поэтому он поддерживает как открытие новых позиций, так и торговлю текущими активами. Нижняя таблица показывает стоп-лоссы и открытые ордера для выбранного счета, со значениями триггера и цены, помеченными как SEK или %; столбец отмены открывает защищенный билет отмены. Ячейки покупки/продажи окрашены в зеленый/красный цвета. Нажмите на любой заголовок столбца таблицы, чтобы отсортировать по этому столбцу; нажмите на тот же заголовок снова, чтобы изменить порядок на обратный. Перетащите горизонтальный разделитель между таблицами, вертикальный разделитель рядом с Active Trades или левый край билета ордера/стоп-лосса, чтобы изменить размер панелей. Состояние позиций и ордеров обновляется в реальном времени каждые 5 секунд.

Регистрация и запуск MCP-сервера

Этот проект предоставляет MCP через python avanza_cli.py mcp (транспорт stdio).

1) Запуск и аутентификация TUI

python avanza_cli.py tui

Войдите в систему, затем установите флажок MCP в TUI. Это запустит мост localhost и запишет .avanza_mcp_session.json.

2) Регистрация MCP-сервера в Codex/Codex CLI

Добавьте это в ~/.codex/config.toml:

[mcp_servers.avanza-mcp]
command = "python"
args = ["/ABSOLUTE/PATH/TO/avanza_cli.py", "mcp"]

Используйте абсолютный путь к вашему локальному avanza_cli.py.

3) Запуск из вашего MCP-клиента

После регистрации запустите/перезагрузите Codex или Codex CLI. Он запустит:

python avanza_cli.py mcp

Прокси MCP пересылает вызовы инструментов в аутентифицированную сессию TUI через мост localhost. MCP запускается в режиме только для чтения. Включите Live R/W в TUI для реальных изменений; для размещения, редактирования, замены или удаления реальных стоп-лоссов/ордеров аргументы MCP должны включать confirm: true. Активность MCP отображается в консоли логов в правом нижнем углу.

4) Примечание для ChatGPT desktop

Режим разработчика ChatGPT в настоящее время ожидает удаленные MCP-приложения/коннекторы через SSE или потоковую передачу HTTP, поэтому он не может напрямую зарегистрировать этот локальный stdio-прокси.

Для экспериментов с автоторговлей используйте avanza_live_snapshot в качестве инструмента опроса. Он возвращает готовый к принятию решений снимок счета, и его безопасно вызывать каждые 5 секунд. Бумажная торговля доступна в режиме MCP только для чтения через avanza_paper_stoploss_set, avanza_paper_order_set, avanza_paper_orders и avanza_paper_cancel; состояние бумажной торговли сохраняется в .avanza_paper_session.json и никогда не размещает реальный ордер в Avanza. Флажок Paper в TUI включен по умолчанию; пока он включен, кнопки отправки формы ордера и стоп-лосса создают локальные бумажные ордера. Выключайте Paper только тогда, когда вы намерены использовать реальное размещение в Avanza, для чего все равно потребуется ввести PLACE. Обычные реальные ордера на покупку/продажу также доступны через avanza_order_set и avanza_order_delete, ограниченные режимом MCP R/W и confirm: true.

Сессии TUI записывают структурированные логи JSONL в avanza-cli/logs/: лог сессии с отметкой времени плюс постоянные app.jsonl, mcp.jsonl и trading.jsonl.

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

Используется неофициальный пакет avanza-api. Начните с stoploss list и тестовых запусков. Проверьте интерпретацию Avanza значений % и скользящего стоп-лосса с очень малым размером, прежде чем доверять им для значимых ордеров.

Авторы

Создатели: Hamid Kashfi и Codex (OpenAI).

Этот проект основан на библиотеке Python avanza-api от fama93:

F
license - not found
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Hamid-K/avanza-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server