Skip to main content
Glama

greeks-mcp

PyPI Python License: MIT Glama

A Model Context Protocol server that exposes the Greeks options-analytics API as tools for any MCP client — Claude Desktop, Cursor, Claude Code, and more. Ask your assistant for GEX, Greeks, Max Pain, unusual flow or a full dashboard on any ticker and it pulls live from the API.

Only derived/computed analytics are exposed — no raw market data is redistributed.

Quickstart

1. Get an API key. Sign up at greeks.pro and create a key — it looks like grk_<48 hex>. Public tools (screener, health, plans) work without one.

2. Add one block to your client config and restart the client:

{
  "mcpServers": {
    "greeks-analytics": {
      "command": "uvx",
      "args": ["greeks-mcp"],
      "env": { "GREEKS_API_KEY": "grk_your_key_here" }
    }
  }
}

That's it — the assistant now has all 17 tools. uv downloads and runs the published package on demand in an isolated environment, so there's nothing to install or keep updated by hand.

Prefer pipx? pipx install greeks-mcp, then use "command": "greeks-mcp" with no args.

Docker

A Dockerfile is included for containerized runs. The server speaks stdio (what MCP clients spawn), so run it interactively (-i):

docker build -t greeks-mcp .
docker run --rm -i -e GREEKS_API_KEY=grk_your_key_here greeks-mcp

The image starts and answers MCP introspection (initialize + tools/list) with no key; GREEKS_API_KEY is only needed for the authenticated analytics tools.

To wire the container into an MCP client, set "command": "docker" with "args": ["run","--rm","-i","-e","GREEKS_API_KEY","greeks-mcp"].

Where the config block goes

The same mcpServers block works in every MCP client — only the file location differs.

Client

Config file

Claude Desktop (macOS)

~/Library/Application Support/Claude/claude_desktop_config.json

Claude Desktop (Windows)

%APPDATA%\Claude\claude_desktop_config.json

Cursor (global)

~/.cursor/mcp.json

Cursor (per-project)

<project>/.cursor/mcp.json

Ready-to-copy configs live in examples/. After reloading, the server shows up under Cursor's Settings → MCP with a green dot and its 17 tools; type @greeks-analytics in chat (or just ask for GEX/greeks/max pain) to use them.

Related MCP server: options-chain-mcp

Tools

Tool

Endpoint

Min plan

What it returns

get_max_pain

/api/analytics/maxpain

Free

Max Pain strike per expiration

get_greeks

/api/analytics/greeks

Trader

Δ Γ Θ V ρ, theo price, mispricing per contract

get_gex

/api/analytics/gex

Trader

GEX/DEX per strike, total Net GEX, Gamma Flip

get_flow

/api/analytics/flow

Trader

Unusual-activity signals

get_vol_structure

/api/analytics/vol-structure

Trader

IV skew + term structure with plain-English reads

get_overview

/api/analytics/overview

Pro

Full dashboard (sentiment, GEX, max pain, expected move, IV surface, term structure, top flow)

get_vex

/api/analytics/vex

Pro

Vanna & Charm exposure (2nd-order dealer Greeks)

get_zero_dte

/api/analytics/zero-dte

Pro

0DTE focus panel — pin risk, gamma flip, max pain

get_gex_intraday

/api/analytics/gex-intraday

Pro

Intraday gamma-regime time-series + flip timing

get_track_record_detail

/api/analytics/track-record

Pro

Day-by-day level outcomes (the receipts behind the %)

get_snapshot

/api/analytics/snapshot

—

Compact analytics snapshot

get_levels

/api/analytics/levels

—

Options-derived support/resistance levels

screener

/api/public/screener

public

Watchlist screener — discover interesting symbols

gex_heatmap

/api/public/gex-heatmap

public

GEX-by-strike heatmap for a watchlist symbol

track_record

/api/public/track-record

public

Aggregated signal accuracy (~last 35 days)

list_plans

/api/billing/plans

public

Plans, prices, limits, routes

health

/health

public

Service health

Most analytics tools take symbol (required) and optional expiration (a Unix timestamp, or "all" for every expiration; omit for the nearest expiry). get_greeks also accepts range="atm", moneyness="low,high" and limit. Two take different args: get_gex_intraday uses date="YYYY-MM-DD" (not expiration), and get_track_record_detail takes an optional symbol only.

Configuration

Env var

Required

Default

Description

GREEKS_API_KEY

for /api/analytics/*

—

Your grk_... key. Public tools work without it.

GREEKS_BASE_URL

no

https://api.greeks.pro

API base URL

GREEKS_TIMEOUT

no

30

Per-request timeout (s)

MCP_TRANSPORT

no

stdio

stdio (for clients) or http

Run from source

Requires Python ≥ 3.10.

git clone https://github.com/ArtBreguez/greeks-mcp.git
cd greeks-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

# stdio (what MCP clients spawn)
GREEKS_API_KEY=grk_... greeks-mcp        # or: python -m greeks_mcp

# or over HTTP
GREEKS_API_KEY=grk_... MCP_TRANSPORT=http greeks-mcp

Development

# Inspect the tools interactively without a full client:
mcp dev src/greeks_mcp/server.py

# Tests (no network needed):
python tests/test_server.py     # tool wiring (URLs, params, headers, errors)
python tests/test_e2e.py        # spawns the server over stdio, calls all 17 tools

Releasing (maintainers)

Published to PyPI via Trusted Publishing (OIDC — no API token stored). One-time setup:

  1. On PyPI → Account settings → Publishing → add a pending publisher: project greeks-mcp, owner ArtBreguez, repo greeks-mcp, workflow publish.yml, environment pypi.

  2. In GitHub repo settings → Environments, create an environment named pypi.

Then cut a release by bumping version in pyproject.toml + __init__.py and pushing a tag:

git tag v0.1.0 && git push origin v0.1.0

The workflow builds the sdist+wheel, verifies the wheel installs and registers all 17 tools, and publishes.

Notes

  • Plans & errors: a 402/403 means your plan doesn't include that route (or you hit the symbol/rate limit). Call list_plans to see what each tier unlocks.

  • expiration="all" returns every expiration — richer but slower. For heavy names prefer a specific expiration timestamp, or raise GREEKS_TIMEOUT.

  • Derived data only. No raw market data (quotes, bid/ask, OI, contract prices) is redistributed — everything here is computed analytics.

License

MIT — see LICENSE.

Available Tools

12 tools
get_flowA

Unusual options activity detection — contracts with abnormally high volume relative to open interest, typically signalling institutional/"smart money" positioning.

Signals: unusual_volume (high: Vol/OI ≥ 3.0, medium: ≥ 1.5) and opening_position (Vol ≥ 50 with OI = 0). Contracts with volume < 10 are noise.

Plan: Trader and up.

Args: symbol: Underlying ticker. expiration: Unix timestamp of a specific expiry, or "all". Omit for the nearest expiry.

Returns FlowResponse JSON: symbol, spotPrice, timestamp, and signals[] each with contractSymbol, type, strike, expiration, dte, volumeOIRatio, iv, signal, severity.

Inputs: symbol (required), expiration.

get_gexA

Gamma & Delta Exposure (GEX/DEX) per strike, plus total Net GEX and the Gamma Flip level (strike where Net GEX crosses zero — a regime transition). Positive Net GEX = dealers long gamma (price pins); negative = moves amplified.

Plan: Trader and up.

Args: symbol: Underlying ticker. expiration: Unix timestamp of a specific expiry, or "all". Omit for the nearest expiry. symbols: Optional comma-separated list for a multi-symbol GEX request (e.g. "SPY,QQQ,IWM"); when set it takes precedence over symbol.

Returns GEXResponse JSON: symbol, spotPrice, timestamp, totalNetGEX, gammaFlip, and strikes[] with callGEX/putGEX/netGEX and callDEX/putDEX/netDEX.

Inputs: symbol (required), symbols, expiration.

get_greeksA

Black-Scholes Greeks (Delta, Gamma, Theta, Vega, Rho) plus theoretical price and mispricing for every contract in the chain.

Plan: Trader and up.

Args: symbol: Underlying ticker. expiration: Unix timestamp of a specific expiry, or "all". Omit for the nearest expiry. range: Pass "atm" to restrict the chain to at-the-money contracts. moneyness: A "low,high" pair (e.g. "0.9,1.1") to filter contracts by strike/spot ratio. limit: Cap the number of contracts returned (per side).

Returns GreeksResponse JSON: symbol, spotPrice, timestamp, and contracts[] each with delta/gamma/theta/vega/rho, iv, theoreticalPrice, mispricing, inTheMoney.

Inputs: symbol (required), limit, range, moneyness, +1 more.

get_levelsA

Key options-derived price levels for a symbol (support/resistance style levels from gamma and open-interest structure).

Args: symbol: Underlying ticker. expiration: Unix timestamp of a specific expiry, or "all". Omit for the nearest expiry.

Returns the LevelsResponse JSON as computed by the analytics engine.

Inputs: symbol (required), expiration.

get_max_painA

Max Pain per expiration — the strike that minimizes total option value (where most options expire worthless), a magnet the price tends to converge toward at expiration.

Plan: Free (1 symbol, 15-min delay) and up.

Args: symbol: Underlying ticker, e.g. "AAPL", "SPY", "NDAQ". expiration: Unix expiration timestamp for a single expiry, or "all" for every expiration (slower, complete). Omit for the nearest expiry.

Returns the raw MaxPainResponse JSON: symbol, spotPrice, timestamp, and results[] with maxPainStrike, totalPainAtMax, spotDistance, spotDistancePct.

Inputs: symbol (required), expiration.

get_overviewA

Full analytics dashboard for a symbol in one call: sentiment, GEX summary, max pain, expected moves, IV surface, term structure and top unusual flow. The cheapest way to get everything for a symbol at once.

Plan: Pro and up.

Args: symbol: Underlying ticker. expiration: Unix timestamp of a specific expiry, or "all" (recommended for the full dashboard). Omit for the nearest expiry.

Returns OverviewResponse JSON: symbol, spotPrice, timestamp, riskFreeRate, dividendYield, sentiment, gexSummary, maxPain[], expectedMoves[], termStructure[], ivSurface[], topFlow[].

Inputs: symbol (required), expiration.

get_snapshotA

Compact analytics snapshot for a symbol — a lighter-weight summary than the full overview, suitable for quick checks and cards.

Args: symbol: Underlying ticker. expiration: Unix timestamp of a specific expiry, or "all". Omit for the nearest expiry.

Returns the SnapshotResponse JSON as computed by the analytics engine.

Inputs: symbol (required), expiration.

gex_heatmapA

Public GEX-by-strike heatmap for a watchlist symbol (no key needed, IP rate-limited, cached ~5 min). A lightweight, unauthenticated way to see gamma exposure per strike without a plan.

Args: symbol: A watchlist ticker (SPY, QQQ, AAPL, NVDA, TSLA, …). Defaults to SPY. Symbols outside the public watchlist return an error — use the authenticated get_gex for arbitrary symbols. expiry: Optional Unix expiration timestamp; omit for the nearest expiry.

Returns the heatmap JSON: symbol plus GEX by strike.

Inputs: expiry, symbol.

healthA

Service health check: returns {status, supabase, stripe}. Public — no key needed. Use to verify GREEKS_BASE_URL is reachable before other calls.

Inputs: no named parameters.

list_plansA

List the available commercial plans with prices, limits and included routes (Free / Trader / Pro / Institutional). Public — no key needed.

Use this to explain to the user which analytics their plan unlocks, or why a call returned 402/403.

Inputs: no named parameters.

screenerA

Public options screener across the curated watchlist (~26 liquid names: SPY, QQQ, AAPL, NVDA, TSLA, …). Returns a per-symbol row with spot price, sentiment and headline analytics — the fastest way to DISCOVER which symbols are interesting before drilling in with the authenticated analytics tools.

Public — no key needed (IP rate-limited). Takes no arguments; the watchlist is fixed server-side.

Returns the screener JSON (rows[] of symbol/spotPrice/sentiment/…).

Inputs: no named parameters.

track_recordA

Public track record — aggregated accuracy of the published analytics over roughly the last 35 days (per-symbol daily snapshots vs realized high/low/ close). Use it to gauge how the signals have performed historically.

Public — no key needed. Takes no arguments.

Returns the track-record JSON as computed server-side (updatedAt + records).

Inputs: no named parameters.

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 12 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes (greeks, GEX, flow, max pain, levels), but get_overview and get_snapshot both provide aggregated summaries and could be confused. Also get_gex and gex_heatmap overlap in concept, though one is authenticated and more comprehensive.

    Naming Consistency3/5

    Most tools follow a verb_noun pattern (get_greeks, get_flow, list_plans), but a few use bare nouns or noun_noun (health, screener, gex_heatmap, track_record). This mixed convention is noticeable but not chaotic, so it remains readable.

    Tool Count5/5

    With 12 tools, the server is well-scoped for an options analytics service. Each tool serves a clear purpose, from core analytics to public discovery and meta operations, without excessive overlap or unnecessary bloat.

    Completeness4/5

    The tool surface covers a comprehensive set of options analytics: greeks, GEX, flow, max pain, and levels, plus an aggregated overview. Minor gaps exist (e.g., no standalone expected-moves tool), but these are embedded in overview and snapshot, so agents can work around them.

    Maintenance

    ActivityInactive
    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
      A
      quality
      D
      maintenance
      Read-only MCP server for options research with server-side filtering to reduce token usage. Supports Tradier and Alpaca data providers.
      4
      24 npm
      11
      MIT
    • A
      license
      C
      quality
      D
      maintenance
      Enables querying real-time and historical financial market data for stocks, options, forex, and crypto, including quotes, trades, technical indicators, and reference data through a set of MCP tools.
      71
      3
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      An MCP server that gives an LLM agent a typed, audited tool surface over quant crypto-options desk analytics: gamma exposure, vanna, skew, vol surface, options flow, technicals, portfolio greeks, scenario analysis, and live positions.
      22
      2
      MIT