MCP 服务器文档 — 16 家交易所 + MetaTrader 5

AlgoVesta MCP 服务器:让 Claude、ChatGPT、Cursor 和 Gemini 交易您的真实交易所和 MetaTrader 5 账户

这是什么: AlgoVesta 运营着一个托管的 Model Context Protocol (MCP) 服务器,通过一条 HTTPS 链接为 AI 助手提供二十个真实的交易工具。将这条链接粘贴到 Claude、ChatGPT、Cursor、Claude Code、Gemini CLI 或任何支持 MCP 的客户端中,助手就能读取余额、开仓和平仓、调整止损和止盈,并对自身操作进行审计,覆盖 16 家加密货币交易所和 MetaTrader 5 外汇账户,全部同时 — 使用您已在 AlgoVesta 中保存的风险设置,置于任何提示词都无法绕过的服务器端策略墙之后。每个连接都从 $5,000 的模拟余额开始,每个操作都会返回一份 ed25519 签名的回执。
20 个原生 MCP 工具 OAuth 2.1(PKCE)或密钥链接 模拟优先,$5,000 虚拟资金 Streamable HTTP 传输

Model Context Protocol 是一个用于将 AI 助手连接到外部系统的开放标准。大多数与交易相关的 MCP 服务器只是将行情数据流式传输到聊天窗口中。而这一个 会执行交易:它是一个订单路由层,前面有一个确定性的风控引擎,AI 只是调用方 — 从来不是决策者。

本页最重要的一点。 您只需在 AlgoVesta 内连接一次您的交易所 API 密钥和 MetaTrader 5 账户,并在那里设置一次您的风险偏好(止损百分比、止盈百分比、杠杆)。然后您把 一条链接交给您的 AI 助手。从那一刻起,该助手就能访问 您连接的每一个账户,同时,通过同一条链接,并且它开出的每一笔订单都会继承 您的 已保存的设置 — 与手动面板和 Telegram 机器人使用的完全相同的设置。您并不是把 API 密钥交给了 AI。您给它的,是一扇有作用域限制、可撤销、有速率限制、经过策略检查的门,通向您已经掌控的账户。

快速开始

设置只需三步,无需代码。整个流程都在 MCP 连接 标签页中完成,位于您的 AlgoVesta 面板内。

第 1 步

打开 MCP 连接 标签页并生成一个密钥。新密钥默认使用 paper 作用域。完整链接只会显示一次 — 请立即复制。

第 2 步

将该链接作为自定义 MCP 服务器粘贴到您的 AI 客户端中。没有任何 API 密钥离开 AlgoVesta,无需代码,无需本地安装。

第 3 步

直接和它对话。“我的投资组合表现如何?” “模拟一笔 5 倍杠杆、$200 的 ETHUSDT 多单。” “平掉我一半的 BTC 仓位。”

您的连接 URL 大致是这样的:

https://api.algovesta.com/u/avmcp_<your-key>/mcp

这个 URL 就是一个凭证。任何持有它的人都可以在其作用域内对您的账户执行操作。请像对待密码一样对待它:切勿将其粘贴到公开聊天、截图、共享代码仓库或支持工单中。如果它泄露了,请从面板中将其撤销 — 撤销对新连接立即生效,并会在数秒内断开已打开的事件流。

哪些 AI 助手可以连接

任何通过 Streamable HTTP 支持 MCP 协议的客户端都可以连接。下表记录了针对生产服务器实际验证过的情况,包括真实存在的限制 — 其中一些是 AI 产品自身的限制,而非 AlgoVesta 造成的,无论您使用哪个 MCP 服务器都会遇到。

AI 客户端 在哪里粘贴链接 说明与真实限制
Claude(网页版、桌面版、iOS、Android)设置 → 连接器 → 添加自定义连接器完全支持。工具标题和确认对话框都直接来自服务器。
Claude Codeclaude mcp add --transport http命令行工具。适用于脚本化或可重复执行的工作流程。
Cursormcp.json,在 "url" 字段中完全支持。请注意此处密钥名称是 url — Gemini CLI 使用的名称不同。
ChatGPT开发者模式 / 自定义连接器仅限付费套餐。 免费套餐不提供自定义 MCP 连接器,且可能需要先启用开发者模式。这是 OpenAI 自身的限制。
Gemini CLI~/.gemini/settings.json,在 "httpUrl" 字段中仅限 CLI。 Gemini 网页应用不支持自定义 MCP 服务器。请使用 httpUrl 这个键名,而不是 url.
其他任何支持 MCP 的客户端该客户端自身的 MCP / 连接器设置该服务器实现了标准协议,因此任何支持通过 Streamable HTTP 使用远程 MCP 的客户端都可直接使用,无需任何针对性适配。

Cursor 示例(mcp.json):

{
  "mcpServers": {
    "algovesta": {
      "url": "https://api.algovesta.com/u/avmcp_<your-key>/mcp"
    }
  }
}

Gemini CLI 示例(~/.gemini/settings.json) — 请注意 httpUrl:

{
  "mcpServers": {
    "algovesta": {
      "httpUrl": "https://api.algovesta.com/u/avmcp_<your-key>/mcp"
    }
  }
}

Claude Code:

claude mcp add --transport http algovesta https://api.algovesta.com/u/avmcp_<your-key>/mcp

传输与协议

传输方式Streamable HTTP,无状态,JSON 响应。每个请求都独立进行身份验证。
服务器名称AlgoVesta
密钥链接端点https://api.algovesta.com/u/<key>/mcp
OAuth 端点https://api.algovesta.com/mcp
工具列表变更tools.listChanged = true。客户端会在重新连接时刷新工具列表,因此新工具和新参数会自动出现,无需移除并重新添加连接器。
事件流服务器发送事件(SSE),位于 /mcp/events/u/<key>/events,按租户隔离,具备 Last-Event-ID 重连能力。
机器可读的 schema/mcp/tools.json — 全部 20 个工具的完整 JSON Schema,与客户端实际接收到的内容完全一致。

身份验证与作用域

有两种连接方式,两者最终都会解析到同一个租户上下文。工具从不接受用户 ID 作为参数 — 身份信息只从已认证的连接本身读取,这使得跨账户访问在结构上就不可能发生,而不仅仅是被规则禁止。

密钥链接

形式为 avmcp_<32-byte urlsafe random>的密钥,嵌入在 URL 路径中。它以 Argon2id 哈希加 SHA-256 查找哈希的形式存储;明文只在创建那一刻存在,之后再也无法恢复。每个密钥都有自己的作用域、自己的标签和自己的撤销状态,因此您可以在 Cursor 中使用一个模拟密钥,在 Claude 中使用一个实盘密钥,并且可以独立地终止任意一个。

OAuth 2.1

适用于偏好使用规范授权流程的客户端。支持的授权类型是 authorization_coderefresh_token,并配有滚动刷新令牌。 使用 S256 的 PKCE 是强制要求的 — 缺少它的请求会被拒绝。支持动态客户端注册,因此大多数客户端可以自行完成配置。发现文档:

GET https://api.algovesta.com/.well-known/oauth-authorization-server
GET https://api.algovesta.com/.well-known/oauth-protected-resource
POST https://api.algovesta.com/mcp/oauth/register
GET  https://api.algovesta.com/mcp/oauth/authorize
POST https://api.algovesta.com/mcp/oauth/token

三种作用域

作用域 可以做什么 如何获得
read投资组合、价格、挂单、模拟下单、策略预览、回执验证、频道回放。 无法下达任何订单。直接创建。
paper包含 read的全部内容,外加针对 $5,000 虚拟余额在模拟引擎上执行的订单。 新密钥的默认作用域。直接创建。
live包含以上全部内容,外加在您已连接的交易所和 MetaTrader 5 账户上下达的真实订单。需要第二身份验证因素。 需要一个有效的身份验证器(TOTP)代码,或发送到您账户邮箱、有效期为 10 分钟的确认码。此项在服务器端强制执行,没有例外。

作用域具有层级关系,因此一个需要 paper 权限的工具会拒绝一个 read 持有 insufficient_scope作用域的密钥。因此,模拟资金与真实资金之间的边界是密钥本身的属性,而不是取决于提示词、设置,或者模型’的判断。

工具参考 — 全部 20 个工具

这些正是您的助手所看到的工具。读取类工具可以安全调用,无需事先征得您的同意;六个写入类工具会在支持该功能的客户端中弹出确认提示,其中三个 — place_orderclose_positioncancel_order — 还在其注解中被标记为破坏性操作。

工具 作用域 类型 用途
get_portfolio_contextread只读一次调用获取所有已连接账户
get_market_priceread只读实时价格,并报告数据新鲜度
simulate_orderread只读试运行,包含策略裁定结果
place_orderpaper / live破坏性开仓
close_positionpaper / live破坏性全部或部分平仓
modify_positionpaper / livewrite调整止损和止盈
list_open_ordersread只读挂单中的限价单
cancel_orderpaper / live破坏性取消一笔挂单
compile_policyread只读将自然语言规则转换为策略预览
verify_receiptread只读校验签名与哈希链
replay_channelread只读用您的规则对某个 Telegram 频道进行回测
get_trade_historyread只读加密货币、MT5 和模拟账户中的已平仓交易与表现
compare_venuesread只读根据实测价格和点差对已连接的交易所进行排名
list_strategiesread只读TradingView 策略;webhook URL 绝不会被返回
create_strategypaper / livewrite新建策略,真实资金执行始终处于关闭状态
update_strategypaper / livewrite策略设置;auto_trade 会被拒绝
backtest_my_signalsreadread-only用不同设置重放你自己的历史信号(排队任务)
simulate_policyreadread-only把风控策略套用到你实际平仓的交易上(排队任务)
import_tradingview_backtestreadread-only用真实手续费和滑点重新计算 TradingView 导出(排队任务)
get_job_statusreadread-only排队任务的进度与结果

get_portfolio_context

不接受任何参数。返回属于该已认证密钥的所有交易所账户、所有 MetaTrader 5 账户以及模拟账户的标准化视图 — 仅此而已。正是这个调用,让“我现在情况如何?”从十六个问题变成了一个问题。

有两个字段比其余字段更为关键。对于加密货币账户, balanceequity 描述的是 仅限合约钱包;现货资金则在 spot_balance中单独报告,因此如果助手只读取 balance ,可能会错误地认为您一无所有。对于 MetaTrader 5 账户, positions_source 的值只会是 live_ea,表示持仓列表已经与终端核对过;或者是 unavailable,表示无法连接到终端。在 unavailable 这种情况下,空的持仓列表 并不 代表“没有持仓” — 它代表未知,工具描述会指示模型如实说明这一点,而不是给您安抚性的错误保证。

get_market_price

参数: venue, symbol。返回 {ok, venue, symbol, last, bid, ask, ts, source, age_sec}。价格来自一个大约每秒刷新一次的共享缓存;缓存未命中时,服务器会向交易所发起一次实时 REST 调用。如果该值已超过 10 秒未更新,或完全无法获取,系统都会明确说明 — 过期的价格绝不会被包装成实时价格。如果该交易对在您已连接的任何交易所都不存在,系统可能会返回一个仅供参考的 DEX 价格,并附上明确警告,说明您无法在已连接的交易场所交易该交易对。

simulate_order

必填: venue, symbol, side, order_type, idempotency_key。不会发送任何订单。返回预期成交情况、保证金影响和策略裁定结果,以及服务器推算出的绝对止损价和止盈价。这是一个读取操作,因此一个规范的助手会在不请示您的情况下直接调用它,向您展示一份摘要,并在真正下单前只请求一次确认。

place_order

必填: venue, symbol, side, order_type, idempotency_key。可选: account, market, size_usd, margin_usd, risk_pct, lots, leverage, sl, tp, sl_pct, tp_pct, take_profits, entry_price.

idempotency_key 并非摆设。如果同一个密钥针对同一用户出现两次,系统会重放已存储的响应,并且 不会开出第二笔订单 — 这正是当客户端在超时后重试、手机在确认过程中失去信号,或模型两次调用同一工具时,能够保护您的机制。

仓位大小的设定是刻意做成显式的。 对于加密货币,您需要传入以下三个字段中的恰好一个,它们各自含义不同:

字段 含义 5 倍杠杆下的示例
size_usd仓位价值(名义价值)size_usd=100 → $100 的仓位,其中 $20 是您自己的资金
margin_usd您自己出的保证金margin_usd=20 → $100 的仓位
risk_pct使用的可用余额百分比 作为保证金。这并不是基于止损距离的风险仓位计算方式;止损距离不参与该计算。risk_pct=1 在 $2,000 余额下 → $20 保证金 → $100 的仓位

对于外汇和 MetaTrader 5,仓位大小以 lots 给出,而且 leverage 完全不会被发送 — 该产品不加杠杆,仓位大小由手数决定。您指定的手数会被精确使用,绝不会被四舍五入成方便的数值;如果超出您经纪商’的限制,订单会被拒绝,并会返回允许的范围。

订单大小容差。 交易所只接受特定的手数增量,因此请求的数量会被匹配到最接近的有效步长。如果偏差保持在 20% 以内,订单会继续执行,并将确切的偏差报告给您;超过 20% 时,订单 不会 被开出,系统会用具体数字告诉您哪些邻近的数量是可行的。这个阈值是通过对每一笔曾经过该仓位计算函数的真实订单进行重新运算后选定的,而不是凭直觉挑选的。

省略的字段会回退使用您已保存的设置。 如果您没有说明止损、止盈或杠杆,助手会被指示将这些字段留空,服务器会用您面板中保存的偏好设置来填充它们 — 与手动面板和 Telegram 机器人使用的值完全相同。响应中会在 prefs_used中报告哪些字段来自已保存的设置。这个机制的存在,是因为一次经过实测的失败:当这些字段是必填项时,模型不得不臆造数值,结果五分之五的订单都覆盖了客户’自己的配置。

close_position

必填: venue, symbol, side, idempotency_key。可选: fraction (0 到 1], account, ticket。适用于加密货币和 MetaTrader 5。平仓会降低风险,因此策略墙从不阻止平仓操作 — 只有紧急停止开关才会。使用同一个幂等密钥调用十次,也只会执行一次平仓。如果不存在匹配的持仓,您会收到 POSITION_NOT_FOUND ,以及 当前 在该交易场所实际持有的仓位,这样助手就能自我修正,而不是靠猜测。

MetaTrader 5 不支持部分平仓 — Expert Advisor 只能全部平仓 — 因此在这种场景下应使用 fraction=1 。当同一交易品种上存在多个 MT5 持仓时, ticket 就变为必填项,只要目标存在歧义, 就不会平掉任何仓位.

modify_position

必填: venue, symbol, side, idempotency_key,外加以下至少一项: new_sl / new_tp. 止损无法被移除 — 强制止损规则在这里同样适用。价格顺序会被校验:多单需要 new_sl < mark < new_tp,空单则相反。只发送其中一个字段,另一个会保持当前值而不会被删除。和平仓一样,如果 MT5 的持仓单号存在歧义,则不会修改任何内容。

list_open_orders

可选: venue。列出挂单中的限价单,包含 order_ref、交易场所、交易品种、方向、入场价格、数量和创建时间。

在你让助手查看未成交订单之前,有一点值得了解:该工具追踪的挂单存在于模拟(paper)订单簿中。通过MCP在实盘交易所下的订单会以市价单形式发送,因此会立即成交而不会挂单等待;实盘账户中列表为空,意味着没有挂单,而不是订单消失了。

cancel_order

必填: venue, order_ref, idempotency_key。如果该引用不属于您,得到的答复是 NOT_FOUND — 绝不会透露出别人’存在某笔订单的任何线索。和平仓一样,这属于降低风险的操作,策略墙不会阻止它。

compile_policy

必填: natural_text。您用自然语言写下一条规则 — “单笔交易风险不超过 2%,杠杆不超过 10 倍,只交易 BTC 和 ETH” — 它会被编译成一个 JSON 策略,以 预览的形式返回。编译本身从不会激活任何东西。激活是一个独立、需要刻意执行的步骤,须通过面板或 POST /api/mcp/policies/{policy_id}/activate完成,这意味着模型不可能仅凭谈论规则就放松您的规则。

verify_receipt

必填: receipt_id。返回 signature_validchain_valid;只有两者都为真时,该操作才算通过验证。回执采用 ed25519 签名,并按用户进行哈希链式关联,因此篡改早前的一份回执会破坏其后所有回执,并使 chain_valid 变为 false。公钥发布于 /mcp/receipts/pubkey,因此您可以独立验证,而无需信任本端点。较早的 HMAC 时代的回执会返回 legacy=true.

replay_channel

必填: channel_ref。可选: days (最多 90,默认 30), policy_override。用于回答“如果过去 X 天我在自己的规则下跟随了这个 Telegram 频道,结果会怎样?”这个问题 — 方式是以模拟形式回放该频道过去的信号,每个信号都会经过策略墙,被拒绝的信号永远不会开仓。进度以 replay_progress 事件的形式送达。结果会缓存 24 小时,该工具每小时最多限用 5 次回放。输出: {trades:[...], summary:{total_pnl, win_rate, max_drawdown,

get_trade_history

可选: venue, symbol, days (1–365,默认 30), limit (1–200,默认 50), market (crypto / forex / paper)。将三个来源的已平仓交易合并为一个列表返回,按最新排列在前,并附带一个 summary。该摘要刻意保持保守:avg_rr 仅根据入场价、止损和出场价均已知的交易计算,rr_sample 会报告这类交易的数量;当多个账户货币混合在一起时,total_pnlnull,转而提供 pnl_by_currency;佣金未在任何地方被记录,因此 fee 始终为 null,加密货币的 PnL 为毛值(未扣手续费)。如果某个来源无法读取,incomplete_sources 会指明该来源,而不是把一份不完整的短列表当作完整列表返回。

compare_venues

必填: symbol。可选: market (默认 futures,或 spot), side。为每个已连接的加密货币交易所返回实时价格 — 对于公布买卖价(bid/ask)的交易所,还会返回以基点计的点差,以及各交易所之间的价差。它不会替您选择交易所:您的订单仍需自行指定交易所。交易手续费、订单簿深度和滑点被列在 basis.not_measured 下,绝不会被估算;未公布买卖价的交易所会出现在 not_comparable_on_spread 中,而不是被当作点差为零来排名。因此 cheapest_measured 的意思是“实测点差最低”,而不是“整体最便宜”。

list_strategies

没有参数。返回您的 TradingView 策略及其设置、plan_limitcan_create_moreauto_trade 会按策略分别报告,以便助手能告诉您哪些策略已启用真实资金。webhook URL、demo URL 和 HMAC secret 会从响应中剔除 — 只暴露 webhook_url_configuredhas_hmac_secret,因为该 URL 本身就是一项凭据。

create_strategy

可选: name。必填: idempotency_key。创建一个 auto_trade 处于关闭状态的 TradingView 策略;该字段无法通过 MCP 写入,因此新创建的策略在您亲自到面板中启用之前无法下达真实订单。受您套餐的策略配额限制 — 超出限额时会返回一个带有代码的套餐限额错误,而不是悄无声息地什么都不做。

update_strategy

必填: strategy_id, changes, idempotency_key。可修改杠杆(限制在 1–20 之间)、风险百分比(0.1–50)、止损和止盈百分比、trailing 和 break-even 设置、允许的交易品种、目标账户,以及该策略是否接受信号。auto_tradestatusip_allowlist 会被拒绝,并在 refused_fields 中返回;删除只能在面板中进行。开启 reverse_enabled 会返回一个 warning,因为从那时起,BUY 信号会开出 SHORT 仓位。

avg_rr, policy_rejections}}
.

backtest_my_signals

可选:days(1–90)、sourcesymbolsmargin_usdleveragesl_pcttp_pctmax_hold_minutestaker_fee_bpspartial_tp。把你实际收到的信号放在真实的主网历史一分钟K线上跑两遍:一遍用每条信号原本的止损、止盈和杠杆,一遍用你指定的设置,因此两者可直接对比。调用会立刻返回 job_ref,结果用 get_job_status 领取。每份结果都带 coverage(实际能模拟多少条信号,其余为何不能)和 assumptions(手续费、滑点、部分止盈,以及哪些未纳入模型)。没有止损、止损位于入场价错误一侧、或没有历史价格数据的信号会被计数并跳过,绝不猜测。

simulate_policy

可选:policy_text(日常语言)、rules(已编译)、days(1–365)。把风控策略套用到你实际平仓的交易上,报告哪些会被哪条规则拒绝,以及盈亏差额。返回 job_ref。每份结果都会写明两个限制:依赖下单时账户状态的规则(持仓数量、当日亏损、余额)以零值评估,因为该状态无法从已平仓交易中还原 — 所以这类规则是被少算而不是多算;盈亏取自你已记录的已实现结果,按币种分别列出,绝不跨币种相加。

import_tradingview_backtest

必填:csv_text。可选:taker_fee_bpsslippage_bpsleverage。接收你从 TradingView 策略测试器(List of Trades)导出的 CSV,并按真实成本重新计算:进场和出场两端的吃单手续费与实测滑点。Pine Script 从不执行也从不解释 — 只重新计算你导出的交易清单 — 价格保持 TradingView 报告的原样。缺少数量列的行无法计入手续费,因而保持乐观,其数量会被报告。返回 job_ref

get_job_status

可选:job_ref。给出引用时返回该任务的状态,完成后返回其结果;不带参数时列出你最近的任务。statusPENDINGRUNNINGprogress 为百分比)、DONEFAILED(已安排重试)、DEADCANCELLED 之一。任务逐个执行,因此 queue_position 会告诉你前面还有几个。不属于你的引用会得到与不存在的引用完全相同的“未找到”回应,因此无法被枚举。

结果不会永久保留,这些限制值得在依赖它们之前了解清楚。只有最近完成的 20 个任务会保留完整结果;较旧的任务会被精简为摘要,并返回 result_pruned: true,意味着详细数据行已经消失,需要重新运行任务才能重新生成。所有内容都会在30 天后删除。回测和策略运行同样会写入你账户的回测历史记录,结果中会带有存储所用的 run_id

策略墙

正是这一部分,让把工具交给语言模型这件事本身变得可以站得住脚。您的规则会被一次性编译成 JSON,依照固定的 schema 进行校验,然后 在服务器端以确定性方式 对每一笔订单进行评估。模型从不参与评估这些规则,也看不到任何绕过它们的方法,更不可能被说服而放松规则 — 无论是您一时不耐烦提出的要求,还是通过网页或它碰巧读到的 Telegram 消息注入的提示词,都不行。违反规则会被硬性拒绝,并留下一条审计记录。

规则 类型 含义
max_risk_per_trade_pct数字,0–100单笔交易占账户比例的上限
max_order_size_usd数字 > 0订单价值的绝对上限
max_daily_loss_usd数字 > 0当日亏损超过此值即停止交易
max_open_positions整数并发持仓上限
leverage_cap数字,1–1000您自己设定的杠杆上限
venue_scope数组将 AI 限制在指定的交易场所内
symbol_whitelist数组只能交易这些交易品种
symbol_blacklist数组这些交易品种永远不会被交易
allowed_sides数组仅做多、仅做空,或两者皆可
notes字符串您自己的备注

未通过 schema 校验的已编译策略完全无法被激活。不存在部分有效的策略这种情况。

安全模型

默认使用模拟交易每个新密钥一开始都处于 paper 作用域,拥有 $5,000 的虚拟余额。触及真实资金需要一个明确、独立的操作。
止损为强制项如果既没有明确指定止损,也没有已保存的默认止损,订单会被拒绝。事后也无法将其移除。
幂等性每个写入类工具都要求客户端生成一个至少 8 个字符的密钥。重复请求会重放已存储的响应,而不会重复执行操作。
紧急停止开关POST /api/mcp/freeze 会立即停止一切;此后每个工具都会返回 user_frozen. /unfreeze 则可撤销该状态。
按密钥撤销撤销单个客户端而不影响其他客户端。已打开的事件流会在数秒内断开。
签名回执每一次操作都有 ed25519 签名,并按用户建立哈希链,可依据公钥进行验证。
审计日志每次调用都会记录工具名称、参数、结果和延迟,可在 GET /api/mcp/audit 以及面板中查看。
租户隔离工具无法接受用户 ID;身份信息只来自已认证的连接本身。
仅限交易的密钥您的交易所 API 密钥在创建时不带提现权限,并以 AES-256 加密方式存储。订单从固定的 AlgoVesta 交易 IP 发出,您需要在交易所将这些 IP 加入白名单。

关于杠杆,直白地说: AlgoVesta 不会对您自己的账户强加杠杆上限 — 这是您的交易所在做的事,而您可以通过 leverage_cap 策略规则来设定您自己的上限。通过 MetaTrader 5 进行的外汇交易在此路径下不加杠杆,仓位大小由手数决定。如果有人告诉您这里的平台“将杠杆上限设为 20 倍”,那描述的是一个并不存在的东西。

错误

代码 HTTP 发生时机
unauthorized401密钥缺失、无效或已被撤销
insufficient_scope401工具所需的作用域高于该密钥所持有的作用域
forbidden403该账户不允许此操作
user_frozen403紧急停止开关处于激活状态
policy_violation403某条规则拒绝了该订单;响应中会列出是哪一条
idempotency_conflict409同一个密钥被用不同的参数重复使用
validation_failed422参数格式错误或自相矛盾
rate_limited429调用次数过多; retry_after 会包含在内

业务层面的拒绝会以结构化结果的形式返回,而不是以传输层错误的形式,这样助手才能据此采取相应行动: VENUE_NOT_CONNECTED, ACCOUNT_REQUIRED, ACCOUNT_AMBIGUOUS, ACCOUNT_NOT_FOUND, POSITION_NOT_FOUND, MISSING_FIELDS, INVALID_SIDE, SL_REMOVAL_FORBIDDEN。错误信息绝不会泄露内部细节,也绝不会透露任何关于其他账户的信息。

速率限制

限制范围 限制
所有工具调用,按密钥计每分钟 60 次
place_order每分钟 10 次
replay_channel每小时 5 次(结果缓存 24 小时)
live 作用域确认邮件每分钟 1 次

实时事件

一个按租户隔离的服务器发送事件流可在 /mcp/events (OAuth)以及 /u/<key>/events (密钥链接)获取,具备 Last-Event-ID 重连能力,因此断开的连接会恢复而不是重新开始。事件类型: fill, policy_rejected, position_closed, sl_hit, tp_hit,以及 replay_progress (在频道回放期间出现)。

交易场所 — 16 家交易所和 MetaTrader 5

一个连接即可触达全部这些场所。只有当您在 AlgoVesta 中连接某个交易场所后,AI 才能使用它;若请求一个您尚未连接的场所,会返回 VENUE_NOT_CONNECTED 而不是靠猜测应付。

交易所 venue 取值 市场 是否需要 Passphrase
Binancebinance现货、合约
Bybitbybit现货、合约
OKXokx现货、合约
KuCoinkucoin现货、合约
Gate.iogateio现货、合约
Bitgetbitget现货、合约
Krakenkraken现货、合约
Coinbasecoinbase现货
BingXbingx现货、合约
Hyperliquidhyperliquid合约
Backpackbackpack现货、合约
HTXhtx现货、合约
BloFinblofin现货、合约
Phemexphemex现货、合约
WOO Xwoo现货、合约是(需要 Application ID)
CoinExcoinex现货、合约
MetaTrader 5(外汇、贵金属、指数)mt5手数,不加杠杆路径经纪商登录信息
模拟引擎paper$5,000 虚拟资金

其中六家 — Binance、Bybit、OKX、Gate.io、KuCoin 和 Bitget — 已经在合约和现货上用真实资金完成了端到端验证,确认止损和止盈确实存在于交易所本身,并且与记录的数值完全一致。每家交易所都有自己的特殊之处,这些差异是刻意为之,而不是遗漏:Bybit 和 Bitget 在现货上不接受第二条止盈腿,OKX 现货通过原始 API 路由,以防止现金账户被悄悄转为保证金账户,Binance 现货在买入前会强制执行最低名义金额,而 KuCoin 的市价买入以成本模式下单。

现货和合约始终被分开处理。同一个交易品种在这两个市场中分别是独立的一行、独立的价格数据源和独立的键 — 二者绝不会互相混淆。

MetaTrader 5,零安装

对于外汇交易,您不需要安装任何东西。无需租用 VPS,无需在自己的机器上保持 MetaTrader 终端运行,无需自行挂载 Expert Advisor,也无需购买第三方桥接账户。AlgoVesta 在自己托管的服务器上运行 MetaTrader 5 终端,并使其全天候与您的经纪商保持连接。您只需输入一次账户凭据,此后您的 AI 助手就可以交易该账户。返回给助手的持仓数据会与终端进行核对,当无法核对时,工具会明确说明这一点,而不是暗示账户为空。

路线图 — 全球股票

计划中 — 尚未上线

通过 Interactive Brokers(IBKR)进行全球股票交易目前处于计划阶段,目标覆盖 170 只全球股票 ,届时将可通过与加密货币和外汇相同的 MCP 连接访问。这是一个路线图项目,目前 尚未上线;本页除本段之外没有其他内容描述该功能,当前也没有任何工具可以交易股票。上线后,它将以额外的 venue 取值形式出现在相同的工具、相同的策略墙和相同的回执体系之下。

实测延迟

这些是实测数据,不是营销数字。

阶段 实测值
请求接收与解析17–67 毫秒(中位数 38 毫秒)
MetaTrader 5 端到端约 1 秒(实测 849 毫秒;平仓为 702 毫秒)
加密货币交易所端到端约 3 秒(实测 2,785 毫秒)
模拟引擎中位数 318 毫秒 — 无需交易所往返

花在您的 AI 客户端内部的时间 — 模型思考、您确认 — 并不包含在内,而这部分往往占大头。本服务器并非低延迟执行场所,也从未以此宣传。

面板 REST 端点

所有 AI 不能、也不应该自行完成的事情,都放在您正常登录会话的背后。

POST   /api/mcp/keys                            create a key (live requires 2FA)
GET    /api/mcp/keys                            list keys
DELETE /api/mcp/keys/{key_id}                   revoke a key
POST   /api/mcp/live-code                       send the live-scope confirmation code
POST   /api/mcp/freeze  |  /api/mcp/unfreeze    kill switch
GET    /api/mcp/status                          connection status
GET    /api/mcp/policies                        list policies
POST   /api/mcp/policies/compile                compile without activating
POST   /api/mcp/policies/{id}/activate          activate
POST   /api/mcp/policies/{id}/deactivate        deactivate
GET    /api/mcp/audit                           audit log
GET    /api/mcp/receipts                        receipts
GET    /api/mcp/receipts/{receipt_id}/verify    verify one receipt
GET    /api/mcp/pubkey                          receipt public key
GET    /api/mcp/paper  |  POST /api/mcp/paper/reset

您需要具备什么

MCP 连接本身是产品的一部分,不单独销售。实际上限制您的是 AI 所要触及的对象:模拟交易只需要一个账户,而实盘交易则需要一个有效的付费套餐,以及该套餐允许连接的账户 — 而使用真实资金进行 MetaTrader 5 实盘交易,还需要您为该账户额外明确开启授权。关于交易所密钥数量和 MetaTrader 账户数量的套餐限制,列在 定价页面上。在这些限制真正对您产生影响之前,您可以先用 $5,000 的模拟余额尝试所有功能。

常见问题

可以,只要您给它一个具有 live 作用域的密钥即可,而这个作用域只有在完成第二身份验证因素之后才会被授予。在此之前,同一个助手会使用完全相同的工具,在 $5,000 的模拟余额上运行,因此您可以在任何真实资金可被触及之前,先把整个流程演练一遍。
不需要,而且您无论使用什么工具都不应该这样做。您的 API 密钥始终保留在 AlgoVesta 内部,以加密方式存储,创建时就不带提现权限。助手始终只持有一条 MCP 链接,它有作用域限制、有速率限制、经过策略检查、可单独撤销,并且无法用来将资金转出交易所。
它可以让模型尝试这样做,但无法让这次尝试成功。规则会被编译成 JSON,在请求离开模型之后于服务器端进行评估,因此说服没有任何可乘之机。违规操作会被拒绝,并写入审计日志,您可以在其中准确看到究竟发生了什么尝试。
不会有任何操作被执行两次。每个写入类工具都要求提供幂等密钥,重复使用同一个密钥只会返回已存储的响应,而不会再次执行操作。这也正是客户端在网络超时后重试能够保持安全的原因。
可以,这正是它的设计初衷。一个连接就能覆盖您已连接的所有交易所账户和所有 MetaTrader 5 账户,而 get_portfolio_context 一次调用就能返回全部账户信息。当您在同一个市场中持有多个账户时, account 参数就会变为必填项,存在歧义的请求会被拒绝,而不会被发送到某个默认账户。
现在不会了,而这曾经是一个真实存在的 bug,并非假设情况。这些字段过去是必填项,这迫使模型不得不臆造数值,实测显示客户的设置曾被悄悄覆盖。现在助手被指示将未说明的字段留空,由服务器用您面板中保存的设置进行填充,并报告使用了哪些设置。
都不需要。AlgoVesta 在自己托管的服务器上运行 MetaTrader 5,与您的经纪商保持 24/7 全天候连接。您只需输入一次账户信息;无需安装、无需租用,也无需重启任何东西。
不是。这里没有任何来自他人的操作被复制。您指挥的是自己的助手,每一笔订单都会依据您自己的规则进行核查,事后您也可以通过审计日志和签名回执链来检查和验证每一次操作。
使用面板中的紧急停止开关,或 POST /api/mcp/freeze。此后每个工具都会返回 user_frozen ,直到您解除冻结为止。如果只想切断单个客户端,只需撤销那一个密钥即可 — 其他密钥仍会正常工作。
因为这些产品不提供自定义 MCP 连接器。Gemini 只在 CLI 中支持,而 ChatGPT 只在付费套餐中通过开发者模式提供。这两者都是 AI 产品自身的限制,适用于所有 MCP 服务器,而不仅仅是这一个。Claude、Claude Code 和 Cursor 没有这种限制。
可以。每次操作都会返回一份 ed25519 签名的回执,并与前一份回执建立哈希链关联。您可以用 verify_receipt 工具进行验证,或者独立地依据 /mcp/receipts/pubkey。篡改一份旧回执会破坏其后所有回执的链条,这正是篡改行为能被检测到的原因所在。
不能,而且这并不是因为某个可能被配置错误的权限检查。工具根本就没有任何用于表示身份的参数 — 账户信息完全来自已认证的连接本身,因此攻击者或产生混淆的模型都不存在任何可以提供的参数来触及他人的账户。
目前还不能。加密货币和 MetaTrader 5 外汇现已上线。通过 Interactive Brokers 进行、目标覆盖 170 只股票的全球股票交易目前处于计划阶段,未来将以额外的交易场所取值形式,出现在相同的工具和相同的策略墙之下。

将 AI 助手连接到您的账户

从 $5,000 的模拟余额开始。无需信用卡,无需安装任何东西,实盘边界会一直保持关闭,直到您主动将其打开。

创建免费账户 查看总览

相关内容: 面向 AI 助手的 MCP · MCP 交易服务器:Claude 与 ChatGPT 接入 16 家交易所 + MT5 · 支持的交易所 · MetaTrader 5 外汇 · TradingView 自动化 · 什么是 MCP 交易服务器 · 安全性 · 定价.

交易存在风险。自动化并不能消除风险,AI 助手提供的也不是投资建议。请先从模拟交易开始。