78degrees avatar

QuantRisk

78degrees/mcp-server

Plugs institutional risk analytics directly into Claude via the Model Context Protocol. Exposes 10 tools including VaR calculation, Monte Carlo simulation with configurable paths, historical stress testing, portfolio optimization, and options Greeks. Free tier gets you 7 tools and 20 positions per portfolio. Pro unlocks mean-variance optimization, 500-position portfolios, and 100k simulation paths. Runs as a local stdio process that talks to a Cloudflare Workers backend, which pulls real market data from Yahoo Finance and runs the math server-side. Useful when you need actual calculated risk metrics instead of LLM estimates, or when you're building portfolio analysis workflows that need to ground decisions in real numbers.

tools
10
auth
Secret needed
transport
STDIO, HTTP
env var
1
last updated
May 9, 2026

Install

From registry metadata
$ npx add-mcp https://quantrisk-mcp.quantrisk.workers.dev/mcp --name 78degrees

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http 78degrees https://quantrisk-mcp.quantrisk.workers.dev/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 10 tools

Verified live against the running server on Nov 6, 2026.

analyze_riskCalculate core risk metrics for a portfolio — Value at Risk (VaR), Conditional VaR (CVaR), volatility, beta, and max drawdown.6 params

Calculate core risk metrics for a portfolio — Value at Risk (VaR), Conditional VaR (CVaR), volatility, beta, and max drawdown.

Parameters* required
benchmarkstring
Benchmark ticker for beta calculation, e.g. SPY or QQQ. Default: SPY.default: SPY
confidence_levelnumber
VaR confidence level as a decimal, e.g. 0.95 = 95%. Range: 0.01-0.99. Default: 0.95.default: 0.95
horizon_daysinteger
Risk horizon in trading days. 1 = overnight, 21 ≈ 1 month, 252 ≈ 1 year. Default: 1.default: 1
lookback_daysinteger
Number of historical trading days to use. 252 ≈ 1 year, 756 ≈ 3 years. Range: 30-1260. Default: 252.default: 252
methodstring
VaR calculation method. "historical" uses empirical return distribution, "parametric" assumes normality, "cornish_fisher" adjusts for skew and kurtosis. Default: "historical".one of historical · parametric · cornish_fisherdefault: historical
positions*array
Array of portfolio positions. Each entry needs a ticker and quantity. Free tier: max 20 positions. Paid tier: up to 500.
monte_carlo_simulationRun Monte Carlo simulation on a portfolio to model the distribution of future returns, including percentile outcomes and probability of loss.6 params

Run Monte Carlo simulation on a portfolio to model the distribution of future returns, including percentile outcomes and probability of loss.

Parameters* required
horizon_daysinteger
Simulation horizon in trading days. 21 ≈ 1 month, 63 ≈ 1 quarter, 252 ≈ 1 year. Default: 21.default: 21
lookback_daysinteger
Historical window used to estimate drift and volatility parameters. Range: 30-1260 trading days. Default: 252.default: 252
modelstring
Stochastic process model. "gbm" = Geometric Brownian Motion (standard), "jump_diffusion" = adds jump risk for fat-tail scenarios. Default: "gbm".one of gbm · jump_diffusiondefault: gbm
num_pathsinteger
Number of simulation paths to run. More paths = more accurate but slower. Free tier: max 1,000. Paid tier: up to 100,000. Default: 10,000.default: 10000
positions*array
Array of portfolio positions. Free tier: max 20 positions. Paid tier: up to 500.
seedvalue
Random seed for reproducible results. Omit for a fresh random run each time.
stress_testStress test a portfolio against historical crisis scenarios (GFC 2008, COVID 2020, etc.) or custom shocks (paid tier).3 params

Stress test a portfolio against historical crisis scenarios (GFC 2008, COVID 2020, etc.) or custom shocks (paid tier).

Parameters* required
custom_shocksvalue
Custom shock definitions. PAID tier only. Each shock specifies ticker-level, sector-level, or market-wide price changes.
positions*array
Array of portfolio positions. Free tier: max 20 positions and historical scenarios only. Paid tier: up to 500 positions plus custom shocks.
scenariosarray
Historical scenarios to run. Available values: gfc_2008, covid_2020, dot_com_2000, black_monday_1987, taper_tantrum_2013, rate_hike_2022, volmageddon_2018, euro_crisis_2011. Default: [gfc_2008, cov...
optimize_portfolioFind the optimal portfolio allocation using mean-variance optimization. Supports max Sharpe, min variance, and target return objectives. Paid tier only.6 params

Find the optimal portfolio allocation using mean-variance optimization. Supports max Sharpe, min variance, and target return objectives. Paid tier only.

Parameters* required
constraintsobject
Optional weight constraints. See ConstraintsInput for details.
lookback_daysinteger
Historical window for estimating return and covariance. 252 = 1 year, 756 = 3 years, 1260 = 5 years. Range: 252-1260. Default: 756.default: 756
objectivestring
Optimization objective. "max_sharpe" = maximize risk-adjusted return, "min_variance" = minimize portfolio volatility, "target_return" = hit a specific return with minimum risk. Default: "max_sharpe".one of max_sharpe · min_variance · target_returndefault: max_sharpe
risk_free_ratenumber
Annualized risk-free rate as a decimal, e.g. 0.05 = 5%. Used in Sharpe ratio calculation. Default: 0.05.default: 0.05
target_returnvalue
Required when objective is "target_return". Annualized return as a decimal, e.g. 0.12 = 12% annual return target.
tickers*array
Universe of tickers to optimize across. Must be 2-50 tickers. The optimizer will determine the best weights within this set.
correlation_matrixCompute the pairwise correlation matrix for a set of assets. Identifies highly correlated pairs and diversification opportunities.3 params

Compute the pairwise correlation matrix for a set of assets. Identifies highly correlated pairs and diversification opportunities.

Parameters* required
lookback_daysinteger
Historical window for computing correlations in trading days. 30 = ~6 weeks, 252 = ~1 year. Range: 30-1260. Default: 252.default: 252
methodstring
Correlation method. "pearson" = linear correlation (standard), "spearman" = rank-based (robust to outliers), "kendall" = concordance-based. Default: "pearson".one of pearson · spearman · kendalldefault: pearson
tickers*array
Tickers to include in the correlation matrix. Minimum 2, maximum 50. Free tier: max 10 tickers. Paid tier: up to 50.
performance_attributionBreak down portfolio performance into factor exposures, sector allocation, and position contributions. Computes Sharpe, Sortino, Treynor, Calmar, and Information ratios.4 params

Break down portfolio performance into factor exposures, sector allocation, and position contributions. Computes Sharpe, Sortino, Treynor, Calmar, and Information ratios.

Parameters* required
benchmarkstring
Benchmark ticker for relative performance metrics (Information Ratio, Tracking Error, Beta). Default: SPY.default: SPY
period_daysinteger
Measurement period in trading days. 252 = ~1 year. Range: 30-1260. Default: 252.default: 252
positions*array
Array of portfolio positions. Free tier: max 20 positions (basic ratios only). Paid tier: up to 500 positions with full factor attribution.
risk_free_ratenumber
Annualized risk-free rate as a decimal, e.g. 0.05 = 5%. Used in Sharpe, Sortino, and Treynor ratios. Default: 0.05.default: 0.05
sector_exposureBreak down portfolio exposure by GICS sector, market cap, and asset class. Returns concentration metrics including the Herfindahl-Hirschman Index.1 params

Break down portfolio exposure by GICS sector, market cap, and asset class. Returns concentration metrics including the Herfindahl-Hirschman Index.

Parameters* required
positions*array
Array of portfolio positions to analyze. Returns GICS sector weights, market cap breakdown, and concentration metrics.
price_historyFetch historical OHLCV price data for one or more tickers. Free tier: 1 ticker, 252 days. Paid tier: up to 20 tickers, 1260 days.3 params

Fetch historical OHLCV price data for one or more tickers. Free tier: 1 ticker, 252 days. Paid tier: up to 20 tickers, 1260 days.

Parameters* required
daysinteger
Number of historical trading days to return. Free tier: max 252 days (~1 year). Paid tier: up to 1260 days (~5 years). Default: 252.default: 252
intervalstring
Price interval. "daily" returns one OHLCV row per trading day, "weekly" aggregates to weekly bars, "monthly" aggregates to monthly bars. Default: "daily".one of daily · weekly · monthlydefault: daily
tickers*array
Ticker symbols to fetch price history for. Free tier: max 1 ticker. Paid tier: up to 20 tickers.
compare_portfoliosCompare two or more portfolio allocations head-to-head across all key risk and return metrics. Paid tier only.3 params

Compare two or more portfolio allocations head-to-head across all key risk and return metrics. Paid tier only.

Parameters* required
confidence_levelnumber
VaR confidence level as a decimal, e.g. 0.95 = 95%. Range: 0.01-0.99. Default: 0.95.default: 0.95
period_daysinteger
Lookback period in trading days used for return and risk calculations. 252 = ~1 year. Range: 30-1260. Default: 252.default: 252
portfolios*array
Two to five named portfolios to compare head-to-head. Each needs a unique name and a list of positions. Min: 2, max: 5.
calculate_greeksCalculate option Greeks (delta, gamma, theta, vega, rho) for individual options or an options portfolio. Uses Black-Scholes for European, binomial for American style. Paid tier only.2 params

Calculate option Greeks (delta, gamma, theta, vega, rho) for individual options or an options portfolio. Uses Black-Scholes for European, binomial for American style. Paid tier only.

Parameters* required
options*array
Array of option positions to calculate Greeks for. 1-100 options. Results include per-option Greeks and aggregated portfolio Greeks.
risk_free_ratenumber
Annualized risk-free rate as a decimal, e.g. 0.05 = 5%. Used in Black-Scholes and binomial pricing models. Default: 0.05.default: 0.05

Sponsors

Configuration

QUANTRISK_API_KEYsecret

API key from https://quantrisk.dev/upgrade. Optional — without one, requests run on the free tier (limited tools and call quotas).

Readme

QuantRisk

Institutional-grade portfolio risk analytics for Claude and any MCP client.

npm version npm downloads License: MIT MCP Compatible

VaR / Monte Carlo / Stress Testing / Portfolio Optimization / Greeks / Correlation Matrices

Real market data. Real math. Not hallucinated numbers.

Website · Get Pro · Documentation


Quick Start

1. Install

npm install -g @quantrisk/mcp-server

2. Configure (Claude Desktop — see below for Cursor)

Add to your claude_desktop_config.json:


View the full README on GitHub

Details

Repository
github.com/78degrees/mcp-server
Website
quantrisk.dev
Category
Monitoring & Observability
Package
@quantrisk/mcp-server
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active
Tools verified
Nov 6, 2026

More from 78degrees

Related Monitoring & Observability MCP servers

View all
1aplaceforallmystuff avatarMcp Pickaxeaplaceforallmystuff/mcp-pickaxeMCP server for Pickaxe API - manage AI agents, knowledge bases, users, and analytics2stars
2elasticflowapp avatarElasticflowelasticflowapp/elasticflow-mcpAI-native team workspace — tables, documents, workflow automation, live dashboards & analytics2stars
3elfsight avatarElfsight AI Chatbotelfsight/ai-chatbot-mcpRead conversations, leads, knowledge base and analytics of your Elfsight AI Chatbot widgets.2stars
4cyanheads avatarFederal Regulations Mcp Servercyanheads/federal-regulations-mcp-serverSearch and trace US federal rules across the Federal Register, eCFR, and Regulations.gov.2stars
5geiserx avatarDuplicacy MCPgeiserx/duplicacy-mcpMCP server for Duplicacy: backup health, status and Prometheus metrics from duplicacy-exporter2stars
6getseline avatarSelinegetseline/seline-mcpMCP server for the Seline Analytics API2stars