trackmcp
Back to directory
QBT-Labs

openmm-mcp

View on GitHub

MCP server giving AI agents real crypto trading capabilities. 13+ tools for market data, order execution, grid strategies, and portfolio management across 4 exchanges

3 stars TypeScriptOthers Updated Aug 26, 2026
ai-agentsai-agents-mcpcardanodefimarket-makingmcpmcp-clientmcp-serveropen-sourcesolanax402

Documentation

@qbtlabs/openmm-mcp

smithery badge
npm version
npm downloads
License: MIT
Ask DeepWiki

**๐Ÿ“š Documentation ยท ๐Ÿค– AI Skills Portal ยท ๐Ÿ”Œ API Reference**

MCP server for OpenMM โ€” exposes market data, account, trading, and strategy tools to AI agents via any MCP client.

Two Ways to Use

OptionBest ForAPI KeysPayments
Local (npm)Full control, your own keysEncrypted vaultFree
Hosted (mcp.openmm.io)No setup, pay-per-useNot needed for public datax402 USDC

Local Setup

Prerequisites: Node.js 20 or later.

1. Install and configure

bash
npm install -g @qbtlabs/openmm-mcp
openmm-mcp --setup

The setup wizard writes the correct MCP config for your client (Claude Desktop, Claude Code, Cursor, Windsurf). No credentials are stored in config files โ€” only the socket path.

2. Initialize encrypted vault

bash
openmm-init

This creates an encrypted vault at `~/.openmm/vault.enc` containing your wallet key and exchange API credentials. You'll set a password, generate (or import) a wallet, and optionally add exchange keys.

3. Start the server

bash
openmm serve

Type your vault password once. The unified socket starts at `/tmp/openmm.sock` โ€” all MCP clients connect here. No credentials exist in any config file.

Manual configuration

If you prefer to edit config files directly instead of using `--setup`:

ClientConfig file
Claude Desktop`~/Library/Application Support/Claude/claude_desktop_config.json`
Claude Code`~/.claude.json`
Cursor`.cursor/mcp.json`
Windsurf`~/.codeium/windsurf/mcp_config.json`
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"
      }
    }
  }
}

Replace `/path/to/openmm-mcp` with the actual install path. For Claude Desktop, use the full path to `node` (e.g. from `which node`) to avoid nvm/PATH issues.

> Tip: Run `openmm-mcp --setup` instead โ€” it writes the correct absolute paths automatically.

No API keys. No private keys. No passwords. Just the socket path.

Without vault (quick start)

You can skip the vault and pass API keys directly in the `env` block:

json
{
  "mcpServers": {
    "openmm": {
      "command": "npx",
      "args": ["@qbtlabs/openmm-mcp"],
      "env": {
        "MEXC_API_KEY": "your_key",
        "MEXC_SECRET": "your_secret"
      }
    }
  }
}

The vault strengthens every scenario โ€” nothing sensitive exists in any config file, process environment, or client memory.

Client compatibility

ClientWithout vaultWith vault
Claude DesktopAPI keys in envOnly `OPENMM_SOCKET`
Claude CodeAPI keys in envOnly `OPENMM_SOCKET`
CursorAPI keys in envOnly `OPENMM_SOCKET`
WindsurfAPI keys in envOnly `OPENMM_SOCKET`

All clients connect to the same running `openmm serve` โ€” one vault, one socket, any client.


Hosted Server with x402 Payments

Connect to `mcp.openmm.io` โ€” no local installation needed for public data.

Pay per tool call with USDC on Base.

How it works

code
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

Security properties

PropertyHow
Keys encrypted at restAES-256-GCM + PBKDF2 in `~/.openmm/vault.enc`
Keys never in client memoryMCP process only holds socket path
Keys never in config filesNo API keys, no private keys anywhere in config
Process isolationSigning happens in `openmm serve`, not in the AI agent process
Policy enforcementSpending limits checked before private key is accessed
Memory safety`signAndWipe()` โ€” key used once, goes out of scope immediately

Payment flow

1. Agent calls a tool

2. Server returns `402 Payment Required` with price

3. `openmm serve` signs EIP-3009 authorization (gasless โ€” no ETH needed)

4. Server submits payment on-chain and returns data

Tool Pricing

CategoryToolsPrice (USDC)
Free`list_exchanges`$0.00
Read`get_ticker`, `get_orderbook`, `get_trades`, `get_ohlcv`, `get_balance`, `list_orders`, `get_cardano_price`, `discover_pools`, `get_strategy_status`$0.001
Write`create_order`, `cancel_order`, `cancel_all_orders`, `start_grid_strategy`, `stop_strategy`$0.01

Available Tools (15)

ToolDescriptionParameters
Market Data
`list_exchanges`List supported exchangesโ€”
`get_ticker`Real-time price, bid/ask, spread, volume`exchange`, `symbol`
`get_orderbook`Order book depth (bids/asks)`exchange`, `symbol`, `limit?`
`get_trades`Recent trades with buy/sell summary`exchange`, `symbol`, `limit?`
`get_ohlcv`OHLCV candlestick data`exchange`, `symbol`, `timeframe?`, `limit?`
Account
`get_balance`Account balances (all or filtered)`exchange`, `asset?`
`list_orders`Open orders (all or by symbol)`exchange`, `symbol?`
Trading
`create_order`Place limit or market order`exchange`, `symbol`, `type`, `side`, `amount`, `price?`
`cancel_order`Cancel order by ID`exchange`, `symbol`, `orderId`
`cancel_all_orders`Cancel all orders for a pair`exchange`, `symbol`
Cardano DEX
`get_cardano_price`Aggregated token price from DEXes`symbol`
`discover_pools`Discover liquidity pools`symbol`, `minLiquidity?`
Strategy
`start_grid_strategy`Start grid trading`exchange`, `symbol`, `lowerPrice`, `upperPrice`, `gridLevels?`, `totalAmount`
`stop_strategy`Stop a running strategy`strategyId`, `cancelOrders?`
`get_strategy_status`Get strategy status`strategyId`

CLI Reference

Setup & Server

CommandDescription
`openmm-init`Create vault, generate/import wallet, add exchanges
`openmm-init --import `Create vault with an existing private key
`openmm serve`Unlock vault, start unified socket
`openmm-status`Show vault, socket, wallet, and exchange status (no password)

Exchange Credentials

CommandDescription
`openmm-exchange list`List configured exchanges
`openmm-exchange add `Add exchange credentials
`openmm-exchange remove `Remove exchange credentials

Supported exchanges: `mexc`, `gateio`, `bitget`, `kraken`, `binance`, `coinbase`, `okx`

Wallet

CommandDescription
`openmm-wallet info`Show wallet address and chain
`openmm-wallet set`Set wallet credentials
`openmm-wallet export`Display private key (requires confirmation)

Spending Policy

CommandDescription
`openmm-policy show`Show current policy
`openmm-policy set max-per-tx `Max USDC per transaction
`openmm-policy set max-per-day `Max USDC per day
`openmm-policy set allowed-chains `Comma-separated chain IDs
`openmm-policy reset`Clear all policy limits

Advanced

CommandDescription
`openmm-vault info`Show vault metadata
`openmm-vault change-password`Change vault password
`openmm-vault export`Export all credentials (dangerous)
`openmm-vault destroy`Delete the vault

Example Usage

Check BTC price:

code
"Get me the BTC/USDT ticker on MEXC"

Place an order:

code
"Buy 0.1 ETH at $2400 on Kraken"

Start grid strategy:

code
"Start a grid strategy on MEXC for INDY/USDT between $0.10 and $0.15 with 10 levels and $500 total"

Check Cardano token:

code
"What's the current price of SNEK on Cardano DEXes?"

Security

  • Vault: AES-256-GCM encrypted at `~/.openmm/vault.enc`
  • Password: Interactive terminal only โ€” never in any config file, env var, or CLI flag
  • Socket: `/tmp/openmm.sock` mode `0600` โ€” the socket is the authentication boundary
  • Policy: Spending limits enforced at the socket before the private key is touched
  • Isolation: Private key never enters any MCP client process memory โ€” signing happens in the `openmm serve` process via IPC

Development

bash
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

Resources

License

MIT

Hosted deployment

A hosted deployment is available on Fronteir AI.

Frequently asked questions

What is openmm-mcp?

openmm-mcp is MCP server giving AI agents real crypto trading capabilities. 13+ tools for market data, order execution, grid strategies, and portfolio management across 4 exchanges

How do I install openmm-mcp?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is openmm-mcp open source?

Yes โ€” it is hosted on GitHub at https://github.com/QBT-Labs/openmm-mcp and has 3 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP