@qbtlabs/openmm-mcp
MCP serverCommerce & financeLets your agent view crypto market data, check accounts, place trades, and run strategies.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use @qbtlabs/openmm-mcp to list exchanges
About this server
MCP server for OpenMM, exposes market data, account, trading, and strategy tools to AI agents
Install @qbtlabs/openmm-mcp
The server’s own address, for the clients that take one directly. Or connect ahel onceand every client you use reads it from one address, with the account kept on ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user qbtlabs-openmm-mcp 'https://mcp.openmm.io/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://mcp.openmm.io/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=qbtlabs-openmm-mcp&config=eyJ1cmwiOiJodHRwczovL21jcC5vcGVubW0uaW8vbWNwIn0=Open the link and Cursor adds the server at that address.
ChatGPT
https://mcp.openmm.io/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add qbtlabs-openmm-mcp --url 'https://mcp.openmm.io/mcp'Run it once, then sign in with codex mcp login qbtlabs-openmm-mcp if the server asks for an account.
From the project's README
As published by qbt-labs/openmm-mcp in README.md.
📚 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
| Option | Best For | API Keys | Payments |
|---|---|---|---|
| Local (npm) | Full control, your own keys | Encrypted vault | Free |
| Hosted (mcp.openmm.io) | No setup, pay-per-use | Not needed for public data | x402 USDC |
Local Setup
Prerequisites: Node.js 20 or later.
1. Install and configure
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
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
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:
| Client | Config 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 |
{
"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 --setupinstead — 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:
{
"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
| Client | Without vault | With vault |
|---|---|---|
| Claude Desktop | API keys in env | Only OPENMM_SOCKET |
| Claude Code | API keys in env | Only OPENMM_SOCKET |
| Cursor | API keys in env | Only OPENMM_SOCKET |
| Windsurf | API keys in env | Only 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
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
| Property | How |
|---|---|
| Keys encrypted at rest | AES-256-GCM + PBKDF2 in ~/.openmm/vault.enc |
| Keys never in client memory | MCP process only holds socket path |
| Keys never in config files | No API keys, no private keys anywhere in config |
| Process isolation | Signing happens in openmm serve, not in the AI agent process |
| Policy enforcement | Spending limits checked before private key is accessed |
| Memory safety | signAndWipe() — key used once, goes out of scope immediately |
Payment flow
- Agent calls a tool
- Server returns
402 Payment Requiredwith price openmm servesigns EIP-3009 authorization (gasless — no ETH needed)- Server submits payment on-chain and returns data
Tool Pricing
| Category | Tools | Price (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)
| Tool | Description | Parameters |
|---|---|---|
| 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 direct ADA pools via Minswap and SundaeSwap | symbol |
| 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
| Command | Description |
|---|---|
openmm-init | Create vault, generate/import wallet, add exchanges |
openmm-init --import <key> | 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
| Command | Description |
|---|---|
openmm-exchange list | List configured exchanges |
openmm-exchange add <id> | Add exchange credentials |
openmm-exchange remove <id> | Remove exchange credentials |
Supported exchanges: mexc, gateio, bitget, kraken, binance, coinbase, okx
Wallet
| Command | Description |
|---|---|
openmm-wallet info | Show wallet address and chain |
openmm-wallet set | Set wallet credentials |
openmm-wallet export | Display private key (requires confirmation) |
Spending Policy
| Command | Description |
|---|---|
openmm-policy show | Show current policy |
openmm-policy set max-per-tx <amount> | Max USDC per transaction |
openmm-policy set max-per-day <amount> | Max USDC per day |
openmm-policy set allowed-chains <chains> | Comma-separated chain IDs |
openmm-policy reset | Clear all policy limits |
Advanced
| Command | Description |
|---|---|
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:
"Get me the BTC/USDT ticker on MEXC"
Place an order:
"Buy 0.1 ETH at $2400 on Kraken"
Start grid strategy:
"Start a grid strategy on MEXC for INDY/USDT between $0.10 and $0.15 with 10 levels and $500 total"
Check Cardano token:
"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.sockmode0600— 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 serveprocess via IPC
Development
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
- OpenMM SDK — Underlying trading SDK
- x402 Package — Payment integration
- MCP Specification — Model Context Protocol docs
- Base Network — L2 for USDC payments
License
MIT
Hosted deployment
A hosted deployment is available on Fronteir AI.
Tools it offers (15)
What this server listed when ahel dialed its public endpoint in Sep 2026, with no key and no account of yours. The names are the server’s own.
list_exchangesget_tickerget_orderbookget_tradesget_ohlcvget_balancelist_orderscreate_ordercancel_ordercancel_all_ordersget_cardano_pricediscover_poolsstart_grid_strategystop_strategyget_strategy_status
Signals
- GitHub stars
- 3
- Forks
- 1
- Last commit
- Sep 2026
Advanced
- Delivery
- openmm-mcp MCP server → your ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
io-github-qbt-labs-openmm-mcp- Source
- github.com/qbt-labs/openmm-mcp
- Hosted endpoint
https://mcp.openmm.io/mcp
github.com/qbt-labs/openmm-mcp