Skip to main content
Glama
Hamid-K

Avanza-MCP

by Hamid-K

Avanza-MCP

CLI de script único + TUI Textual para el seguimiento de carteras en Avanza, órdenes regulares de compra/venta, gestión de stop-loss, integración MCP y trading simulado.

Las credenciales se solicitan durante la ejecución:

  • nombre de usuario: solicitud visible, a menos que se pase con --username

  • contraseña: oculta

  • código TOTP actual: oculto

Alternativamente, pase --onepassword-item ITEM y opcionalmente --onepassword-vault VAULT para leer el nombre de usuario, la contraseña y el código TOTP actual de Avanza a través de la CLI de 1Password (op). La TUI tiene una ruta coincidente de Login with 1Password. La herramienta no almacena estos secretos; op le pedirá que autorice el acceso a través de la aplicación local de 1Password.

El código TOTP actual se pasa a avanza-api como totpToken, que es el nombre de campo esperado por la versión de la biblioteca instalada.

Configuración

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

Ejecute el control de calidad completo en cualquier momento:

scripts/verify.sh

Comandos

Los comandos de consola imprimen tablas y resúmenes de Rich legibles para humanos, no cargas útiles de API sin procesar.

Mostrar resumen de la cuenta:

python avanza_cli.py accounts

Mostrar resumen de la cartera:

python avanza_cli.py portfolio summary

Mostrar posiciones detalladas de la cartera:

python avanza_cli.py portfolio positions

Buscar una acción/libro de órdenes:

python avanza_cli.py search-stock "VOLV B"

Listar órdenes de stop-loss activas:

python avanza_cli.py stoploss list

Simulación (dry-run) de un stop-loss de venta dinámico/deslizante:

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

Coloque la orden de forma real añadiendo --confirm después de revisar el resultado de la simulación. Si se omite --valid-until, avanza_cli utiliza automáticamente la fecha permitida más lejana (hoy + 90 días). Si se omite --order-valid-days, avanza_cli utiliza el valor predeterminado seguro actual de Avanza (8).

Simulación de eliminación de una orden stop-loss:

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

Elimine de forma real añadiendo --confirm.

Listar órdenes regulares abiertas:

python avanza_cli.py orders list

Simulación de una orden regular de compra/venta:

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

Simulación de eliminación de una orden:

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

TUI Textual

Ejecute la interfaz de terminal desde el mismo script:

python avanza_cli.py tui

La TUI oculta las entradas de contraseña y TOTP, borra esos campos después de un inicio de sesión exitoso y oculta la pantalla de inicio de sesión. También puede ingresar un nombre/ID de elemento de 1Password y una bóveda opcional, luego usar Login with 1Password para permitir que la CLI local op obtenga el nombre de usuario, la contraseña y el TOTP después de su aprobación en 1Password. Use Review Only primero para validar y registrar una solicitud de orden sin crear una orden simulada o real.

Después de iniciar sesión, se selecciona de forma predeterminada la cuenta con mayor valor total. El panel superior agrupa las métricas de la cuenta en tarjetas de colores, mantiene los botones de acción juntos y muestra un reloj en vivo más una cuenta regresiva de apertura/cierre de OMXS entre semana. La métrica de P/L alterna entre 1D P/L, 1W P/L, 1M P/L, 1Y P/L y Total P/L, con valores en SEK y % coloreados por separado. La tabla principal muestra las acciones de la cuenta seleccionada con el movimiento diario, el estado de ganancias, una fila de encabezado distintiva y un indicador de cotización en tiempo real: punto verde para tiempo real, punto amarillo para estado retrasado o no resuelto. El ticket de orden busca mientras escribe por nombre de acción, ticker o ISIN, por lo que admite abrir nuevas posiciones además de negociar las tenencias actuales. La tabla inferior muestra los stop-loss y las órdenes abiertas para la cuenta seleccionada, con valores de activación y precio etiquetados como SEK o %; su columna de cancelación abre un ticket de cancelación protegido. Las celdas de compra/venta están codificadas por colores verde/rojo. Haga clic en cualquier encabezado de columna de la tabla para ordenar por esa columna; haga clic en el mismo encabezado nuevamente para invertir el orden. Arrastre el divisor horizontal entre tablas, el divisor vertical al lado de Active Trades o el borde izquierdo del ticket de orden/stop-loss para cambiar el tamaño de los paneles. El estado de la posición y la orden se actualiza en vivo cada 5 segundos.

Registro y ejecución del servidor MCP

Este proyecto expone MCP a través de python avanza_cli.py mcp (transporte stdio).

1) Iniciar y autenticar la TUI

python avanza_cli.py tui

Inicie sesión y luego marque la casilla MCP en la TUI. Esto inicia el puente localhost y escribe .avanza_mcp_session.json.

2) Registrar el servidor MCP en Codex/Codex CLI

Añada esto a ~/.codex/config.toml:

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

Utilice la ruta absoluta a su avanza_cli.py local.

3) Ejecutar desde su cliente MCP

Después del registro, inicie/recargue Codex o Codex CLI. Se lanzará:

python avanza_cli.py mcp

El proxy MCP reenvía las llamadas de herramientas a la sesión TUI autenticada a través del puente localhost. MCP comienza en modo de solo lectura. Habilite Live R/W en la TUI para mutaciones en vivo; la colocación, edición, reemplazo o eliminación de stop-loss/órdenes en vivo aún requiere que los argumentos de MCP incluyan confirm: true. La actividad de MCP se muestra en la consola de registro inferior derecha.

4) Nota sobre ChatGPT desktop

El modo desarrollador de ChatGPT actualmente espera aplicaciones/conectores MCP remotos a través de SSE o HTTP en streaming, por lo que no puede registrar directamente este proxy stdio local.

Para experimentos de trading automático, utilice avanza_live_snapshot como herramienta de sondeo. Devuelve una instantánea de la cuenta lista para la toma de decisiones y es seguro llamarla cada 5 segundos. El trading simulado está disponible en modo MCP de solo lectura a través de avanza_paper_stoploss_set, avanza_paper_order_set, avanza_paper_orders y avanza_paper_cancel; el estado simulado se almacena en .avanza_paper_session.json y nunca coloca una orden real en Avanza. La casilla Paper de la TUI está activada de forma predeterminada; mientras esté activada, los botones de envío de formularios de orden y stop-loss crean órdenes simuladas locales. Desactive Paper solo cuando pretenda utilizar la colocación real en Avanza, lo que aún requiere escribir PLACE. Las órdenes regulares de compra/venta en vivo también se exponen a través de avanza_order_set y avanza_order_delete, limitadas por el modo R/W de MCP y confirm: true.

Las sesiones TUI escriben registros JSONL estructurados en avanza-cli/logs/: un registro de sesión con marca de tiempo más app.jsonl, mcp.jsonl y trading.jsonl persistentes.

Seguridad

Esto utiliza el paquete no oficial avanza-api. Comience con stoploss list y simulaciones. Verifique la interpretación en vivo de Avanza de los campos % y stop-loss deslizante con un tamaño muy pequeño antes de confiar en ellos para órdenes importantes.

Créditos

Creadores: Hamid Kashfi y Codex (OpenAI).

Este proyecto se basa en la biblioteca de Python avanza-api de 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