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 签名的回执。
Model Context Protocol 是一个用于将 AI 助手连接到外部系统的开放标准。大多数与交易相关的 MCP 服务器只是将行情数据流式传输到聊天窗口中。而这一个 会执行交易:它是一个订单路由层,前面有一个确定性的风控引擎,AI 只是调用方 — 从来不是决策者。
快速开始
设置只需三步,无需代码。整个流程都在 MCP 连接 标签页中完成,位于您的 AlgoVesta 面板内。
打开 MCP 连接 标签页并生成一个密钥。新密钥默认使用 paper 作用域。完整链接只会显示一次 — 请立即复制。
将该链接作为自定义 MCP 服务器粘贴到您的 AI 客户端中。没有任何 API 密钥离开 AlgoVesta,无需代码,无需本地安装。
直接和它对话。“我的投资组合表现如何?” “模拟一笔 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 Code | claude mcp add --transport http | 命令行工具。适用于脚本化或可重复执行的工作流程。 |
| Cursor | mcp.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_code 和 refresh_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_order、close_position 和 cancel_order — 还在其注解中被标记为破坏性操作。
| 工具 | 作用域 | 类型 | 用途 |
|---|---|---|---|
get_portfolio_context | read | 只读 | 一次调用获取所有已连接账户 |
get_market_price | read | 只读 | 实时价格,并报告数据新鲜度 |
simulate_order | read | 只读 | 试运行,包含策略裁定结果 |
place_order | paper / live | 破坏性 | 开仓 |
close_position | paper / live | 破坏性 | 全部或部分平仓 |
modify_position | paper / live | write | 调整止损和止盈 |
list_open_orders | read | 只读 | 挂单中的限价单 |
cancel_order | paper / live | 破坏性 | 取消一笔挂单 |
compile_policy | read | 只读 | 将自然语言规则转换为策略预览 |
verify_receipt | read | 只读 | 校验签名与哈希链 |
replay_channel | read | 只读 | 用您的规则对某个 Telegram 频道进行回测 |
get_trade_history | read | 只读 | 加密货币、MT5 和模拟账户中的已平仓交易与表现 |
compare_venues | read | 只读 | 根据实测价格和点差对已连接的交易所进行排名 |
list_strategies | read | 只读 | TradingView 策略;webhook URL 绝不会被返回 |
create_strategy | paper / live | write | 新建策略,真实资金执行始终处于关闭状态 |
update_strategy | paper / live | write | 策略设置;auto_trade 会被拒绝 |
backtest_my_signals | read | read-only | 用不同设置重放你自己的历史信号(排队任务) |
simulate_policy | read | read-only | 把风控策略套用到你实际平仓的交易上(排队任务) |
import_tradingview_backtest | read | read-only | 用真实手续费和滑点重新计算 TradingView 导出(排队任务) |
get_job_status | read | read-only | 排队任务的进度与结果 |
get_portfolio_context
不接受任何参数。返回属于该已认证密钥的所有交易所账户、所有 MetaTrader 5 账户以及模拟账户的标准化视图 — 仅此而已。正是这个调用,让“我现在情况如何?”从十六个问题变成了一个问题。
有两个字段比其余字段更为关键。对于加密货币账户, balance 和 equity 描述的是 仅限合约钱包;现货资金则在 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_valid 和 chain_valid;只有两者都为真时,该操作才算通过验证。回执采用 ed25519 签名,并按用户进行哈希链式关联,因此篡改早前的一份回执会破坏其后所有回执,并使 chain_valid 变为 false。公钥发布于 /mcp/receipts/pubkey,因此您可以独立验证,而无需信任本端点。较早的 HMAC 时代的回执会返回 legacy=true.
replay_channel
必填: 可选: 必填: 没有参数。返回您的 TradingView 策略及其设置、 可选: 必填: 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_pnl 为 null,转而提供 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
plan_limit 和 can_create_more。auto_trade 会按策略分别报告,以便助手能告诉您哪些策略已启用真实资金。webhook URL、demo URL 和 HMAC secret 会从响应中剔除 — 只暴露 webhook_url_configured 和 has_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_trade、status 和 ip_allowlist 会被拒绝,并在 refused_fields 中返回;删除只能在面板中进行。开启 reverse_enabled 会返回一个 warning,因为从那时起,BUY 信号会开出 SHORT 仓位。
backtest_my_signals
可选:days(1–90)、source、symbols、margin_usd、leverage、sl_pct、tp_pct、max_hold_minutes、taker_fee_bps、partial_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_bps、slippage_bps、leverage。接收你从 TradingView 策略测试器(List of Trades)导出的 CSV,并按真实成本重新计算:进场和出场两端的吃单手续费与实测滑点。Pine Script 从不执行也从不解释 — 只重新计算你导出的交易清单 — 价格保持 TradingView 报告的原样。缺少数量列的行无法计入手续费,因而保持乐观,其数量会被报告。返回 job_ref。
get_job_status
可选:job_ref。给出引用时返回该任务的状态,完成后返回其结果;不带参数时列出你最近的任务。status 为 PENDING、RUNNING(progress 为百分比)、DONE、FAILED(已安排重试)、DEAD 或 CANCELLED 之一。任务逐个执行,因此 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 | 发生时机 |
|---|---|---|
unauthorized | 401 | 密钥缺失、无效或已被撤销 |
insufficient_scope | 401 | 工具所需的作用域高于该密钥所持有的作用域 |
forbidden | 403 | 该账户不允许此操作 |
user_frozen | 403 | 紧急停止开关处于激活状态 |
policy_violation | 403 | 某条规则拒绝了该订单;响应中会列出是哪一条 |
idempotency_conflict | 409 | 同一个密钥被用不同的参数重复使用 |
validation_failed | 422 | 参数格式错误或自相矛盾 |
rate_limited | 429 | 调用次数过多; 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 |
|---|---|---|---|
| Binance | binance | 现货、合约 | 否 |
| Bybit | bybit | 现货、合约 | 否 |
| OKX | okx | 现货、合约 | 是 |
| KuCoin | kucoin | 现货、合约 | 是 |
| Gate.io | gateio | 现货、合约 | 否 |
| Bitget | bitget | 现货、合约 | 是 |
| Kraken | kraken | 现货、合约 | 否 |
| Coinbase | coinbase | 现货 | 否 |
| BingX | bingx | 现货、合约 | 否 |
| Hyperliquid | hyperliquid | 合约 | 否 |
| Backpack | backpack | 现货、合约 | 否 |
| HTX | htx | 现货、合约 | 否 |
| BloFin | blofin | 现货、合约 | 是 |
| Phemex | phemex | 现货、合约 | 否 |
| WOO X | woo | 现货、合约 | 是(需要 Application ID) |
| CoinEx | coinex | 现货、合约 | 否 |
| 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 的模拟余额上运行,因此您可以在任何真实资金可被触及之前,先把整个流程演练一遍。get_portfolio_context 一次调用就能返回全部账户信息。当您在同一个市场中持有多个账户时, account 参数就会变为必填项,存在歧义的请求会被拒绝,而不会被发送到某个默认账户。POST /api/mcp/freeze。此后每个工具都会返回 user_frozen ,直到您解除冻结为止。如果只想切断单个客户端,只需撤销那一个密钥即可 — 其他密钥仍会正常工作。verify_receipt 工具进行验证,或者独立地依据 /mcp/receipts/pubkey。篡改一份旧回执会破坏其后所有回执的链条,这正是篡改行为能被检测到的原因所在。相关内容: 面向 AI 助手的 MCP · MCP 交易服务器:Claude 与 ChatGPT 接入 16 家交易所 + MT5 · 支持的交易所 · MetaTrader 5 外汇 · TradingView 自动化 · 什么是 MCP 交易服务器 · 安全性 · 定价.
交易存在风险。自动化并不能消除风险,AI 助手提供的也不是投资建议。请先从模拟交易开始。