Avanza-MCP
Avanza-MCP
单脚本 CLI + Textual TUI,用于 Avanza 投资组合监控、常规买入/卖出订单、止损管理、MCP 集成和模拟交易。
凭据在运行时提示输入:
用户名:可见提示,除非通过
--username传递密码:掩码显示
当前 TOTP 代码:掩码显示
或者,传递 --onepassword-item ITEM 和可选的 --onepassword-vault VAULT,通过 1Password CLI (op) 读取 Avanza 用户名、密码和当前 TOTP 代码。TUI 具有匹配的 Login with 1Password 路径。该工具不会存储这些机密信息;op 将要求您通过本地 1Password 应用程序授权访问。
当前 TOTP 代码作为 totpToken 传递给 avanza-api,这是已安装库版本所期望的字段名称。
设置
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试运行追踪/滑动卖出止损:
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_IDTextual TUI
从同一脚本运行终端 UI:
python avanza_cli.py tuiTUI 会掩码密码和 TOTP 输入,在成功登录后清除这些字段,并隐藏登录屏幕。您还可以输入 1Password 项目名称/ID 和可选的保险库,然后使用 Login with 1Password 让本地 op CLI 在您批准 1Password 后获取用户名、密码和 TOTP。首先使用 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 服务器注册与运行
该项目通过 python avanza_cli.py mcp (stdio 传输) 公开 MCP。
1) 启动并验证 TUI
python avanza_cli.py tui登录,然后在 TUI 中勾选 MCP 复选框。这将启动本地主机桥接并写入 .avanza_mcp_session.json。
2) 在 Codex/Codex CLI 中注册 MCP 服务器
将其添加到 ~/.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 mcpMCP 代理通过本地主机桥接将工具调用转发到经过身份验证的 TUI 会话。MCP 以只读方式启动。在 TUI 中启用 Live R/W 以进行实时变更;实时止损/下单、编辑、替换或删除仍需要 MCP 参数包含 confirm: true。MCP 活动显示在右下角的日志控制台中。
4) ChatGPT 桌面版说明
ChatGPT 开发模式目前期望通过 SSE 或流式 HTTP 连接远程 MCP 应用程序/连接器,因此它无法直接注册此本地 stdio 代理。
对于自动交易实验,请使用 avanza_live_snapshot 作为轮询工具。它返回一个可供决策的账户快照,并且每 5 秒调用一次是安全的。模拟交易可通过 avanza_paper_stoploss_set、avanza_paper_order_set、avanza_paper_orders 和 avanza_paper_cancel 在只读 MCP 模式下使用;模拟状态存储在 .avanza_paper_session.json 中,绝不会下达 Avanza 订单。TUI 的 Paper 复选框默认开启;当它开启时,订单和止损表单提交按钮会创建本地模拟订单。仅当您打算使用实时 Avanza 下单时才关闭 Paper,这仍然需要输入 PLACE。常规实时买入/卖出订单也通过 avanza_order_set 和 avanza_order_delete 公开,受 MCP R/W 模式和 confirm: true 的限制。
TUI 会话在 avanza-cli/logs/ 下写入结构化的 JSONL 日志:一个带时间戳的会话日志以及持久的 app.jsonl、mcp.jsonl 和 trading.jsonl。
安全性
此项目使用非官方的 avanza-api 包。请从 stoploss list 和试运行开始。在将 Avanza 的 % 和滑动止损字段用于重要订单之前,请先用非常小的规模验证其对这些字段的实时解释。
致谢
创建者:Hamid Kashfi 和 Codex (OpenAI)。
本项目基于 fama93 的 Python avanza-api 库:
PyPI: avanza-api
This server cannot be installed
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