{"name":"dev.quantrisk/mcp-server","slug":"quantrisk-mcp-server","title":"QuantRisk","description":"Portfolio risk analytics — VaR, Monte Carlo, optimization, options Greeks, stress testing.","url":"https://mcp.market/server/quantrisk-mcp-server","rating":null,"grade":"B","score":78,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":19,"stars":2,"forks":1,"downloads_week":null,"last_push_at":"2026-05-26T18:19:39.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T04:55:32.992Z","last_ok_at":"2026-11-04T04:55:32.992Z","latency_ms":258},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/78degrees/mcp-server","website":"https://quantrisk.dev","version":"1.0.2","remotes":[{"type":"streamable-http","url":"https://quantrisk-mcp.quantrisk.workers.dev/mcp"}],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@quantrisk/mcp-server","version":"1.0.2","transport":{"type":"stdio"},"environmentVariables":[{"description":"API key from https://quantrisk.dev/upgrade. Optional — without one, requests run on the free tier (limited tools and call quotas).","isSecret":true,"name":"QUANTRISK_API_KEY"}]}],"tools":[{"name":"analyze_risk","description":"Calculate core risk metrics for a portfolio — Value at Risk (VaR), Conditional VaR (CVaR), volatility, beta, and max drawdown.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"positions":{"type":"array","items":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Z0-9.^-]{1,10}$","description":"Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters."},"quantity":{"type":"number","description":"Number of shares held. Use a negative value to represent a short position."},"cost_basis":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Per-share cost basis in USD. Optional — used only for P&L calculations."}},"required":["ticker","quantity"],"additionalProperties":false},"minItems":1,"maxItems":500,"description":"Array of portfolio positions. Each entry needs a ticker and quantity. Free tier: max 20 positions. Paid tier: up to 500."},"confidence_level":{"type":"number","minimum":0.01,"maximum":0.99,"default":0.95,"description":"VaR confidence level as a decimal, e.g. 0.95 = 95%. Range: 0.01-0.99. Default: 0.95."},"horizon_days":{"type":"integer","minimum":1,"maximum":252,"default":1,"description":"Risk horizon in trading days. 1 = overnight, 21 ≈ 1 month, 252 ≈ 1 year. Default: 1."},"method":{"type":"string","enum":["historical","parametric","cornish_fisher"],"default":"historical","description":"VaR calculation method. \"historical\" uses empirical return distribution, \"parametric\" assumes normality, \"cornish_fisher\" adjusts for skew and kurtosis. Default: \"historical\"."},"benchmark":{"type":"string","minLength":1,"maxLength":10,"default":"SPY","description":"Benchmark ticker for beta calculation, e.g. SPY or QQQ. Default: SPY."},"lookback_days":{"type":"integer","minimum":30,"maximum":1260,"default":252,"description":"Number of historical trading days to use. 252 ≈ 1 year, 756 ≈ 3 years. Range: 30-1260. Default: 252."}},"required":["positions"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"calculate_greeks","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"options":{"type":"array","items":{"type":"object","properties":{"underlying":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Z0-9.^-]{1,10}$","description":"Ticker symbol of the underlying asset, e.g. AAPL."},"strike":{"type":"number","exclusiveMinimum":0,"description":"Option strike price in USD. Must be a positive number."},"expiry":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Option expiry date in ISO 8601 format, e.g. 2026-12-19. Must be a future date."},"option_type":{"type":"string","enum":["call","put"],"description":"Option type: \"call\" gives the right to buy, \"put\" gives the right to sell."},"style":{"type":"string","enum":["european","american"],"default":"european","description":"Option exercise style. \"european\" can only be exercised at expiry (Black-Scholes). \"american\" can be exercised any time (binomial model). Default: \"european\"."},"quantity":{"type":"integer","default":1,"description":"Number of contracts. Positive = long, negative = short. Default: 1."},"implied_volatility":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Implied volatility as a decimal, e.g. 0.25 = 25%. If omitted or null, it is computed from market_price."},"market_price":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Current market price of the option in USD. Required when implied_volatility is not provided."}},"required":["underlying","strike","expiry","option_type"],"additionalProperties":false},"minItems":1,"maxItems":100,"description":"Array of option positions to calculate Greeks for. 1-100 options. Results include per-option Greeks and aggregated portfolio Greeks."},"risk_free_rate":{"type":"number","minimum":0,"maximum":1,"default":0.05,"description":"Annualized risk-free rate as a decimal, e.g. 0.05 = 5%. Used in Black-Scholes and binomial pricing models. Default: 0.05."}},"required":["options"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"compare_portfolios","description":"Compare two or more portfolio allocations head-to-head across all key risk and return metrics. Paid tier only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"portfolios":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50,"description":"Human-readable label for this portfolio, e.g. 'Current' or 'Rebalanced'. 1-50 chars."},"positions":{"type":"array","items":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Z0-9.^-]{1,10}$","description":"Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters."},"quantity":{"type":"number","description":"Number of shares held. Use a negative value to represent a short position."},"cost_basis":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Per-share cost basis in USD. Optional — used only for P&L calculations."}},"required":["ticker","quantity"],"additionalProperties":false},"minItems":1,"maxItems":500,"description":"Positions in this portfolio. 1-500 entries."}},"required":["name","positions"],"additionalProperties":false},"minItems":2,"maxItems":5,"description":"Two to five named portfolios to compare head-to-head. Each needs a unique name and a list of positions. Min: 2, max: 5."},"period_days":{"type":"integer","minimum":30,"maximum":1260,"default":252,"description":"Lookback period in trading days used for return and risk calculations. 252 = ~1 year. Range: 30-1260. Default: 252."},"confidence_level":{"type":"number","minimum":0.01,"maximum":0.99,"default":0.95,"description":"VaR confidence level as a decimal, e.g. 0.95 = 95%. Range: 0.01-0.99. Default: 0.95."}},"required":["portfolios"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"correlation_matrix","description":"Compute the pairwise correlation matrix for a set of assets. Identifies highly correlated pairs and diversification opportunities.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tickers":{"type":"array","items":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Z0-9.^-]{1,10}$"},"minItems":2,"maxItems":50,"description":"Tickers to include in the correlation matrix. Minimum 2, maximum 50. Free tier: max 10 tickers. Paid tier: up to 50."},"lookback_days":{"type":"integer","minimum":30,"maximum":1260,"default":252,"description":"Historical window for computing correlations in trading days. 30 = ~6 weeks, 252 = ~1 year. Range: 30-1260. Default: 252."},"method":{"type":"string","enum":["pearson","spearman","kendall"],"default":"pearson","description":"Correlation method. \"pearson\" = linear correlation (standard), \"spearman\" = rank-based (robust to outliers), \"kendall\" = concordance-based. Default: \"pearson\"."}},"required":["tickers"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"monte_carlo_simulation","description":"Run Monte Carlo simulation on a portfolio to model the distribution of future returns, including percentile outcomes and probability of loss.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"positions":{"type":"array","items":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Z0-9.^-]{1,10}$","description":"Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters."},"quantity":{"type":"number","description":"Number of shares held. Use a negative value to represent a short position."},"cost_basis":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Per-share cost basis in USD. Optional — used only for P&L calculations."}},"required":["ticker","quantity"],"additionalProperties":false},"minItems":1,"maxItems":500,"description":"Array of portfolio positions. Free tier: max 20 positions. Paid tier: up to 500."},"num_paths":{"type":"integer","minimum":100,"maximum":100000,"default":10000,"description":"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."},"horizon_days":{"type":"integer","minimum":1,"maximum":252,"default":21,"description":"Simulation horizon in trading days. 21 ≈ 1 month, 63 ≈ 1 quarter, 252 ≈ 1 year. Default: 21."},"model":{"type":"string","enum":["gbm","jump_diffusion"],"default":"gbm","description":"Stochastic process model. \"gbm\" = Geometric Brownian Motion (standard), \"jump_diffusion\" = adds jump risk for fat-tail scenarios. Default: \"gbm\"."},"lookback_days":{"type":"integer","minimum":30,"maximum":1260,"default":252,"description":"Historical window used to estimate drift and volatility parameters. Range: 30-1260 trading days. Default: 252."},"seed":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}],"description":"Random seed for reproducible results. Omit for a fresh random run each time."}},"required":["positions"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"optimize_portfolio","description":"Find the optimal portfolio allocation using mean-variance optimization. Supports max Sharpe, min variance, and target return objectives. Paid tier only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tickers":{"type":"array","items":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Z0-9.^-]{1,10}$"},"minItems":2,"maxItems":50,"description":"Universe of tickers to optimize across. Must be 2-50 tickers. The optimizer will determine the best weights within this set."},"objective":{"type":"string","enum":["max_sharpe","min_variance","target_return"],"default":"max_sharpe","description":"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\"."},"target_return":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Required when objective is \"target_return\". Annualized return as a decimal, e.g. 0.12 = 12% annual return target."},"constraints":{"type":"object","properties":{"min_weight":{"type":"number","minimum":0,"maximum":1,"default":0,"description":"Minimum allocation weight per asset as a decimal. 0.0 = no minimum (asset may be excluded). Range: 0.0-1.0. Default: 0.0."},"max_weight":{"type":"number","minimum":0,"maximum":1,"default":1,"description":"Maximum allocation weight per asset as a decimal. 0.1 = max 10% in any single asset. Range: 0.0-1.0. Default: 1.0."},"sector_max":{"anyOf":[{"type":"object","additionalProperties":{"type":"number","minimum":0,"maximum":1}},{"type":"null"}],"description":"Maximum total portfolio weight per sector, e.g. { Technology: 0.30 } = max 30% in tech. Keys should be GICS sector names."}},"additionalProperties":false,"description":"Optional weight constraints. See ConstraintsInput for details."},"risk_free_rate":{"type":"number","minimum":0,"maximum":1,"default":0.05,"description":"Annualized risk-free rate as a decimal, e.g. 0.05 = 5%. Used in Sharpe ratio calculation. Default: 0.05."},"lookback_days":{"type":"integer","minimum":252,"maximum":1260,"default":756,"description":"Historical window for estimating return and covariance. 252 = 1 year, 756 = 3 years, 1260 = 5 years. Range: 252-1260. Default: 756."}},"required":["tickers"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"performance_attribution","description":"Break down portfolio performance into factor exposures, sector allocation, and position contributions. Computes Sharpe, Sortino, Treynor, Calmar, and Information ratios.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"positions":{"type":"array","items":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Z0-9.^-]{1,10}$","description":"Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters."},"quantity":{"type":"number","description":"Number of shares held. Use a negative value to represent a short position."},"cost_basis":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Per-share cost basis in USD. Optional — used only for P&L calculations."}},"required":["ticker","quantity"],"additionalProperties":false},"minItems":1,"maxItems":500,"description":"Array of portfolio positions. Free tier: max 20 positions (basic ratios only). Paid tier: up to 500 positions with full factor attribution."},"period_days":{"type":"integer","minimum":30,"maximum":1260,"default":252,"description":"Measurement period in trading days. 252 = ~1 year. Range: 30-1260. Default: 252."},"benchmark":{"type":"string","minLength":1,"maxLength":10,"default":"SPY","description":"Benchmark ticker for relative performance metrics (Information Ratio, Tracking Error, Beta). Default: SPY."},"risk_free_rate":{"type":"number","minimum":0,"maximum":1,"default":0.05,"description":"Annualized risk-free rate as a decimal, e.g. 0.05 = 5%. Used in Sharpe, Sortino, and Treynor ratios. Default: 0.05."}},"required":["positions"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"price_history","description":"Fetch historical OHLCV price data for one or more tickers. Free tier: 1 ticker, 252 days. Paid tier: up to 20 tickers, 1260 days.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tickers":{"type":"array","items":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Z0-9.^-]{1,10}$"},"minItems":1,"maxItems":20,"description":"Ticker symbols to fetch price history for. Free tier: max 1 ticker. Paid tier: up to 20 tickers."},"days":{"type":"integer","minimum":1,"maximum":1260,"default":252,"description":"Number of historical trading days to return. Free tier: max 252 days (~1 year). Paid tier: up to 1260 days (~5 years). Default: 252."},"interval":{"type":"string","enum":["daily","weekly","monthly"],"default":"daily","description":"Price interval. \"daily\" returns one OHLCV row per trading day, \"weekly\" aggregates to weekly bars, \"monthly\" aggregates to monthly bars. Default: \"daily\"."}},"required":["tickers"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sector_exposure","description":"Break down portfolio exposure by GICS sector, market cap, and asset class. Returns concentration metrics including the Herfindahl-Hirschman Index.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"positions":{"type":"array","items":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Z0-9.^-]{1,10}$","description":"Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters."},"quantity":{"type":"number","description":"Number of shares held. Use a negative value to represent a short position."},"cost_basis":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Per-share cost basis in USD. Optional — used only for P&L calculations."}},"required":["ticker","quantity"],"additionalProperties":false},"minItems":1,"maxItems":500,"description":"Array of portfolio positions to analyze. Returns GICS sector weights, market cap breakdown, and concentration metrics."}},"required":["positions"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"stress_test","description":"Stress test a portfolio against historical crisis scenarios (GFC 2008, COVID 2020, etc.) or custom shocks (paid tier).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"positions":{"type":"array","items":{"type":"object","properties":{"ticker":{"type":"string","minLength":1,"maxLength":10,"pattern":"^[A-Z0-9.^-]{1,10}$","description":"Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters."},"quantity":{"type":"number","description":"Number of shares held. Use a negative value to represent a short position."},"cost_basis":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Per-share cost basis in USD. Optional — used only for P&L calculations."}},"required":["ticker","quantity"],"additionalProperties":false},"minItems":1,"maxItems":500,"description":"Array of portfolio positions. Free tier: max 20 positions and historical scenarios only. Paid tier: up to 500 positions plus custom shocks."},"scenarios":{"type":"array","items":{"type":"string","enum":["gfc_2008","covid_2020","dot_com_2000","black_monday_1987","taper_tantrum_2013","rate_hike_2022","volmageddon_2018","euro_crisis_2011"]},"default":["gfc_2008","covid_2020"],"description":"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, covid_2020]."},"custom_shocks":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":50,"description":"Name for this custom scenario, e.g. 'Rate spike +300bps'. 1-50 characters."},"ticker_shocks":{"type":"object","additionalProperties":{"type":"number","minimum":-1,"maximum":1},"description":"Per-ticker price shocks as decimals, e.g. { AAPL: -0.20 } = AAPL drops 20%. Range: -1.0 to 1.0."},"sector_shocks":{"type":"object","additionalProperties":{"type":"number","minimum":-1,"maximum":1},"description":"Per-sector shocks applied to all positions in that sector. e.g. { Technology: -0.15 }. Range: -1.0 to 1.0."},"market_shock":{"type":"number","minimum":-1,"maximum":1,"description":"Broad market shock applied to all positions not covered by ticker_shocks or sector_shocks. e.g. -0.10 = market down 10%. Range: -1.0 to 1.0."}},"required":["name"],"additionalProperties":false}},{"type":"null"}],"description":"Custom shock definitions. PAID tier only. Each shock specifies ticker-level, sector-level, or market-wide price changes."}},"required":["positions"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":78,"grade":"B","scanned_at":"2026-09-27T21:31:13.415Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T21:31:13.397Z","components":{"code":{"score":25,"max":25,"notes":["103 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 530ms"]},"poisoning":{"score":15,"max":15,"notes":["10 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":8,"max":15,"notes":["last push 124 days ago"]},"identity":{"score":7,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://quantrisk-mcp.quantrisk.workers.dev/mcp","reachable":true,"authRequired":false,"latencyMs":530,"serverInfo":{"name":"quantrisk","version":"1.0.0"}}],"packages":[{"registryType":"npm","identifier":"@quantrisk/mcp-server","version":"1.0.2","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":5,"publishedAt":"2026-05-09T21:37:44.896Z","repositoryUrl":"git+https://github.com/quantrisk/mcp-server.git"}],"repo":{"found":true,"owner":"78degrees","repo":"mcp-server","archived":false,"pushedAt":"2026-05-26T18:19:39Z","stars":2,"forks":1,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/202715808?v=4","ownerCreatedAt":"2025-03-10T23:21:53Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":2,"forks":1,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-05-26T18:19:39.000Z","score":19}}}},"grade_history":[],"reviews":[]}