Skip to main content
Glama
derive-options-mcp

derive-options-mcp

by Charlie85270

derive-options-mcp

An MCP server for Derive options. Describe a view; get real option structures, priced against the live order book, sized to your budget, with the payoff and the worst case spelled out.

you:   I think BTC goes up over the next month. I'd risk $500.

agent: BTC is 85,376.

       ## Up, capped — Price goes up, but not enormously.
       Costs $500 for 0.46 contracts, expiring Fri, Oct 30 (37 days).
       - Most you can lose: $500
       - Most you can make: $1,347
       - Breaks even at: 91,083
       Legs: buy 1× 90,000C @ $2,354 · sell 1× 94,000C @ $1,271

          $1,347 ┤                                ▀▀▀▀▀▀▀▀▀▀▀▀
                 ┤                               ▀│
                 ┤                              ▀│
              $0 ┼···························▀│···········
           -$500 ┤▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄│
                 └─────────────────┬──────────────────────
                               now 85,376

No API key. No account. No wallet. It reads Derive's public API and does the arithmetic locally.

Install

Claude Code

claude mcp add derive-options -- npx -y derive-options-mcp

Claude Desktop / Cursor / Codex — add to the MCP config:

{
  "mcpServers": {
    "derive-options": {
      "command": "npx",
      "args": ["-y", "derive-options-mcp"]
    }
  }
}

Remote — npm run serve starts a streamable-HTTP endpoint on :8080/mcp. To mount it inside an existing app, export the handler from any route that speaks Web Request/Response (a Next.js route handler, for instance):

import { handleMcpRequest } from "derive-options-mcp/dist/transports/http.js";
export const POST = handleMcpRequest;

Related MCP server: MCP Options Order Flow Server

Tools

Tool

Answers

propose_trades

"I think X goes up / stays flat / moves hard — what should I trade?"

propose_hedge

"I hold this. How do I protect it?"

price_structure

"What does an iron condor on ETH cost right now?"

list_strategies

Every shape, what it bets on, and its trade-off

list_currencies · list_expiries · get_option_chain

The market

get_spot · get_ticker · get_recent_trades

Prices and the tape

Every tool returns two things: text with an ASCII payoff diagram for the model and the chat window, and structuredContent carrying the full payoff curve, every leg with its fill price and its quote, breakevens, both extremes and a handoff link — enough for a host app to render its own chart without re-deriving anything and disagreeing with what the user was just told.

How a proposal is chosen

  1. Enumerate. Every shape that can express the view, at the three expiries nearest your horizon, at three distances from the money — about a hundred candidates.

  2. Price against the book. Buys cross the ask, sells hit the bid. Priced off mark, every spread looks free, and the sell legs are exactly where these books are thinnest. A leg with no price on its side is a rejection, not a number to soften — so nothing is ever proposed that cannot be traded.

  3. Size to the risk. Debit structures size on cost. Credit structures are constrained by what they can lose, not what they cost, so they size on that — otherwise a $500 budget quietly opens a $5,000 exposure.

  4. Rank. By what each pays if the market moves one standard deviation by that expiry — the market's own implied volatility, not a guess — per dollar at risk. Each expiry is scored against its own one-sigma move, so a nine-day structure isn't flattered by a thirty-seven-day move.

It costs three network requests: the chain is cached and a whole expiry's book arrives in one call, so the hundred candidates are priced from three responses.

Structures whose loss has no limit are excluded unless you pass allow_uncapped. They can't be sized against a budget, and their real constraint is margin this server cannot see.

What it will not do

It does not trade. It holds no key, signs nothing, and has no account. Every result carries a link where you review and sign it yourself.

This is deliberate rather than unfinished. A Derive session key is not scope-limited — the protocol grants it the same authority as the account owner, withdrawals included — so a server holding one would be custodial. Building the trade and signing it are separate jobs, and only one of them belongs here.

Prices move. Everything is a snapshot. Treat a result more than a minute old as stale and ask again.

It is not advice. It tells you what a structure costs and what it can lose. What to do about that is yours.

Configuration

Variable

Default

DERIVE_NETWORK

mainnet

v3-testnet to point at testnet

DERIVE_HANDOFF_URL

https://tacticalls.xyz

Where trade links point

PORT · MCP_PATH

8080 · /mcp

HTTP transport only

Mainnet is Derive v2 (api.lyra.finance) — v3 mainnet has not launched, and its option books read bid 0 / ask 0.

Development

npm install && npm run build
npm test                        # pricing core, against a book under test
npx @modelcontextprotocol/inspector node dist/transports/stdio.js

MIT.

Available Tools

10 tools
get_option_chainThe book for one dateA
Read-only

Every quoted strike on one expiry — bid, ask, mark, implied volatility and delta for both the up and down contract. Use when you need to reason about the actual book rather than take a proposal.

Inputs: currency (required), around, expiry_ts. Returns: rows, spot, currency, expiryTs, +1 more

get_recent_tradesWhat the market just didA
Read-only

The most recent option trades on the whole exchange, newest first. Use to see what other people are actually putting money on before proposing something.

Inputs: limit, currency. Returns: trades

get_spotWhat a coin costs nowA
Read-only

Current price, and optionally where it has been, so a view can be grounded in what actually happened.

Inputs: currency (required), history_hours. Returns: spot, history, currency, changePct

get_tickerOne contract, in fullA
Read-only

Bid, ask, mark, implied volatility and greeks for a single named instrument, e.g. 'ETH-20261030-3000-C'.

Inputs: instrument (required). Returns: iv, ask, bid, mark, +6 more

list_currenciesCoins with option chainsA
Read-only

Which coins can be traded here, with their current price and how many expiries are listed.

Inputs: no named parameters. Returns: currencies

list_expiriesDates you can tradeA
Read-only

Every listed expiry for a coin, with how far away it is and how many strikes are quoted on it.

Inputs: currency (required). Returns: spot, currency, expiries

list_strategiesEvery shape this server can priceA
Read-only

The option structures available, each with what it bets on and its trade-off, in plain language. Use to pick a shape id for price_structure, or to explain the options to someone.

Inputs: no named parameters. Returns: strategies

price_structurePrice one named structureA
Read-only

Price a specific shape at a specific expiry against the live book — use when the shape is already decided, or to compare a variant of something propose_trades returned. offset pushes every leg further out of the money (cheaper, needs a bigger move). Returns the same full detail as a proposal. Call list_strategies first if you need the shape ids.

Inputs: currency (required), strategy (required), offset, contracts, +1 more. Returns: error, structure

propose_hedgeProtect a holdingA
Read-only

Given a holding and the level they want protected, return ways to protect it, priced against the live book. Use this for 'I hold 5000 dollars of ETH and want to protect it', 'how do I put a floor under my BTC'. The payoff returned is the WHOLE position — the coin plus the options — not the options alone, which is the only honest way to show what protection does. Says plainly where each one stops protecting and what it costs as a share of the holding.

Inputs: currency (required), limit, protect_at, coin_amount, +2 more. Returns: spot, options, currency, rejected, +3 more

propose_tradesPropose trades for a viewA
Read-only

Given a view on a coin and a budget, return a few real option structures that express it, priced against the live book and sized to the budget. Use this for 'I think X will go up', 'what should I trade if I expect a big move', 'how do I bet on ETH staying flat'. Every result is tradable right now: candidates that cannot be filled are discarded, not softened. Each is ranked by what it pays if the market moves one standard deviation by that expiry — the market's own implied volatility, not a guess — divided by what it puts at risk. Structures whose loss has no limit are left out unless allow_uncapped is set.

Inputs: view (required), currency (required), budget_usd (required), limit, +3 more. Returns: spot, view, atmIv, currency, +5 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 10 tools

    Disambiguation5/5

    Each tool targets a distinct resource and action: trade proposals, hedging, pricing specific structures, listing strategies, currencies, expiries, option chains, spot, tickers, and recent trades. No two tools have overlapping purposes; even the two proposal tools are clearly separated by intent (expressing a view vs. protecting a holding).

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with lowercase snake_case: propose_trades, propose_hedge, price_structure, list_strategies, list_currencies, list_expiries, get_option_chain, get_spot, get_ticker, get_recent_trades. Verbs (propose, price, list, get) clearly indicate the action, and the pattern is uniform across the set.

    Tool Count5/5

    With 10 tools, the server is well-scoped for its domain of options analysis and trade generation. Each tool serves a clear purpose—generating ideas, hedging, pricing, listing available instruments, and retrieving market data—without redundancy or bloat.

    Completeness4/5

    The surface covers the core workflow: generating trade ideas, hedging existing holdings, pricing specific structures, listing strategies and market metadata, and accessing detailed market data. A minor gap is the lack of trade execution (the server seems focused on analysis and pricing), but this is likely intentional given the server's name and description. Overall, the domain is well-covered.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Provides real-time options analytics, pricing with Greeks, Monte Carlo simulations, volatility analysis, strategy backtesting, and risk metrics using actual market data from Yahoo Finance and Polygon.io.
      1
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables real-time options order flow analysis with pattern detection, institutional bias tracking, and monitoring of specific strike ranges and expirations. Provides comprehensive options trading data through integration with a high-performance Go-based data broker.
      11
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Connects AI assistants to live options market data with 70+ tools for exposure analytics, volatility, strategy signals, and historical backtesting.
      1
      MIT