关于 openmm-mcp
openmm-mcp 是供 AI Agent 使用的 MCP 服务,提供交易所与 Cardano DEX 数据、账户访问、交易和网格策略功能。本地部署支持加密凭据保险库,也可使用托管服务。
主要功能
- 01交易所行情工具
- 02账户余额与订单工具
- 03下单与撤单
- 04Cardano DEX 价格与池发现
- 05网格策略控制
- 06加密凭据保险库
适用场景
- 01查询交易所价格与订单簿
- 02查看余额和未完成订单
- 03提交或取消交易所订单
- 04启动或查看网格策略
MCP 相关
向 MCP 客户端提供行情、账户、交易、Cardano DEX 和策略工具。本地客户端通过共享套接字连接,也提供托管服务。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.openmm.io/mcpclaude mcp add --transport http qbt-labs-openmm https://mcp.openmm.io/mcp{"mcpServers":{"qbt-labs-openmm":{"type":"http","url":"https://mcp.openmm.io/mcp"}}}在 Cursor 中打开{"servers":{"qbt-labs-openmm":{"type":"http","url":"https://mcp.openmm.io/mcp"}}}在 VS Code 中打开{"mcpServers":{"qbt-labs-openmm":{"type":"http","url":"https://mcp.openmm.io/mcp"}}}{"mcpServers":{"qbt-labs-openmm":{"serverUrl":"https://mcp.openmm.io/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
13| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| symbol | string | 是 | 交易对符号(例如:BTC/USDT、INDY/USDT) |
| exchange | string | 是 | 要查询的交易所。支持:mexc、gateio、bitget、kraken |
详细介绍
@qbtlabs/openmm-mcp
OpenMM 的 MCP 服务 — 通过任意 MCP 客户端向 AI Agent 提供市场数据、账户、交易和策略工具。
两种使用方式
| 选项 | 适用场景 | API 密钥 | 付款 |
|---|---|---|---|
| 本地(npm) | 完全掌控,使用自己的密钥 | 加密保险库 | 免费 |
| 托管(mcp.openmm.io) | 无需设置,按使用量付费 | 公共数据无需密钥 | x402 USDC |
本地设置
前提条件: Node.js 20 或更高版本。
1. 安装并配置
npm install -g @qbtlabs/openmm-mcp
openmm-mcp --setup
设置向导会为你的客户端(Claude Desktop、Claude Code、Cursor、Windsurf)写入正确的 MCP 配置。配置文件中不会存储凭据 — 仅包含套接字路径。
2. 初始化加密保险库
openmm-init
这会在 ~/.openmm/vault.enc 创建一个加密保险库,其中包含你的钱包密钥和交易所 API 凭据。你需要设置密码、生成(或导入)钱包,并可选择添加交易所密钥。
3. 启动服务
openmm serve
输入一次保险库密码。统一套接字会在 /tmp/openmm.sock 启动 — 所有 MCP 客户端都连接到这里。任何配置文件中都不会存有凭据。
手动配置
如果你想直接编辑配置文件,而不是使用 --setup:
| 客户端 | 配置文件 |
|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Code | ~/.claude.json |
| Cursor | .cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
{
"mcpServers": {
"openmm": {
"command": "node",
"args": ["/path/to/openmm-mcp/dist/index.js"],
"env": {
"MCP_TRANSPORT": "stdio",
"OPENMM_SOCKET": "/tmp/openmm.sock",
"PAYMENT_SERVER": "https://mcp.openmm.io",
"X402_TESTNET": "true"
}
}
}
}
将 /path/to/openmm-mcp 替换为实际安装路径。对于 Claude Desktop,请使用 node 的完整路径(例如通过 which node 获取),以避免 nvm/PATH 问题。
提示: 改为运行
openmm-mcp --setup— 它会自动写入正确的绝对路径。
无需 API 密钥。无需私钥。无需密码。只需套接字路径。
不使用保险库(快速开始)
你可以跳过保险库,直接在 env 块中传入 API 密钥:
{
"mcpServers": {
"openmm": {
"command": "npx",
"args": ["@qbtlabs/openmm-mcp"],
"env": {
"MEXC_API_KEY": "your_key",
"MEXC_SECRET": "your_secret"
}
}
}
}
保险库可以增强所有使用场景的安全性 — 配置文件、进程环境或客户端内存中都不会存有任何敏感信息。
客户端兼容性
| 客户端 | 不使用保险库 | 使用保险库 |
|---|---|---|
| Claude Desktop | 环境变量中的 API 密钥 | 仅 OPENMM_SOCKET |
| Claude Code | 环境变量中的 API 密钥 | 仅 OPENMM_SOCKET |
| Cursor | 环境变量中的 API 密钥 | 仅 OPENMM_SOCKET |
| Windsurf | 环境变量中的 API 密钥 | 仅 OPENMM_SOCKET |
所有客户端都连接到同一个运行中的 openmm serve — 一个保险库、一个套接字,支持任意客户端。
使用 x402 付款的托管服务
连接到 mcp.openmm.io — 获取公共数据无需本地安装。
使用 Base 上的 USDC 按工具调用付费。
工作原理
AI Agent (Claude / Cursor / Windsurf)
│ MCP stdio — no keys in config
▼
MCP Client Process
(reads OPENMM_SOCKET — credentials never here)
│ Unix socket /tmp/openmm.sock (mode 0600)
▼
openmm serve — unified vault process
┌──────────────────────────────────┐
│ ~/.openmm/vault.enc │
│ AES-256-GCM + PBKDF2 │ ← wallet key + exchange keys, one vault
│ │ │
│ Policy Engine │ ← maxPerTx, maxPerDay, allowedChains
│ (checked before key is touched) │
│ │ │
│ signAndWipe() │ ← key used inline, wiped from memory
└──────────────────────────────────┘
│ EIP-3009 signature only
▼
mcp.openmm.io → x402 verification → Base L2 settlement
安全属性
| 属性 | 方式 |
|---|---|
| 静态加密密钥 | 使用 AES-256-GCM + PBKDF2,存储在 ~/.openmm/vault.enc |
| 密钥绝不会出现在客户端内存中 | MCP 进程只持有套接字路径 |
| 密钥绝不会出现在配置文件中 | 配置中任何位置都没有 API 密钥或私钥 |
| 进程隔离 | 签名在 openmm serve 中进行,而不是在 AI Agent 进程中进行 |
| 策略执行 | 在访问私钥前检查支出限额 |
| 内存安全 | signAndWipe() —— 密钥仅使用一次,随后立即离开作用域 |
支付流程
- Agent 调用工具
- 服务返回带有价格的
402 Payment Required openmm serve对 EIP-3009 授权进行签名(无需 Gas——不需要 ETH)- 服务在链上提交付款并返回数据
工具定价
| 类别 | 工具 | 价格(USDC) |
|---|---|---|
| 免费 | list_exchanges | $0.00 |
| 读取 | get_ticker、get_orderbook、get_trades、get_ohlcv、get_balance、list_orders、get_cardano_price、discover_pools、get_strategy_status | $0.001 |
| 写入 | create_order、cancel_order、cancel_all_orders、start_grid_strategy、stop_strategy | $0.01 |
可用工具(15)
| 工具 | 描述 | 参数 |
|---|---|---|
| 市场数据 | ||
list_exchanges | 列出支持的交易所 | — |
get_ticker | 实时价格、买价/卖价、价差、交易量 | exchange、symbol |
get_orderbook | 订单簿深度(买单/卖单) | exchange、symbol、limit? |
get_trades | 最新交易及买入/卖出摘要 | exchange、symbol、limit? |
get_ohlcv | OHLCV 蜡烛图数据 | exchange、symbol、timeframe?、limit? |
| 账户 | ||
get_balance | 账户余额(全部或筛选后) | exchange、asset? |
list_orders | 未结订单(全部或按交易对筛选) | exchange、symbol? |
| 交易 | ||
create_order | 下达限价单或市价单 | exchange、symbol、type、side、amount、price? |
cancel_order | 按 ID 取消订单 | exchange、symbol、orderId |
cancel_all_orders | 取消某个交易对的所有订单 | exchange、symbol |
| Cardano DEX | ||
get_cardano_price | 汇总 DEX 的代币价格 | symbol |
discover_pools | 通过 Minswap 和 SundaeSwap 查找直接 ADA 池 | symbol |
| 策略 | ||
start_grid_strategy | 开始网格交易 | exchange、symbol、lowerPrice、upperPrice、gridLevels?、totalAmount |
stop_strategy | 停止正在运行的策略 | strategyId、cancelOrders? |
get_strategy_status | 获取策略状态 | strategyId |
CLI 参考
设置与服务
| 命令 | 描述 |
|---|---|
openmm-init | 创建保险库、生成/导入钱包、添加交易所 |
openmm-init --import <key> | 使用现有私钥创建保险库 |
openmm serve | 解锁保险库,启动统一套接字 |
openmm-status | 显示保险库、套接字、钱包和交易所状态(无需密码) |
交易所凭据
| 命令 | 描述 |
|---|---|
openmm-exchange list | 列出已配置的交易所 |
openmm-exchange add <id> | 添加交易所凭据 |
openmm-exchange remove <id> | 移除交易所凭据 |
支持的交易所:mexc、gateio、bitget、kraken、binance、coinbase、okx
钱包
| 命令 | 描述 |
|---|---|
openmm-wallet info | 显示钱包地址和链 |
openmm-wallet set | 设置钱包凭据 |
openmm-wallet export | 显示私钥(需要确认) |
支出策略
| 命令 | 描述 |
|---|---|
openmm-policy show | 显示当前策略 |
openmm-policy set max-per-tx <amount> | 每笔交易的 USDC 上限 |
openmm-policy set max-per-day <amount> | 每日 USDC 上限 |
openmm-policy set allowed-chains <chains> | 以逗号分隔的链 ID |
openmm-policy reset | 清除所有策略限额 |
高级
| 命令 | 说明 |
|---|---|
openmm-vault info | 显示保险库元数据 |
openmm-vault change-password | 更改保险库密码 |
openmm-vault export | 导出所有凭据(危险) |
openmm-vault destroy | 删除保险库 |
使用示例
查看 BTC 价格:
"Get me the BTC/USDT ticker on MEXC"
下单:
"Buy 0.1 ETH at $2400 on Kraken"
启动网格策略:
"Start a grid strategy on MEXC for INDY/USDT between $0.10 and $0.15 with 10 levels and $500 total"
查看 Cardano 代币:
"What's the current price of SNEK on Cardano DEXes?"
安全性
- 保险库: 使用 AES-256-GCM 加密,存储于
~/.openmm/vault.enc - 密码: 仅通过交互式终端输入,绝不会出现在任何配置文件、环境变量或 CLI 标志中
- 套接字:
/tmp/openmm.sock,模式为0600;套接字是身份验证边界 - 策略: 在触及私钥之前,通过套接字强制执行支出限额
- 隔离: 私钥绝不会进入任何 MCP 客户端进程的内存;签名通过 IPC 在
openmm serve进程中完成
开发
git clone https://github.com/QBT-Labs/openMM-MCP.git
cd openMM-MCP
npm install
npm run typecheck
npm run lint
npm test
npm run build
资源
- OpenMM SDK — 底层交易 SDK
- x402 Package — 支付集成
- MCP Specification — Model Context Protocol 文档
- Base Network — 用于 USDC 支付的 L2 网络
许可证
MIT
托管部署
可通过 Fronteir AI 使用托管部署。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。