交易机器人 API 与面向 AI 的 MCP
为 Binance USD-M Futures 编写的机器人无需重写即可在 BuyCrypt 模拟账户上运行:只需更换 API 地址。而 Claude、ChatGPT 和 Cursor 通过 BuyCrypt MCP 服务器可以看到锦标赛、交易员排名以及您的模拟账户。
{ "symbol": "BTCUSDT", "price": "…" }
机器人负责交易,助手负责回答问题。
交易机器人 API
请求、签名和响应格式与 Binance USD-M Futures 相同。机器人在您的 BuyCrypt 模拟账户上下单:价格是市场价,资金是模拟的。
- 使用相同的库:binance-futures-connector,或基于 requests 的自有代码
- REST、基于 listenKey 的私有 WebSocket,数据流中包含 K 线和标记价格
- 密钥在应用中创建,只能用于一个模拟账户
面向 AI 助手的 MCP
在 Claude、ChatGPT 或 Cursor 的设置中填入一个地址,当您询问时,助手就会自动获取 BuyCrypt 的数据。
- 锦标赛、奖金、参赛者排名、各币种领先者
- 交易员护照:满分 1000 的评分、等级、交易风格
- 您的模拟账户:余额、持仓、订单(使用只读密钥)
MCP:将 BuyCrypt 连接到 Claude、ChatGPT 和 Cursor
MCP 是一项开放标准,AI 助手借助它连接外部数据和工具。BuyCrypt 服务器向助手提供平台的实时数据。无需注册,也无需密钥,只有读取您的模拟账户时才需要密钥。
https://buycrypt.com/mcp
- 打开 claude.ai 或 Claude Desktop 应用 → Customize → Connectors。
- 点击 + Add → Add custom connector。
- 名称填 BuyCrypt,地址填 https://buycrypt.com/mcp,然后点击 Continue。
- 在 Authentication 部分选择 No sign in,然后点击 Add。
所有 Claude 套餐都支持自定义连接器,免费版可添加一个。在 Team 和 Enterprise 团队中,连接器由组织所有者在 Organization settings → Connectors 中添加。如需连接您的模拟账户,请在同一窗口的 Request headers 区块中添加密钥,具体方法。
- 在终端中执行一条命令:
claude mcp add --transport http buycrypt https://buycrypt.com/mcp
检查:claude mcp list,列表中会出现 buycrypt。添加 --scope user 可让该服务器在所有项目中可用。
- 在浏览器中打开 chatgpt.com/plugins。
- 点击 + → Add custom MCP server。
- 名称填 BuyCrypt,在 Connection 部分选择公开地址,并填入 https://buycrypt.com/mcp。
- Authentication 选择 No authentication。确认提示 I understand and want to continue,然后点击 Create。
ChatGPT 中的自定义 MCP 服务器只能在网页版中添加,并非所有套餐都支持。如果找不到该选项,说明套餐或工作区管理员关闭了它。ChatGPT 无法连接您的模拟账户:它不会把密钥传给服务器。这种情况下可以使用 Claude、Claude Code 和 Cursor。
点击按钮即可打开已配置好的 Cursor。或者手动操作:添加到 ~/.cursor/mcp.json(适用于所有项目)或项目根目录的 .cursor/mcp.json:
{
"mcpServers": {
"buycrypt": {
"url": "https://buycrypt.com/mcp"
}
}
}任何支持 Streamable HTTP 的客户端都可以使用:填入地址 https://buycrypt.com/mcp,无需授权。如果客户端只能运行本地服务器(stdio),可以通过桥接工具 mcp-remote 连接,需要 Node.js:
{
"mcpServers": {
"buycrypt": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://buycrypt.com/mcp"]
}
}
}不通过助手检查服务器:npx @modelcontextprotocol/inspector --cli https://buycrypt.com/mcp --transport http --method tools/list
服务器能做什么
platform_overview当前有哪些锦标赛在进行、下一场何时开始、锦标赛中有多少交易员、最近的奖金。
无需密钥list_tournaments进行中、即将开始和已结束的锦标赛:币种、计分方式、奖池、报名费、参赛人数。
无需密钥get_tournament单场锦标赛:各名次奖金以及带成绩的参赛者排名。
无需密钥leaderboard某币种 7、30 或 90 天的领先者,与「顶级交易员」页面一致。
无需密钥trader_profile按昵称查询交易员护照:满分 1000 的评分、等级、五项评估、风格。仅限公开资料。
无需密钥market_ticker永续合约(例如 BTCUSDT)的价格和 24 小时涨跌幅。
无需密钥demo_account您模拟账户的余额、保证金和未平仓仓位。
您的密钥demo_open_orders您模拟账户的未成交订单。
您的密钥demo_recent_results模拟账户的近期结果:已平仓交易的盈亏和手续费。
您的密钥没有任何工具会下单、报名锦标赛或转移资金,服务器只读取数据。
可以问助手什么
点击问题即可复制。
助手眼中的 BuyCrypt
下面是服务器 https://buycrypt.com/mcp 此刻的真实响应。助手获取的就是这些数据,并用自己的话复述。
在助手中查看您的模拟账户
demo_account、demo_open_orders 和 demo_recent_results 这三个工具读取您的模拟账户。为此,客户端通过两个请求头把您的 API 密钥传给服务器:X-BuyCrypt-Api-Key 和 X-BuyCrypt-Api-Secret。请为助手创建只读密钥:它能看到余额、持仓和订单,但 BuyCrypt 不会凭它执行下单、撤单或调整杠杆(返回 403)。如何获取。
claude mcp add --transport http buycrypt https://buycrypt.com/mcp \ --header "X-BuyCrypt-Api-Key: YOUR_API_KEY" \ --header "X-BuyCrypt-Api-Secret: YOUR_API_SECRET"
{
"mcpServers": {
"buycrypt": {
"url": "https://buycrypt.com/mcp",
"headers": {
"X-BuyCrypt-Api-Key": "YOUR_API_KEY",
"X-BuyCrypt-Api-Secret": "YOUR_API_SECRET"
}
}
}
}- 添加连接器时(Customize → Connectors → Add custom connector),填好地址后选择 No sign in。
- 在 Request headers 区块中添加两个请求头:X-BuyCrypt-Api-Key 和 X-BuyCrypt-Api-Secret,填入您的值。
- 点击 Add。如果连接器已在没有密钥的情况下添加过,请删除后带上请求头重新添加。
只读
MCP 服务器不会下单,也不会撤单。它需要密钥只是为了读取余额、持仓和订单。即使只读密钥落入他人之手,也无法用它交易。
一个模拟账户
BuyCrypt 密钥只能用于为其创建的那个模拟账户,无法访问真实的交易所账户。
单独的密钥
请为助手创建单独的只读密钥。密钥只发送到 buycrypt.com,服务器不会保存它,也不会写入日志。您可以在创建它的地方撤销它。
兼容 Binance USD-M Futures 的 API
路径、HMAC-SHA256 签名、参数和响应格式都与 Binance USD-M Futures 相同。唯一的区别是:订单按市场价在您的 BuyCrypt 模拟账户上执行,不会发送到真实交易所。这样就能在真实市场上检验策略,而不拿资金冒险。
如何开始
- 账户。通过 Google 或 Apple 登录网页终端或 BuyCrypt 应用。模拟账户会立即创建。
- 密钥。在网页终端或应用中:个人资料 → API 密钥 → 您的模拟账户 → Bot API keys 区块 → Generate API key。复制 apiKey 和 apiSecret:apiSecret 只显示一次。如用于 AI 助手或监控,网页终端中有 Generate read-only key (for MCP) 按钮。
- 地址。在您的库中把 https://fapi.binance.com 换成 https://api.buycrypt.com。路径 /fapi/v1/… 保持不变。
- 检查。查询余额 GET /fapi/v2/balance:响应中会显示您模拟账户的 USDT。
注意事项
- 仅支持 USDT 合约和单向持仓模式(one-way),不支持双向持仓模式。
- 行情价格请使用 /fapi/v1/ticker/price。新版库调用的路径 /fapi/v2/ticker/price 暂不支持。
- 公开数据流推送 @kline_1m(每 5 秒)和 @markPrice(每秒)。
- recvWindow 默认 5,000 毫秒,最长 60,000 毫秒。请通过 /fapi/v1/time 校准时钟。
- 使用交易 API 密钥的账户会在应用排行榜中带有 🤖 标志:所有人都能看到这个账户由程序交易。
- 密钥权限:普通密钥(READ_TRADE)可读取和交易,只读密钥(READ)仅限 GET 请求和 listenKey。用它下单、撤单、调整杠杆或保证金,会返回 HTTP 403 和错误码 -2015。
import os from binance.um_futures import UMFutures client = UMFutures( key=os.environ["BUYCRYPT_API_KEY"], # BuyCrypt 应用中的密钥 secret=os.environ["BUYCRYPT_API_SECRET"], base_url="https://api.buycrypt.com", # 唯一需要修改的一行 ) print(client.balance()) # 模拟账户的 USDT client.change_leverage(symbol="BTCUSDT", leverage=5) order = client.new_order(symbol="BTCUSDT", side="BUY", type="MARKET", quantity=0.002) print(order["orderId"], order["status"]) print(client.get_position_risk(symbol="BTCUSDT"))
import hashlib, hmac, os, time, urllib.parse, requests API = "https://api.buycrypt.com" KEY = os.environ["BUYCRYPT_API_KEY"] SECRET = os.environ["BUYCRYPT_API_SECRET"] def signed(method, path, **params): params["timestamp"] = int(time.time() * 1000) query = urllib.parse.urlencode(params) sig = hmac.new(SECRET.encode(), query.encode(), hashlib.sha256).hexdigest() r = requests.request(method, f"{API}{path}?{query}&signature={sig}", headers={"X-MBX-APIKEY": KEY}, timeout=10) r.raise_for_status() return r.json() print(signed("GET", "/fapi/v2/balance")) print(signed("POST", "/fapi/v1/order", symbol="BTCUSDT", side="BUY", type="LIMIT", timeInForce="GTC", quantity=0.002, price=60000))
# 公开数据:无需密钥 curl "https://api.buycrypt.com/fapi/v1/ticker/price?symbol=BTCUSDT" curl "https://api.buycrypt.com/fapi/v1/klines?symbol=ETHUSDT&interval=1h&limit=3" # 模拟账户余额:签名请求 KEY="YOUR_API_KEY"; SECRET="YOUR_API_SECRET" Q="timestamp=$(date +%s)000" SIG=$(printf '%s' "$Q" | openssl dgst -sha256 -hmac "$SECRET" | sed 's/^.* //') curl -H "X-MBX-APIKEY: $KEY" "https://api.buycrypt.com/fapi/v2/balance?$Q&signature=$SIG"
接口
REST 基础地址为 https://api.buycrypt.com。签名接口需要请求头 X-MBX-APIKEY、timestamp 和 signature。
市场数据 无需密钥
账户与仓位 需签名
交易 需签名
WebSocket 数据流
限额与错误
您的机器人的订阅者(测试版)
机器人可以注册为公开机器人:用户在应用中点击「连接」,BuyCrypt 会为其开设一个带 1,000 模拟 USDT 的单独模拟账户,并发放仅限该账户的密钥。密钥通过 subscription.created 事件发送到您的 webhook,机器人就在订阅者的模拟账户上交易。用户断开连接时,仓位平仓,密钥失效,您会收到 subscription.disconnected。
机器人拿不到用户的真实账户和交易所密钥,只能拿到单独模拟账户的密钥。
注册方式:发送签名的 POST /fapi/v1/bot/profiles,参数为 slug、displayName、webhookUrl(仅限 HTTPS)和 webhookSecret(至少 32 个字符);审核通过前,机器人状态为 PENDING_REVIEW。每个事件都有签名:请求头 X-BuyCrypt-Signature = HMAC-SHA256(webhookSecret, timestamp + "." + body),时间位于 X-BuyCrypt-Timestamp。投递最多重试 6 次(立即、10 秒、30 秒、2 分钟、10 分钟、1 小时后);连续 10 次投递失败后 webhook 会被停用,如需重新启用请联系支持。
import hashlib, hmac, os, time WEBHOOK_SECRET = os.environ["BUYCRYPT_WEBHOOK_SECRET"] def verify(headers, raw_body: bytes) -> bool: ts = int(headers["X-BuyCrypt-Timestamp"]) if abs(time.time() * 1000 - ts) > 5 * 60 * 1000: # 超过 5 分钟:拒绝 return False expected = hmac.new(WEBHOOK_SECRET.encode(), f"{ts}.".encode() + raw_body, hashlib.sha256).hexdigest() return hmac.compare_digest(expected, headers["X-BuyCrypt-Signature"])
BuyCrypt 密钥只能访问模拟账户
绑定一个账户
API 密钥为特定的模拟账户创建,只能用于该账户。无法通过此 API 访问交易所的真实账户。只读密钥在该账户上同样不能交易。
secret 只显示一次
请把密钥和 secret 存放在环境变量或密钥管理器中,不要写在代码里,也不要放进公开仓库。
一秒撤销
在网页终端或应用中,于同一个「Bot API keys」区块点击「Revoke」:使用该密钥的所有请求将立即收到 401 错误。
常见问题
机器人用真实资金交易吗?
不是。BuyCrypt API 在您的模拟账户上执行订单:价格是市场价,余额是模拟 USDT。订单不会发送到交易所,因此可以零风险检验策略。
需要为 BuyCrypt 重写机器人吗?
通常不需要。如果机器人对接的是 Binance USD-M Futures,把基础地址换成 https://api.buycrypt.com,并填入 BuyCrypt 密钥即可。路径、签名和响应格式都相同。请确认机器人没有使用双向持仓模式和 /fapi/v2/ticker/price 路径。
在哪里获取 API 密钥?
在网页终端或 BuyCrypt 应用中:个人资料 → API 密钥 → 您的模拟账户 → Bot API keys → Generate API key。用于 MCP 和 AI 助手时,请在网页终端中选择「Generate read-only key (for MCP)」:这种密钥能查看账户,但不能交易。apiSecret 只显示一次,请立即保存。也可以在同一位置撤销密钥。
什么是 MCP,有什么用?
MCP(Model Context Protocol)是 AI 助手连接外部数据的开放标准。连接服务器 https://buycrypt.com/mcp 后,您可以向 Claude、ChatGPT 或 Cursor 询问锦标赛、领先者和交易员护照,助手会根据 BuyCrypt 的实时数据回答。
连接 MCP 需要注册吗?
不需要。锦标赛、排行榜、交易员护照和价格无需密钥即可查看。只有读取您模拟账户的三个工具需要密钥,只读密钥就足够了。
AI 助手可以通过 MCP 交易吗?
不可以。服务器的九个工具全部只读:不会下单或撤单,不会报名锦标赛,也不会转移资金。
机器人开发者会拿到我的交易所密钥吗?
不会。当您连接他人的机器人时,BuyCrypt 会为它开设单独的模拟账户,并只发放该账户的密钥。您的真实账户和交易所密钥不会交给机器人。数据保护详情请见「安全」页面。