关于 Trading212 Community Server
Trading212 Community Server 将 Trading 212 公共 API 的账户、持仓、订单和历史数据提供给 MCP 客户端,适用于希望在 AI 工作流中查询或管理账户的用户。它还提供带账户货币信息的分析提示词,并包含缓存与请求控制机制。
主要功能
- 01查询账户、现金、持仓和订单
- 02创建、修改及取消订单
- 03查看 Pie、工具元数据和账户历史
- 04提供账户货币感知的分析提示词
- 05缓存成功 GET 响应并标注新鲜度
适用场景
- 01查看账户余额、现金和持仓
- 02通过 MCP 创建或取消交易订单
- 03检查股息、交易记录和历史订单
MCP 相关
通过 stdio、SSE 或 Streamable HTTP 向 MCP 客户端暴露 Trading 212 的工具、资源和分析提示词。服务使用本地账户凭据连接公共 API;不提供实时流数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Trading 212 MCP 服务
一个面向 Trading 212 公共 API 的 模型上下文协议服务。它提供账户数据、持仓、订单、投资组合、工具元数据和账户历史记录。 它还包含一个能够识别账户货币的分析提示词。它不提供独立的市场数据源、投资建议或实时数据流。
支持 Python 3.11–3.14。当前源代码包版本为 0.2.0; 升级详情请参阅更新日志。本项目使用官方 MCP Python SDK 2.x。
安装和运行
你可以自行按照以下步骤进行设置,也可以让 Codex 或 Claude Code 等编码 Agent 帮你操作。将此提示词粘贴到 Agent 的聊天中:
Read https://github.com/RohanAnandPandit/trading212-mcp-server/blob/main/README.md#setup
and follow the setup process.
设置
-
安装先决条件和依赖项。 你需要 Git、 uv 和 Python 3.11–3.14。选择一个稳定的安装文件夹,然后运行:
git clone https://github.com/RohanAnandPandit/trading212-mcp-server.git cd trading212-mcp-server uv sync --frozen如果你已有检出目录,请重复使用,不要覆盖本地更改。 也可以在检出目录中使用
pip install .安装软件包, 然后运行trading212-mcp-server。如需锁定 pip 安装,请先运行pip install --require-hashes -r requirements.txt,再运行pip install --no-deps .。 -
在本地配置凭据。 如果尚不存在,请根据
.env.example创建一个 被忽略的.env文件:cp .env.example .env在 Trading 212 账户的 API 设置中生成凭据,并且只授予所需权限。自行编辑
.env,设置TRADING212_API_KEY;如果使用 Basic 身份验证,还需设置TRADING212_API_SECRET。 对于 Trading 212 接受此方式的现有集成,仍可仅使用 API 密钥进行身份验证; 如使用此方式,请删除示例密钥值。 从ENVIRONMENT=demo和TRANSPORT=stdio开始。只有在明确选择启用对真实账户的操作时, 才使用 live 环境。请勿在聊天、命令、日志或 MCP 客户端配置中透露凭据。 如果 Agent 正在协助你,请自行输入凭据;Agent 必须等待你操作,不得读取、显示、记录或复述这些凭据。
服务启动时会读取其工作目录中的
.env。现有进程环境变量优先级更高。 -
连接 MCP 客户端。 使用客户端支持的方法注册名为
trading212的本地 stdio 服务。 保存前,选择此连接仅在当前工作区可用,还是在你的所有项目中都可用。 接受mcpServersJSON 的客户端可以使用:{ "mcpServers": { "trading212": { "command": "uv", "args": ["run", "--frozen", "--directory", "/absolute/path/to/trading212-mcp-server", "trading212-mcp-server"], "env": { "ENVIRONMENT": "demo", "TRANSPORT": "stdio" } } } }将示例路径替换为检出目录的绝对路径。凭据保存在检出目录的
.env文件中。 若要直接从检出目录启动服务,请运行uv run --frozen trading212-mcp-server。 -
验证连接。 如有需要,重启 MCP 客户端,并检查它是否已连接到服务并发现其工具。 只有成功发现工具,设置才算完成。导入和工具发现不会向 Trading 212 发起请求; 仅导入服务也不需要凭据。设置期间请勿调用账户或交易工具。记录 MCP 配置的保存位置以及尚未完成的步骤。
指向 src/server.py 的现有配置在运行 uv sync --frozen 后仍可继续使用。
该脚本也仍是 Inspector 的入口:
uv run --frozen mcp dev src/server.py
Inspector 需要 Node.js 和 npx。Inspector 中的工具调用使用已配置的账户,包括你调用相关工具时执行的更改操作。
Docker
docker build -t trading212-mcp-server .
docker run --rm -i --env-file .env trading212-mcp-server
对于桌面客户端,通过 Docker 传递这两个凭据变量:
{
"mcpServers": {
"trading212": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "TRADING212_API_KEY", "-e", "TRADING212_API_SECRET", "-e", "ENVIRONMENT", "trading212-mcp-server"],
"env": {
"TRADING212_API_KEY": "YOUR_API_KEY",
"TRADING212_API_SECRET": "YOUR_API_SECRET",
"ENVIRONMENT": "demo"
}
}
}
}
镜像以 UID/GID 10001 运行。凭据、本地缓存和开发文件不会包含在镜像中。默认的容器缓存是临时的;如果需要持久保存,请将一个由 UID 10001 写入的私有目录挂载到 /home/app/.cache。Stdio 无需发布端口。
配置
| 变量 | 默认值 | 含义 |
|---|---|---|
TRADING212_API_KEY | 必填 | 账户 API 密钥 |
TRADING212_API_SECRET | 未设置 | 用于 Basic 身份验证的密钥 |
ENVIRONMENT | demo | demo 或 live |
TRANSPORT | stdio | stdio、sse 或 streamable-http |
TRADING212_CACHE_DIR | .cache/trading212-v3 | 缓存根目录;相对于工作目录 |
TRADING212_ACCOUNT_TTL | 15 | 账户、持仓、订单、饼图、导出状态的缓存秒数 |
TRADING212_HISTORY_TTL | 300 | 历史记录缓存秒数 |
TRADING212_METADATA_TTL | 3600 | 交易品种和交易所缓存秒数 |
TTL 为零时,会禁用该类别的缓存。值必须是有限的非负数。HTTP 传输仅绑定到 127.0.0.1:8000,并明确限制 Host/Origin。这是一个本地单账户服务;不提供托管访问、公共 HTTP 绑定和多用户身份验证。请勿通过公共代理或隧道将其公开。工具注解决定其效果描述;它们不会实现权限控制。请使用 API 权限和 MCP 客户端的审批控制来管理账户变更。
工具
保留所有此前的工具名称:
| 区域 | 工具 |
|---|---|
| 账户 | fetch_account_summary、fetch_account_cash、fetch_account_info |
| 持仓 | fetch_positions、fetch_position_by_ticker、fetch_all_open_positions、fetch_open_position_by_ticker、search_specific_position_by_ticker |
| 订单 | fetch_all_orders、fetch_order、place_market_order、place_limit_order、place_stop_order、place_stop_limit_order、cancel_order |
| 饼图 | fetch_pies、fetch_a_pie、create_pie、update_pie、duplicate_pie、delete_pie |
| 元数据 | search_instrument、search_exchange |
| 历史记录 | fetch_historical_order_data、fetch_paid_out_dividends、fetch_transaction_list、fetch_exports_list、request_csv_export |
正数订单数量表示买入;负数表示卖出。系统会拒绝零值或非有限数量、非正价格以及空交易代码。饼图更新可以单独包含任意已记录字段;name 为可选项。导出日期必须包含时区,且顺序正确。饼图已在上游弃用,但仍保留相关工具。
fetch_account_info 是 fetch_account_summary 的别名。较早的位置工具仍作为兼容别名保留。历史工具会返回单页数据,并附带 nextPagePath;传入其游标和其他查询参数即可获取下一页。限制值仍会按原有规则截断到 1–50。请求不会自动遍历所有页面,也不会跟进导出下载链接。
资源和提示词
资源沿用现有 URI:
trading212://account/summary、trading212://account/cashtrading212://positions、trading212://positions/{ticker}trading212://orders、trading212://orders/{order_id}trading212://pies、trading212://pies/{pie_id}trading212://instruments、trading212://exchangestrading212://history/exports
兼容 URI:trading212://account/info、
trading212://account/portfolio、trading212://account/positions、
trading212://account/portfolio/{ticker} 和
trading212://account/positions/{ticker}。
analyse_trading212_data 提示词会在可用时包含账户货币,并说明 GBX/GBP 单位。如果账户信息获取失败,仍会返回基础提示词,并向 stderr 写入通用诊断信息。
缓存与请求保障
私密数据会保留在缓存中。凭据/基础 URL 指纹会隔离不同账户、密钥轮换、环境和 API 版本的 SQLite 存储。授权信息和 Cookie 不会进入缓存层。缓存响应以明文形式包含财务数据;私有文件系统权限并不等同于加密。请使用私有本地磁盘,不要使用共享或网络挂载的缓存目录。
成功响应在缓存前会根据对应端点模型进行验证。只有成功的 GET 请求会被缓存,过期响应绝不会被提供。变更操作永不缓存,也不会自动重试。每次尝试变更操作后,私有缓存代次都会递增,包括结果不确定的情况。跨进程文件锁会覆盖读取、写入、响应体读取和失效处理,防止较早开始的进行中读取重新填充当前代次。不同凭据命名空间彼此独立;使用其他 API 密钥进行的外部交易或写入,可能要等到 TTL 到期后才会显示。
MCP 工具结果和资源内容会在 _meta["io.github.RohanAnandPandit.trading212/cache"] 下携带新鲜度详情:一个由 cacheHit、retrievedAt(UTC)和 ttlSeconds 记录组成的数组。现有数据字段保持不变。
临时 GET 失败最多可在 30 秒重试预算内重试两次,并遵循 Retry-After 和速率重置标头。每个 HTTP 操作都有明确的超时设置。等待其他进程的缓存锁会单独限制为 30 秒。变更操作失败时,结果可能未知:再次发起前,请先检查账户。
从 0.1.x 升级
停止较旧的服务进程,更新检出内容,然后运行 uv sync --frozen。新服务绝不会读取或迁移 .cache/hishel 或 .cache/trading212-v2。这些目录可能包含私密响应和 Authorization 标头。确认路径属于此应用后,请自行明确删除旧缓存目录。升级不会删除用户数据。请重新构建 Docker 镜像,并替换可能包含本地文件的旧镜像。
开发与安全
有关架构和验证命令,请参阅 CONTRIBUTING.md;有关私密报告,请参阅 SECURITY.md;有关已检查行为,请参阅现代化验证报告。
保持 Trading 212 架构同步
Trading 212 的实时
OpenAPI 描述是权威来源。docs/api.json 是便于审查的检入快照。在进行面向 API 的更改或准备发布之前,请在不使用账户凭据的情况下检查它:
uv run --with PyYAML python .agents/skills/trading212-api-sync/scripts/sync_api_schema.py --check
如果命令报告存在偏差,请刷新快照:
uv run --with PyYAML python .agents/skills/trading212-api-sync/scripts/sync_api_schema.py --update
请审查生成的差异,不要认为重新生成就足够了。根据需要更新端点、参数、请求和响应模型、枚举、弃用项、测试和文档,然后运行完整的验证套件。仓库本地的 trading212-api-sync Agent 技能包含完整工作流。架构检查只会下载公开文档;绝不能发起经过身份验证的账户请求或交易变更操作。
本项目由独立维护,与 Trading 212 无关联,也未获其认可。 请查阅服务提供商当前的文档和条款。基于 MIT 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。