Back to Browse

Trade Router MCP Server

Developer ToolsUse Caution4.8MCP RegistryLocal
Free

Server data from the Official MCP Registry

TradeRouter.ai MCP Server — Solana swap & limit order engine.

About

TradeRouter.ai MCP Server — Solana swap & limit order engine.

Security Report

4.8
Use Caution4.8High Risk

This is a well-architected MCP server for non-custodial Solana trading with strong cryptographic controls. The private key is correctly handled (env var only, never logged or transmitted), and all server messages are Ed25519-verified against hardcoded trust anchors. Minor code quality issues (broad error handling, some input validation gaps) and the inherent risks of handling signing keys prevent a higher score, but security-critical operations are properly implemented. Supply chain analysis found 2 known vulnerabilities in dependencies (0 critical, 2 high severity). Package verification found 1 issue (1 critical, 0 high severity).

3 files analyzed · 10 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

env_vars

Check that this permission is expected for this type of plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

network_websocket

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

Solana wallet private key in base58 format. Required for auto-signing transactions and WebSocket authentication.Required

Environment variable: TRADEROUTER_PRIVATE_KEY

Solana RPC endpoint URL. Defaults to https://api.mainnet-beta.solana.com if not set.Optional

Environment variable: SOLANA_RPC_URL

TradeRouter server public key (base58) used to verify server signatures. Defaults to the hardcoded trust anchor.Optional

Environment variable: TRADEROUTER_SERVER_PUBKEY

Optional next/rotated TradeRouter server public key (base58) for key rotation support.Optional

Environment variable: TRADEROUTER_SERVER_PUBKEY_NEXT

Whether to require server signature verification on filled orders. Defaults to true.Optional

Environment variable: TRADEROUTER_REQUIRE_SERVER_SIGNATURE

Whether to require server signature verification on order creation. Defaults to true.Optional

Environment variable: TRADEROUTER_REQUIRE_ORDER_CREATED_SIGNATURE

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-re-bruce-wayne-trade-router-mcp": {
      "env": {
        "SOLANA_RPC_URL": "your-solana-rpc-url-here",
        "TRADEROUTER_PRIVATE_KEY": "your-traderouter-private-key-here",
        "TRADEROUTER_SERVER_PUBKEY": "your-traderouter-server-pubkey-here",
        "TRADEROUTER_SERVER_PUBKEY_NEXT": "your-traderouter-server-pubkey-next-here",
        "TRADEROUTER_REQUIRE_SERVER_SIGNATURE": "your-traderouter-require-server-signature-here",
        "TRADEROUTER_REQUIRE_ORDER_CREATED_SIGNATURE": "your-traderouter-require-order-created-signature-here"
      },
      "args": [
        "-y",
        "@traderouter/trade-router-mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

@traderouter/trade-router-mcp

A Model Context Protocol server for TradeRouter.ai — non-custodial Solana swap, limit, trailing, DCA, TWAP, and combo-order engine for AI agents.

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

Is this safe?

Yes, and here's exactly why. The private key is read once from TRADEROUTER_PRIVATE_KEY, used for local signing with @solana/web3.js + tweetnacl, and never transmitted, logged, or persisted. Only signed transactions leave your machine. Server messages are Ed25519-verified against a hard-coded trust anchor. See SECURITY.md for the full threat model, data-flow diagram, and permissions manifest.

Signing flow:

  1. Agent calls build_swap → MCP sends wallet address (public key) to api.traderouter.ai
  2. API returns an unsigned transaction
  3. MCP signs the tx locally using TRADEROUTER_PRIVATE_KEY
  4. The signed transaction is submitted to /protect (Jito MEV-protected bundle)
  5. Server confirms and returns balance changes. The private key never crosses the network.

Requirements

  • Node.js ≥ 18
  • A Solana wallet private key in base58 format (use a dedicated trading wallet, not your main holdings)

Install

npx -y @traderouter/trade-router-mcp

Or wire it into an MCP client (Claude Desktop, Cursor, Cline, etc.):

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

Environment variables

VariableRequiredDefaultPurpose
TRADEROUTER_PRIVATE_KEYSolana wallet private key (base58). Local use only.
SOLANA_RPC_URLhttps://api.mainnet-beta.solana.comCustom RPC for reads
TRADEROUTER_SERVER_PUBKEYbaked-in trust anchorOverride the server's Ed25519 trust anchor
TRADEROUTER_SERVER_PUBKEY_NEXT(unset)Accept messages signed by this key in addition to the primary (key rotation)
TRADEROUTER_REQUIRE_SERVER_SIGNATUREtrueVerify server signatures on order_filled / twap_execution
TRADEROUTER_REQUIRE_ORDER_CREATED_SIGNATUREtrueVerify server signatures on order_created
TRADEROUTER_DRY_RUNfalseWhen true, every write-action tool (submit_signed_swap, auto_swap, place_*_order, cancel_order, extend_order) returns { dry_run: true, tool, args } instead of calling the API. Read-only tools execute normally. Added in 1.0.9.

Tools

ToolPurpose
get_wallet_addressGet the configured wallet's public address
build_swapBuild an unsigned swap transaction
submit_signed_swapSubmit a manually signed transaction
auto_swapBuild + sign + submit in one call
get_holdingsGet token holdings for a wallet
get_mcapMarket cap and price for a token
get_flex_cardTrade card PNG URL for wallet + token
place_limit_orderLimit buy/sell by price or market cap
place_trailing_orderTrailing stop buy/sell
place_twap_orderTWAP (time-weighted) buy/sell
place_limit_twap_orderLimit trigger → TWAP execution
place_trailing_twap_orderTrailing trigger → TWAP execution
place_limit_trailing_orderLimit trigger → trailing execution (single swap on trigger)
place_limit_trailing_twap_orderLimit trigger → trailing trigger → TWAP execution
list_ordersList active orders for a wallet
check_orderGet status of a specific order
cancel_orderCancel an active order
extend_orderExtend an order's expiry
connect_websocketRegister a wallet over the persistent WebSocket
connection_statusCurrent WebSocket connection state
get_fill_logLog of filled orders

REST endpoints (under the hood)

EndpointPurpose
POST /swapBuild unsigned swap (multi-DEX: Raydium, PumpSwap, Orca, Meteora)
POST /protectSubmit signed tx via Jito bundle — MEV-protected
POST /holdingsWallet scan — catches tokens standard RPC misses
GET /mcapMarket cap + price
GET /flexTrade card PNG generation
wss://api.traderouter.ai/wsPersistent WebSocket for limits / trailing / DCA / TWAP / combo orders

Trust anchor

The baked-in server public key is EXX3nRzfDUvbjZSmxFzHDdiSYeGVP1EGr77iziFZ4Jd4. Every order_filled, order_created, and twap_execution message from the server is verified with Ed25519 before being treated as authoritative. See SECURITY.md for details and the rotation mechanism (TRADEROUTER_SERVER_PUBKEY_NEXT).

Use with LangChain

Any MCP server works in LangChain via the official adapter:

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()

Fees

Flat 1% fee on swap volume, embedded in routing at /protect. No subscription, no API key, no monthly minimums. Read-only endpoints (/holdings, /mcap) are free.

Machine-readable specs (live on traderouter.ai)

URLFormatPurpose
https://traderouter.ai/openapi.jsonOpenAPI 3.1 (JSON)Canonical API contract — generate SDKs in any language
https://traderouter.ai/openapi.yamlOpenAPI 3.1 (YAML)Same spec, YAML format (regenerated from the JSON)
https://traderouter.ai/llms.txttextLLM-readable API guide (per llmstxt.org)
https://traderouter.ai/SKILL.mdmarkdownAnthropic Agent Skills format — full implementation guide
https://traderouter.ai/SECURITY.mdmarkdownThreat model + data-flow diagram + permissions manifest (mirrors ./SECURITY.md here)
https://traderouter.ai/CHANGELOG.mdmarkdownUnified changelog across the API / MCP server / Site version tracks

Quick SDK generation:

# 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

Security disclosure

Email security@traderouter.ai or use GitHub Security Advisories on this repo. 48-hour acknowledgement. See SECURITY.md (or the hosted version if you'd rather link to a stable URL).

License

MIT. See LICENSE.

Changelog

See CHANGELOG.md.

Reviews

No reviews yet

Be the first to review this server!