Trade Router MCP

Servidor MCP de intercambio y órdenes limitadas no custodial en Solana. 21 herramientas en Raydium, PumpSwap, Orca, Meteora. Protegido contra MEV por Jito. La clave privada nunca sale del agente.

Documentación

@traderouter/trade-router-mcp

Un servidor de Model Context Protocol para TradeRouter.ai — motor de swaps, órdenes limitadas, trailing, DCA, TWAP y órdenes combinadas no custodiado en Solana para agentes de IA.

Security: non-custodial License: MIT npm Awesome MCP Servers Glama MCP Server MCP Registry

¿Es seguro?

Sí, y aquí está exactamente el porqué. La clave privada se lee una sola vez desde TRADEROUTER_PRIVATE_KEY, se usa para firmar localmente con @solana/web3.js + tweetnacl, y nunca se transmite, registra ni persiste. Solo las transacciones firmadas salen de tu máquina. Los mensajes del servidor se verifican con Ed25519 contra un ancla de confianza codificada. Consulta SECURITY.md para ver el modelo de amenazas completo, el diagrama de flujo de datos y el manifiesto de permisos.

Flujo de firma:

  1. El agente llama a build_swap → el MCP envía la dirección de la cartera (clave pública) a api.traderouter.ai
  2. La API devuelve una transacción sin firmar
  3. El MCP firma la transacción localmente usando TRADEROUTER_PRIVATE_KEY
  4. La transacción firmada se envía a /protect (paquete protegido contra MEV de Jito)
  5. El servidor confirma y devuelve los cambios de saldo. La clave privada nunca cruza la red.

Requisitos

  • Node.js ≥ 18
  • Una clave privada de cartera Solana en formato base58 (usa una cartera de trading dedicada, no tus fondos principales)

Instalación

npx -y @traderouter/trade-router-mcp

O conéctalo a un cliente MCP (Claude Desktop, Cursor, Cline, etc.):

{
  "mcpServers": {
    "traderouter": {
      "command": "npx",
      "args": ["-y", "@traderouter/trade-router-mcp"],
      "env": {
        "TRADEROUTER_PRIVATE_KEY": "your_base58_private_key"
      }
    }
  }
}
SORuta de configuración de Claude Desktop
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
Linux~/.config/Claude/claude_desktop_config.json

Variables de entorno

VariableRequeridaPredeterminadoPropósito
TRADEROUTER_PRIVATE_KEY✅—Clave privada de cartera Solana (base58). Solo uso local.
SOLANA_RPC_URL❌https://api.mainnet-beta.solana.comRPC personalizado para lecturas
TRADEROUTER_SERVER_PUBKEY❌ancla de confianza integradaAnula el ancla de confianza Ed25519 del servidor
TRADEROUTER_SERVER_PUBKEY_NEXT❌(sin definir)Acepta mensajes firmados por esta clave además de la principal (rotación de claves)
TRADEROUTER_REQUIRE_SERVER_SIGNATURE❌trueVerifica las firmas del servidor en order_filled / twap_execution
TRADEROUTER_REQUIRE_ORDER_CREATED_SIGNATURE❌trueVerifica las firmas del servidor en order_created
TRADEROUTER_DRY_RUN❌falseCuando true, cada herramienta de acción de escritura (submit_signed_swap, auto_swap, place_*_order, cancel_order, extend_order) devuelve { dry_run: true, tool, args } en lugar de llamar a la API. Las herramientas de solo lectura se ejecutan normalmente. Añadido en 1.0.9.

Herramientas

HerramientaPropósito
get_wallet_addressObtiene la dirección pública de la cartera configurada
build_swapConstruye una transacción de swap sin firmar
submit_signed_swapEnvía una transacción firmada manualmente
auto_swapConstruye + firma + envía en una sola llamada
get_holdingsObtiene los saldos de tokens de una cartera
get_mcapCapitalización de mercado y precio de un token
get_flex_cardURL PNG de la tarjeta de trading para cartera + token
place_limit_orderCompra/venta limitada por precio o capitalización de mercado
place_trailing_orderCompra/venta con stop trailing
place_twap_orderCompra/venta TWAP (ponderada en el tiempo)
place_limit_twap_orderDisparador limitado → ejecución TWAP
place_trailing_twap_orderDisparador trailing → ejecución TWAP
place_limit_trailing_orderDisparador limitado → ejecución trailing (swap único al dispararse)
place_limit_trailing_twap_orderDisparador limitado → disparador trailing → ejecución TWAP
list_ordersLista las órdenes activas de una cartera
check_orderObtiene el estado de una orden específica
cancel_orderCancela una orden activa
extend_orderExtiende la expiración de una orden
connect_websocketRegistra una cartera a través del WebSocket persistente
connection_statusEstado actual de la conexión WebSocket
get_fill_logRegistro de órdenes ejecutadas

Endpoints REST (bajo el capó)

EndpointPropósito
POST /swapConstruye swap sin firmar (multi-DEX: Raydium, PumpSwap, Orca, Meteora)
POST /protectEnvía transacción firmada mediante paquete Jito — protegido contra MEV
POST /holdingsEscaneo de cartera — detecta tokens que el RPC estándar no ve
GET /mcapCapitalización de mercado + precio
GET /flexGeneración de tarjeta de trading PNG
wss://api.traderouter.ai/wsWebSocket persistente para órdenes limitadas / trailing / DCA / TWAP / combinadas

Ancla de confianza

La clave pública del servidor integrada es EXX3nRzfDUvbjZSmxFzHDdiSYeGVP1EGr77iziFZ4Jd4. Cada mensaje order_filled, order_created y twap_execution del servidor se verifica con Ed25519 antes de tratarse como autoritativo. Consulta SECURITY.md para más detalles y el mecanismo de rotación (TRADEROUTER_SERVER_PUBKEY_NEXT).

Uso con LangChain

Cualquier servidor MCP funciona en LangChain mediante el adaptador oficial:

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({
    "traderouter": {
        "command": "npx",
        "args": ["-y", "@traderouter/trade-router-mcp"],
        "transport": "stdio",
        "env": {"TRADEROUTER_PRIVATE_KEY": "<base58>"},
    },
})
tools = await client.get_tools()

Comisiones

Comisión fija del 1% sobre el volumen de swaps, integrada en el enrutamiento en /protect. Sin suscripción, sin clave API, sin mínimos mensuales. Los endpoints de solo lectura (/holdings, /mcap) son gratuitos.

Especificaciones legibles por máquina (en vivo en traderouter.ai)

URLFormatoPropósito
https://traderouter.ai/openapi.jsonOpenAPI 3.1 (JSON)Contrato API canónico — genera SDKs en cualquier idioma
https://traderouter.ai/openapi.yamlOpenAPI 3.1 (YAML)Misma especificación, formato YAML (regenerada desde el JSON)
https://traderouter.ai/llms.txttextGuía API legible por LLM (según llmstxt.org)
https://traderouter.ai/SKILL.mdmarkdownFormato Anthropic Agent Skills — guía de implementación completa
https://traderouter.ai/SECURITY.mdmarkdownModelo de amenazas + diagrama de flujo de datos + manifiesto de permisos (refleja ./SECURITY.md aquí)
https://traderouter.ai/CHANGELOG.mdmarkdownRegistro de cambios unificado en las pistas de versiones de API / servidor MCP / Sitio

Generación rápida de SDK:

# TypeScript
openapi-generator-cli generate -i https://traderouter.ai/openapi.yaml -g typescript-axios -o ./sdk-ts

# Python
openapi-generator-cli generate -i https://traderouter.ai/openapi.yaml -g python -o ./sdk-py

Divulgación de seguridad

Envía un correo a security@traderouter.ai o usa GitHub Security Advisories en este repositorio. Acuse de recibo en 48 horas. Consulta SECURITY.md (o la versión alojada si prefieres enlazar a una URL estable).

Licencia

MIT. Consulta LICENSE.

Registro de cambios

Consulta CHANGELOG.md.