RevolutX MCP Server

Bilel-Eljaamii/revolutx-mcp
2 starsCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Provides AI agents with tools to interact with the Revolut X crypto exchange for order management, market data, portfolio analysis, and more via the Model Context Protocol.

README.md

RevolutX MCP Server

A Model Context Protocol (MCP) server for the Revolut X Crypto Exchange REST API. This server exposes a comprehensive set of tools that allow AI agents to interact with the Revolut X exchange — placing orders, fetching market data, managing positions, and more.

All private API requests are authenticated using Ed25519 request signing (X-Revx-Signature), following the official Revolut X authentication protocol.

---

Features

Orders

| Tool | Description | Auth | |------|-------------|------| | place_order | Place a new limit or market order | ✅ Private | | cancel_order | Cancel an active order by ID | ✅ Private | | cancel_all_orders | Cancel all active orders | ✅ Private | | get_order | Get details of a specific order by ID | ✅ Private | | get_active_orders | Get active orders with filters (symbols, states, types, side) | ✅ Private | | get_historical_orders | Get historical orders with date range and pagination | ✅ Private | | get_order_fills | Get fills (trades) for a specific order | ✅ Private |

Trades

| Tool | Description | Auth | |------|-------------|------| | get_all_trades | Get all public trades (market history) for a symbol | ✅ Private | | get_private_trades | Get authenticated client trade history | ✅ Private |

Market Data

| Tool | Description | Auth | |------|-------------|------| | get_order_book_snapshot | Authenticated order book snapshot for a trading pair | ✅ Private | | get_candles | Historical OHLCV candle data with configurable intervals | ✅ Private | | get_tickers | Latest bid/ask/mid/last prices for all pairs | ✅ Private |

Public Market Data

| Tool | Description | Auth | |------|-------------|------| | get_last_trades | Latest 100 trades on the exchange | 🌐 Public | | get_order_book | Public order book (max 5 price levels) | 🌐 Public |

Configuration

| Tool | Description | Auth | |------|-------------|------| | get_currencies | All supported currencies and their configuration | ✅ Private | | get_pairs | All traded currency pairs and their configuration | ✅ Private |

Balance

| Tool | Description | Auth | |------|-------------|------| | get_balances | Account balances for the authenticated user | ✅ Private |

---

Prompts

| Prompt | Description | |--------|-------------| | analyze-market | Analyze market conditions for a specific trading pair | | create-ladder-strategy | Generate a ladder trading strategy with multiple orders | | portfolio-summary | Analyze current portfolio value based on balances and prices | | risk-assessment | Comprehensive portfolio risk analysis | | order-management | Review and manage active orders with recommendations | | market-comparison | Compare conditions across multiple trading pairs | | price-alert-setup | Set up price monitoring strategy with target alerts |

---

Prerequisites

  • Node.js >= 18
  • npm
  • A Revolut X API Key (obtain from the Revolut X web app)
  • An Ed25519 private key (for request signing)

Installation

  1. Clone the repository:
    git clone https://github.com/Bilel-Eljaamii/revolutx-mcp.git
    cd revolutx-mcp
  1. Install dependencies:
    npm install

Configuration

  1. Copy the example environment file:
    cp .env.example .env
  1. Edit .env and configure both required variables:
    # Your Revolut X API Key (64-character alphanumeric string)
    REVOLUTX_API_KEY=your_api_key_here

    # Your Ed25519 Private Key for request signing
    REVOLUTX_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----
    your_base64_private_key_here
    -----END PRIVATE KEY-----"

Note: Both REVOLUTX_API_KEY and REVOLUTX_PRIVATE_KEY are required for all private endpoints. Public endpoints (get_last_trades, get_order_book) work without authentication.

Generating an Ed25519 Key Pair

openssl genpkey -algorithm Ed25519 -out private.pem
openssl pkey -in private.pem -pubout -out public.pem

Upload the public key to your Revolut X account settings, and set the contents of private.pem as REVOLUTX_PRIVATE_KEY in your .env file.

---

Scripts

| Command | Description | |---------|-------------| | npm run build | Compile TypeScript to JavaScript | | npm run dev | Build and run the server | | npm start | Run the compiled server | | npm run typecheck | Type-check without emitting files | | npm run lint | Run ESLint on source files | | npm run lint:fix | Run ESLint with auto-fix | | npm run format | Format source files with Prettier | | npm run format:check | Check formatting without writing | | npm run clean | Remove the dist/ directory | | npm run rebuild | Clean and rebuild | | npm test | Run tests with Jest |

---

Usage

Build & Run

npm run build
npm start

Or in a single step:

npm run dev

MCP Client Configuration

To use this server with an MCP client (e.g., Claude Desktop, Cursor), add the following to your MCP client configuration:

{
  "mcpServers": {
    "revolutx": {
      "command": "node",
      "args": ["/path/to/revolutx-mcp/dist/index.js"],
      "env": {
        "REVOLUTX_API_KEY": "your_api_key_here",
        "REVOLUTX_PRIVATE_KEY": "-----BEGIN PRIVATE KEY-----\nyour_base64_key\n-----END PRIVATE KEY-----"
      }
    }
  }
}

Replace /path/to/revolutx-mcp with the absolute path to your project directory.

---

Architecture

src/
├── index.ts                          # MCP server entry point
├── utils.ts                          # Auth (Ed25519 signing), error handling
├── tools/
│   ├── balance/
│   │   └── get_balances.ts
│   ├── configuration/
│   │   ├── get_currencies.ts
│   │   └── get_pairs.ts
│   ├── orders/
│   │   ├── place_order.ts
│   │   ├── cancel_order_by_id.ts
│   │   ├── cancel_all_orders.ts
│   │   ├── get_order_by_id.ts
│   │   ├── get_active_orders.ts
│   │   ├── get_historical_orders.ts
│   │   └── get_order_fills.ts
│   ├── trades/
│   │   ├── get_all_trades.ts
│   │   └── get_private_trades.ts
│   ├── market_data/
│   │   ├── get_order_book_snapshot.ts
│   │   ├── get_candles.ts
│   │   └── get_tickers.ts
│   └── public_market_data/
│       ├── get_last_trades.ts
│       └── get_order_book.ts
├── resources/
│   └── index.ts
└── prompts/
    └── index.ts

Authentication Flow

All private API requests follow the Revolut X Ed25519 signing protocol:

  1. Generate a timestamp (Date.now())
  2. Concatenate: timestamp + HTTP_METHOD + path + query + body
  3. Sign with crypto.sign(null, message, privateKey) (pure Ed25519)
  4. Attach headers: X-Revx-API-Key, X-Revx-Timestamp, X-Revx-Signature

---

API Reference

This server implements the complete Revolut X Crypto Exchange REST API:

---

License

ISC

Related MCP servers

Browse all →