Labsco
MCP SERVER

OpenMM MCP

by QBT-Labs

Exchange market data, balances and order placement for AI agents — with the wallet and API keys held in an encrypted vault process, never in a client config.

Trading Execution & Brokerage
Summary
The keys are not where the agent is.

Most trading integrations put an API key in the same config the model's process reads, and hope. Here signing happens in a separate process, the key is used inline and dropped, and spending limits are evaluated before it is decrypted at all — so a compromised or confused agent hits a policy check rather than a wallet. It costs you a setup step and a password prompt per session, which is a fair trade for that. Everything else is the usual caution about a model that can place orders: the write tools are real.

What it is

A trading server for AI agents, with an unusual amount of attention paid to where the keys live. A separate vault process holds your wallet key and exchange credentials encrypted on disk; the MCP process the client launches knows only a socket path, so no credential ever enters a config file, the agent's environment, or the client's memory.

What you get
  • 15 tools across market data, account, trading, Cardano DEX and strategy
  • Market data by exchange and symbol: real-time price with bid, ask, spread and volume, order-book depth, recent trades with a buy/sell summary, and candlestick data — `get_ticker`, `get_orderbook`, `get_trades`, `get_ohlcv`, `list_exchanges`
  • Account reads: balances across all assets or one, and open orders across the account or by symbol — `get_balance`, `list_orders`
  • Order placement and cancellation — limit or market orders, cancel one by id, or cancel everything on a pair — `create_order`, `cancel_order`, `cancel_all_orders`
  • Cardano DEX data: an aggregated token price across DEXes, and liquidity-pool discovery with a minimum-liquidity filter — `get_cardano_price`, `discover_pools`
  • Grid trading as a managed strategy rather than a loop you write: start it between a lower and upper price with a level count and total amount, check its status, stop it with or without cancelling its orders — `start_grid_strategy`, `get_strategy_status`, `stop_strategy`
  • A policy engine checked before the private key is touched at all — per-transaction and per-day spend caps, and an allowed-chain list
  • A hosted option priced per call, where reads and writes carry different prices and payment settles in USDC on Base without needing gas
  • One running vault serving every client, so several MCP clients share the same unlocked process rather than each holding credentials
Requirements

Node.js 20 or later for the local path. Install `@qbtlabs/openmm-mcp` globally and run the setup command, which writes the client config for Claude Desktop, Claude Code, Cursor or Windsurf. Then initialize the vault — it creates an encrypted file in your home directory holding a generated or imported wallet key plus any exchange credentials — and start the vault process, unlocking it with your password once per session. From then on the only value in any config is the socket path. A quick-start path exists that skips the vault and puts exchange keys directly in the client's env block. For the hosted server there is no local install at all: connect to the streamable-HTTP endpoint and pay per call. The package is 1.0.13 in package.json.

Setup effort

One command — npm install -g @qbtlabs/openmm-mcp