find_tool
Find a tool
Search the 236 quant tools by what you need, e.g. "value at risk", "black scholes greeks", "max drawdown". Returns names, toolsets and one-line descriptions, best first.
limitqueryrequiredtoolsetio.github.arhancanliPublished by GitHub account arhancanliv0.3.0Updated Nov 4, 2026
235 quant tools and 399 strategy sleeves, checked against QuantLib, statsmodels, arch or TA-Lib.
Local MCP server exposing 236 quant finance calculators — performance, options, indicators, econometrics, portfolio, sleeves and labeling — on data you supply.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
236 quant finance tools in one MCP server: performance and risk, options and exotics, fixed income, portfolio construction, econometrics, technical indicators, execution, sizing, crypto and FX, valuation, strategy backtests, a library of 399 strategy sleeves, data checks, and data annotation and ML labeling. Every tool computes on the data you send, and every tool's results are checked in the test suite against an independent implementation (QuantLib, statsmodels, arch, TA-Lib, numpy-financial, scikit-learn, empyrical, scipy, pandas, dcor): 465 reference cases, plus planted-defect tests for the data checks.
Local stdio, no key, no account, no network calls: your data never leaves your machine (see Privacy, enforced by tests).
Computed NaN and Infinity values are refused with a tool error naming the affected fields. They do not become unexplained nulls or receive a success receipt. Check the input scale and the calculation's domain. Ordinary finite answers and null warm-up positions are preserved.
canli-quant-mcp on canlicapital.com · All Canli Capital MCP servers. Free, MIT-licensed. For every server behind one install, use canli-mcp.
Listing 238 tools directly costs 83,944 tokens of context (o200k) on every request. By default this server lists three, 680 tokens:
find_tool ranks with BM25 over each tool's name, title, keywords and description, with stemming
and finance abbreviations (cvar, npv, irr, ytm...). On 110 test requests it returns the right tool
first 94% of the time and in the top three 99% (test/search.test.mjs), so a model rarely needs a
second search. run_tool takes digits (3-10 significant figures; default 10) to cut output tokens
when full precision is not needed: 9-19% fewer tokens at 4-6 digits on the results we measured.
Measured on an Apple-silicon laptop (Node 24): connect and initialize 140 ms; a typical tool call
0.26 ms median over stdio; find_tool 1 ms; a full 399-sleeve tournament on 1,200 days of six
assets about 2 s.
The tool list is byte-identical across launches, so providers can cache it. To list toolsets
directly instead, set CANLI_TOOLSETS to a comma-separated list (e.g. performance,options, 8,053
tokens for performance alone) or all.
Claude Code:
Claude Desktop, Cursor or any MCP client:
Then ask, for example:
Prompts chain the tools for common jobs: analyze_strategy, audit_backtest, value_company,
price_option, test_mean_reversion, build_portfolio, analyze_trade_log, sleeve_tournament,
build_sleeve_book, label_dataset, check_dataset.
Resources: canli-quant://catalog (every tool), canli-quant://methods (what each toolset is
checked against), canli-quant://tools/{name} (one tool's schema), canli-quant://sleeves (the sleeve
library), canli-quant://sleeves/{id} (one sleeve's spec) and canli-quant://privacy.
399 strategy sleeves in 18 families, each a published idea with its usual parameters swept on a plain grid: moving-average crossovers, time-series momentum, multi-horizon trend, channel breakouts, MACD, z-score and RSI reversion, volatility targeting, cross-sectional momentum, dual momentum, risk parity, equal weight, minimum variance, low volatility, short-term reversal, trend-filtered allocation, 52-week-high momentum and pairs. Every sleeve has a fixed rule, a stated warm-up, references, known risks and a SHA-256 of its spec. None was picked because it backtested well: they are definitions, not track records.
Running many strategies and keeping the best is how backtests overfit, so the tools that run many sleeves at once correct for it:
The tests check that no sleeve looks ahead (rewriting future prices never changes an earlier
target), that none trades before its warm-up, and that the tournament's statistics match arch's Reality Check and an independent re-studentized SPA
and StepM on the same bootstrap draws, scipy's clustering and an independent numpy CSCV.
run_sleeve and combine_sleeves return target_weights by symbol, which a paper broker such as
canli-paper-trading-mcp can rebalance to.
The labeling toolset annotates your own data and turns it into training labels without leakage:
Each label says which future periods it used, so purging and embargoing are exact. The methods follow Lopez de Prado's Advances in Financial Machine Learning, checked against pandas ports of its code.
Your data stays on your machine. The server is a local stdio process with no network code, writes
nothing to disk, logs nothing, starts no processes, and keeps arguments only for the duration of a
call. test/privacy.test.mjs holds the code to that with a static scan of every source file and by
running the server under Node's permission model, with reads limited to its own package and
writes, child processes and workers denied. For the same lockdown in use:
canli-quant://privacy states the guarantees from inside the server. Calculation receipts carry
hashes, never the data.
run_tool with receipt: true returns the SHA-256 of the tool name and arguments, the SHA-256 of
the result, and the server version. Anyone can run the same tool with the same arguments on that
version and compare the output hash. Results are deterministic: no clock, no network, and the only
randomness is the sleeve bootstrap, drawn from a stated seed.
Every recipe and backtest_weights take curve: true (and optional dates) to add the equity curve against buy-and-hold, the drawdown, the exposure and every trade, for charts.
A number from a correct formula on bad inputs is still wrong. Run the data_checks tools on
unfamiliar data first. A backtest of one parameter set says little if many were tried: count them,
and use strategy_sweep, sleeve_tournament or deflated_sharpe_ratio. A sleeve that survives
every correction on one history is still a backtest: forward results are the evidence. Closed-form models (Black-Scholes, Heston,
SABR, Kirk) carry their assumptions; the result names the model.
Reference fixtures are regenerated by the Python scripts in scripts/reference/ (each script's
docstring gives its exact uv run command). The tests never call Python; they compare against the
committed fixtures.
MIT licence.
Source: mcp-quant/README.md at commit 29fcad6
Find a tool
Search the 236 quant tools by what you need, e.g. "value at risk", "black scholes greeks", "max drawdown". Returns names, toolsets and one-line descriptions, best first.
limitqueryrequiredtoolsetDescribe a tool
Get one tool's full description and exact input JSON Schema before calling run_tool.
namerequiredRun a tool
Run any quant tool by name with its arguments, e.g. {name: "sharpe_ratio", arguments: {returns: [0.01, -0.02, 0.015]}}.
namerequireddigitsreceiptarguments90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
npx -y canli-quant-mcpclaude mcp add canli-quant -- npx -y canli-quant-mcp{ "mcpServers": { "canli-quant": { "command": "npx", "args": ["-y", "canli-quant-mcp"] } } }npm i -g canli-quant-mcpnode --permission --allow-fs-read="$(npm root -g)/canli-quant-mcp" "$(npm root -g)/canli-quant-mcp/src/server.mjs"npm ci && npm test