mcpField
T
Trading212 Community Server

Trading212 Community Server

本地服务
github.com/RohanAnandPandit金融数据655 天前更新

关于 Trading212 Community Server

Trading212 Community Server 将 Trading 212 公共 API 的账户、持仓、订单和历史数据提供给 MCP 客户端,适用于希望在 AI 工作流中查询或管理账户的用户。它还提供带账户货币信息的分析提示词,并包含缓存与请求控制机制。

主要功能

  1. 01查询账户、现金、持仓和订单
  2. 02创建、修改及取消订单
  3. 03查看 Pie、工具元数据和账户历史
  4. 04提供账户货币感知的分析提示词
  5. 05缓存成功 GET 响应并标注新鲜度

适用场景

  1. 01查看账户余额、现金和持仓
  2. 02通过 MCP 创建或取消交易订单
  3. 03检查股息、交易记录和历史订单

MCP 相关

通过 stdio、SSE 或 Streamable HTTP 向 MCP 客户端暴露 Trading 212 的工具、资源和分析提示词。服务使用本地账户凭据连接公共 API;不提供实时流数据。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"trading212": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TRADING212_API_KEY",
"mcp/trading212"
],
"env": {
"TRADING212_API_KEY": "<TRADING212_API_KEY>"
}
}
}
}
启动命令docker run -i --rm -e TRADING212_API_KEY mcp/trading212
需要配置的环境变量
TRADING212_API_KEY密钥

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocimcp/trading212

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Trading 212 MCP 服务

License: MIT Checks

一个面向 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.
设置
  1. 安装先决条件和依赖项。 你需要 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 .。

  2. 在本地配置凭据。 如果尚不存在,请根据 .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。现有进程环境变量优先级更高。

  3. 连接 MCP 客户端。 使用客户端支持的方法注册名为 trading212 的本地 stdio 服务。 保存前,选择此连接仅在当前工作区可用,还是在你的所有项目中都可用。 接受 mcpServers JSON 的客户端可以使用:

    {
      "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。

  4. 验证连接。 如有需要,重启 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 身份验证的密钥
ENVIRONMENTdemodemo 或 live
TRANSPORTstdiostdio、sse 或 streamable-http
TRADING212_CACHE_DIR.cache/trading212-v3缓存根目录;相对于工作目录
TRADING212_ACCOUNT_TTL15账户、持仓、订单、饼图、导出状态的缓存秒数
TRADING212_HISTORY_TTL300历史记录缓存秒数
TRADING212_METADATA_TTL3600交易品种和交易所缓存秒数

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/cash
  • trading212://positions、trading212://positions/{ticker}
  • trading212://orders、trading212://orders/{order_id}
  • trading212://pies、trading212://pies/{pie_id}
  • trading212://instruments、trading212://exchanges
  • trading212://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 许可。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。