AI agents (MCP)
OpenTraderWorld 内置了一个 MCP 服务器,让 AI agent(任何兼容 MCP 的客户端)可以通过受控的 gateway 读取和更新你的模块。agent 可以替你记录 journal 交易、总结你的新闻源、添加待办、查询你的 backtest 结果,等等。
**默认关闭。**在你启用之前,不会有任何东西监听 agent。
想找的是应用内的聊天助手?
本页讲的是外部 agent 接入 OpenTraderWorld。如果你想要的是应用内置的聊天助手(自带服务商),请参阅 Agent 模块:它可以使用同一个 gateway 来访问你的数据。
安全模型
多层机制,必须全部通过:
- 全局开关:在你于设置 → MCP 中启用之前,MCP 端点是禁用的。关闭时你也可以先准备 token;启用之前,每个 agent 请求都会被拒绝。
- Bearer token:每个 agent 或用例一个。token 以哈希形式存储,创建时只显示一次;失败的尝试会被限速。可随时吊销 token。
- 按 token 的模块权限:每个 token 针对每个模块授予无权限、读取、读取 + 写入或完全(读取 + 写入 + 删除)。agent 只能发现你授权的模块。
- 硬性允许列表:账户、网络、机密、文件存储和数据清除操作,无论权限如何,绝不会向 agent 暴露。
允许列表是有意设计的,而非自动生成
agent 能访问某个端点,仅仅是因为有人手动把它加入了目录。新模块,或现有模块上的新路由,在该条目存在之前对所有 agent 都不可见,因此随着应用的增长,gateway 绝不会意外扩大。persona 和技能管理被有意排除在外:没有任何 agent、也没有任何 agent 读到的内容,能编辑 persona 或扩大其技能架。
版本就像 commit
在设置 → 版本管理中开启版本管理后,被授予 Editor 或 Backtest 的 agent 可以在更新文档或策略之后保存一个版本,并附上说明改了什么的备注,还可以列出、读取、恢复或删除版本。它可以按文件或按策略切换版本管理,但不能更改设置中的全局开关。
Automator 授予的是编写,而不是启用
授予 Automator 后,agent 可以读取你的 workflow、创建一个、编写其图并测试它。但它不能让其投入使用:agent 保存的图会作为草稿落地,由你在编辑器中采纳;它无法附加 workflow 的访问 token,也无法运行 workflow 或触碰计划任务。workflow 使用它自己的 token 而非调用者的 token 运行,所以编写图和启用它是两项独立的授权。参见模块页面。
启用并创建 token
- 前往设置 → MCP 并将其打开。
- 新建 token:以客户端命名(例如
My Agent),设置按模块的权限(或以 全部读取 / 全部读取+写入 / 全部完全 作为起点)。 - 立即复制 token:它只显示一次。
允许外部访问是同一对话框中的一个独立勾选项。它不会额外授予任何权限:只是让该 token 可以支撑外部控制中的聊天绑定,来自 Telegram、Slack 或 Discord 的消息会按这些相同的按模块级别运行。
创建对话框还会显示一段可直接粘贴的配置片段,每个客户端系列一个标签页:原始端点 + 请求头、一个 mcpServers JSON 块(Cursor、Cline、Windsurf、VS Code…),以及一行 claude mcp add 命令。同样的片段会一直显示在 token 表下方,以 <TOKEN> 作为占位符,方便你之后配置第二台机器。
连接客户端
该端点在以下地址使用 基于 Streamable HTTP 的 MCP:
POST http://<your-host>/api/mcp
Authorization: Bearer <TOKEN>任何合规的客户端都可以使用。MCP 配置示例:
{
"mcpServers": {
"opentraderworld": {
"type": "http",
"url": "http://localhost:5454/api/mcp",
"headers": { "Authorization": "Bearer <TOKEN>" }
}
}
}如果你使用局域网/HTTPS 模式,请把 URL 替换为你的域名。
仅限 localhost 的安装
如果应用只能通过 localhost 访问(默认网络模式),agent 必须运行在同一台机器上。
通过 OAuth 连接(claude.ai、ChatGPT)
有些客户端无法持有固定 token:claude.ai 和 ChatGPT 的 connector 只支持用 OAuth 登录。对于它们,请在设置 → MCP 底部打开 OAuth sign-in(会要求输入你的密码),并只把服务器 URL https://<your-domain>/api/mcp 提供给客户端,不带 token。
- 客户端自行注册,并在你的实例上打开授权页面(如有需要请先登录)。
- 页面会显示客户端的名称以及你的回应会被发送到哪里。选择模块和级别,然后点击允许:每次批准都会要求输入你的密码。
- 该连接会出现在 token 表中,带有 OAuth 标记。可以像对待任何 token 一样在那里编辑其权限或吊销;吊销会断开客户端。
访问 token 有效期为一小时,会在后台续期;30 天未使用的连接需要重新登录。如果续期 token 被其他人重放,该连接会被吊销,并通知你。
远程客户端需要公网 HTTPS
claude.ai 和 ChatGPT 从它们自己的服务器发起连接,因此实例必须可通过公网 HTTPS 访问(Web 模式)。只批准你自己刚刚打开的授权页面:别人发来的链接可以自称为任何客户端。
从 0.0.15 或更早版本通过 otw update 更新?
OAuth 需要在 deploy/Caddyfile 中添加一条新路由。参见更新。
agent 如何看到应用
agent 获得四个 gateway 工具:
otw_catalog:列出该 token 可调用的模块和操作。只显示已授权的模块。模块列表会显示每个操作的方法、路径、查询参数和顶层请求体字段;endpoint(POST /api/backtest/run)会返回该操作的完整请求体 schema。otw_read:读取操作(需要该模块至少 读取 权限)。otw_compute:目录中标记为 (compute) 的操作,它们只回答问题而不存储任何内容:backtest、参数扫描、风险指标。它们和任何 POST 一样需要 读取 + 写入,但你的客户端不会要求你批准一次计算。otw_write:创建和更新操作(需要 读取 + 写入);删除操作需要该模块的 完全 权限。
携带外部文本(订阅源文章、收到的邮件)的响应,会放在带标签的块中交给 agent,提示它将内容视为数据,并忽略其中隐藏的任何指令。
设置中的 token 表会显示每个 token 最后一次使用的时间,方便你发现并吊销陈旧的 token。创建或编辑 token 时还可以给它设置过期日期:过了该日期,它在所有地方都会失效,包括应用内的 agent。