OpenMM MCP
Servidor de trading cripto nativo de IA con 13 herramientas para datos de mercado, ejecución de órdenes, estrategias de cuadrícula y Cardano DeFi en múltiples exchanges.
Documentación
@qbtlabs/openmm-mcp
📚 Documentación · 🤖 Portal de Habilidades de IA · 🔌 Referencia de API
Servidor MCP para OpenMM — expone herramientas de datos de mercado, cuentas, trading y estrategias a agentes de IA a través de cualquier cliente MCP.
Dos formas de uso
| Opción | Ideal para | Claves API | Pagos |
|---|---|---|---|
| Local (npm) | Control total, tus propias claves | Bóveda cifrada | Gratis |
| Alojado (mcp.openmm.io) | Sin configuración, pago por uso | No necesario para datos públicos | x402 USDC |
Configuración local
Requisitos previos: Node.js 20 o posterior.
1. Instalar y configurar
npm install -g @qbtlabs/openmm-mcp
openmm-mcp --setup
El asistente de configuración escribe la configuración MCP correcta para tu cliente (Claude Desktop, Claude Code, Cursor, Windsurf). No se almacenan credenciales en archivos de configuración — solo la ruta del socket.
2. Inicializar la bóveda cifrada
openmm-init
Esto crea una bóveda cifrada en ~/.openmm/vault.enc que contiene tu clave de wallet y credenciales de API de exchange. Establecerás una contraseña, generarás (o importarás) un wallet y opcionalmente agregarás claves de exchange.
3. Iniciar el servidor
openmm serve
Escribe tu contraseña de bóveda una vez. El socket unificado se inicia en /tmp/openmm.sock — todos los clientes MCP se conectan aquí. No existen credenciales en ningún archivo de configuración.
Configuración manual
Si prefieres editar archivos de configuración directamente en lugar de usar --setup:
| Cliente | Archivo de configuración |
|---|---|
| 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"
}
}
}
}
Reemplaza /path/to/openmm-mcp con la ruta de instalación real. Para Claude Desktop, usa la ruta completa a node (por ejemplo, desde which node) para evitar problemas de nvm/PATH.
Consejo: Ejecuta
openmm-mcp --setupen su lugar — escribe automáticamente las rutas absolutas correctas.
Sin claves API. Sin claves privadas. Sin contraseñas. Solo la ruta del socket.
Sin bóveda (inicio rápido)
Puedes omitir la bóveda y pasar las claves API directamente en el bloque env:
{
"mcpServers": {
"openmm": {
"command": "npx",
"args": ["@qbtlabs/openmm-mcp"],
"env": {
"MEXC_API_KEY": "your_key",
"MEXC_SECRET": "your_secret"
}
}
}
}
La bóveda fortalece cada escenario — nada sensible existe en ningún archivo de configuración, entorno de proceso o memoria del cliente.
Compatibilidad de clientes
| Cliente | Sin bóveda | Con bóveda |
|---|---|---|
| Claude Desktop | Claves API en env | Solo OPENMM_SOCKET |
| Claude Code | Claves API en env | Solo OPENMM_SOCKET |
| Cursor | Claves API en env | Solo OPENMM_SOCKET |
| Windsurf | Claves API en env | Solo OPENMM_SOCKET |
Todos los clientes se conectan al mismo openmm serve en ejecución — una bóveda, un socket, cualquier cliente.
Servidor alojado con pagos x402
Conéctate a mcp.openmm.io — no se necesita instalación local para datos públicos.
Paga por llamada de herramienta con USDC en Base.
Cómo funciona
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
Propiedades de seguridad
| Propiedad | Cómo |
|---|---|
| Claves cifradas en reposo | AES-256-GCM + PBKDF2 en ~/.openmm/vault.enc |
| Claves nunca en memoria del cliente | El proceso MCP solo contiene la ruta del socket |
| Claves nunca en archivos de configuración | Sin claves API, sin claves privadas en ninguna configuración |
| Aislamiento de procesos | La firma ocurre en openmm serve, no en el proceso del agente de IA |
| Aplicación de políticas | Límites de gasto verificados antes de acceder a la clave privada |
| Seguridad de memoria | signAndWipe() — clave usada una vez, sale del alcance inmediatamente |
Flujo de pago
- El agente llama a una herramienta
- El servidor devuelve
402 Payment Requiredcon el precio openmm servefirma la autorización EIP-3009 (sin gas — no se necesita ETH)- El servidor envía el pago en cadena y devuelve los datos
Precios de herramientas
| Categoría | Herramientas | Precio (USDC) |
|---|---|---|
| Gratis | list_exchanges | $0.00 |
| Lectura | get_ticker, get_orderbook, get_trades, get_ohlcv, get_balance, list_orders, get_cardano_price, discover_pools, get_strategy_status | $0.001 |
| Escritura | create_order, cancel_order, cancel_all_orders, start_grid_strategy, stop_strategy | $0.01 |
Herramientas disponibles (15)
| Herramienta | Descripción | Parámetros |
|---|---|---|
| Datos de mercado | ||
list_exchanges | Listar exchanges compatibles | — |
get_ticker | Precio en tiempo real, bid/ask, spread, volumen | exchange, symbol |
get_orderbook | Profundidad del libro de órdenes (bids/asks) | exchange, symbol, limit? |
get_trades | Operaciones recientes con resumen de compra/venta | exchange, symbol, limit? |
get_ohlcv | Datos de velas OHLCV | exchange, symbol, timeframe?, limit? |
| Cuenta | ||
get_balance | Saldos de cuenta (todos o filtrados) | exchange, asset? |
list_orders | Órdenes abiertas (todas o por símbolo) | exchange, symbol? |
| Trading | ||
create_order | Colocar orden de límite o de mercado | exchange, symbol, type, side, amount, price? |
cancel_order | Cancelar orden por ID | exchange, symbol, orderId |
cancel_all_orders | Cancelar todas las órdenes para un par | exchange, symbol |
| Cardano DEX | ||
get_cardano_price | Precio de token agregado de DEXes | symbol |
discover_pools | Descubrir pools ADA directos vía Minswap y SundaeSwap | symbol |
| Estrategia | ||
start_grid_strategy | Iniciar trading de cuadrícula | exchange, symbol, lowerPrice, upperPrice, gridLevels?, totalAmount |
stop_strategy | Detener una estrategia en ejecución | strategyId, cancelOrders? |
get_strategy_status | Obtener estado de la estrategia | strategyId |
Referencia de CLI
Configuración y servidor
| Comando | Descripción |
|---|---|
openmm-init | Crear bóveda, generar/importar wallet, agregar exchanges |
openmm-init --import <key> | Crear bóveda con una clave privada existente |
openmm serve | Desbloquear bóveda, iniciar socket unificado |
openmm-status | Mostrar estado de bóveda, socket, wallet y exchange (sin contraseña) |
Credenciales de exchange
| Comando | Descripción |
|---|---|
openmm-exchange list | Listar exchanges configurados |
openmm-exchange add <id> | Agregar credenciales de exchange |
openmm-exchange remove <id> | Eliminar credenciales de exchange |
Exchanges compatibles: mexc, gateio, bitget, kraken, binance, coinbase, okx
Wallet
| Comando | Descripción |
|---|---|
openmm-wallet info | Mostrar dirección del wallet y cadena |
openmm-wallet set | Establecer credenciales del wallet |
openmm-wallet export | Mostrar clave privada (requiere confirmación) |
Política de gasto
| Comando | Descripción |
|---|---|
openmm-policy show | Mostrar política actual |
openmm-policy set max-per-tx <amount> | Máximo USDC por transacción |
openmm-policy set max-per-day <amount> | Máximo USDC por día |
openmm-policy set allowed-chains <chains> | IDs de cadena separados por comas |
openmm-policy reset | Borrar todos los límites de política |
Avanzado
| Comando | Descripción |
|---|---|
openmm-vault info | Mostrar metadatos de la bóveda |
openmm-vault change-password | Cambiar contraseña de la bóveda |
openmm-vault export | Exportar todas las credenciales (peligroso) |
openmm-vault destroy | Eliminar la bóveda |
Ejemplo de uso
Consultar precio de BTC:
"Get me the BTC/USDT ticker on MEXC"
Colocar una orden:
"Buy 0.1 ETH at $2400 on Kraken"
Iniciar estrategia de cuadrícula:
"Start a grid strategy on MEXC for INDY/USDT between $0.10 and $0.15 with 10 levels and $500 total"
Consultar token de Cardano:
"What's the current price of SNEK on Cardano DEXes?"
Seguridad
- Bóveda: Cifrada con AES-256-GCM en
~/.openmm/vault.enc - Contraseña: Solo terminal interactiva — nunca en ningún archivo de configuración, variable de entorno o flag de CLI
- Socket: Modo
/tmp/openmm.sock0600— el socket es el límite de autenticación - Política: Límites de gasto aplicados en el socket antes de tocar la clave privada
- Aislamiento: La clave privada nunca entra en la memoria de ningún proceso de cliente MCP — la firma ocurre en el proceso
openmm servevía IPC
Desarrollo
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
Recursos
- OpenMM SDK — SDK de trading subyacente
- Paquete x402 — Integración de pagos
- Especificación MCP — Documentación del Model Context Protocol
- Red Base — L2 para pagos USDC
Licencia
MIT
Implementación alojada
Una implementación alojada está disponible en Fronteir AI.