Chart Library MCP Server — intelligence layer for stock pattern agents. 11 tools: search, cohort, analyze, context, explain, portfolio, anchor_fetch, decompose (conditional slice discovery), clusters (K-means on intraday resolution), live_search (raw-bars → historical matches), report_feedback. Conditional distributions with conformal-calibrated quantile bands, catalyst-aware metadata, and per-cohort decomposition + clustering for SMB/prop-trader-style conditional analysis.
Project description
Chart Library MCP Server
Works with: Claude Desktop | Claude Code | ChatGPT | GitHub Copilot | Cursor | VS Code | Any MCP client
Ask your AI agent "what happened the last 10 times a chart looked like this?" and get a real answer.
24 million pattern embeddings. 10 years of history. 15,000+ stocks. One tool call.
> "What does NVDA's chart look like right now?"
Found 10 similar historical patterns for NVDA (2026-04-04, RTH timeframe):
Closest match: AAPL 2023-05-12 (distance: 0.41)
Forward returns across all 10 matches:
1-day: +0.8% avg (7/10 positive)
5-day: +3.1% avg (8/10 positive)
10-day: +4.7% avg (7/10 positive)
Summary: NVDA's current consolidation near highs mirrors 10 historical
setups, most notably AAPL's May 2023 pre-breakout pattern. 8 of 10
resolved higher within a week, with a median 5-day gain of +2.8%.
No hallucinated predictions. No refusals. Just factual historical data your agent can cite.
Quick Start
pip install chartlibrary-mcp
Claude Desktop (One-Click Install)
Download the chart-library-1.1.1.mcpb extension file and open it with Claude Desktop for automatic installation.
Claude Code
claude mcp add chart-library -- chartlibrary-mcp
Claude Desktop (Manual)
Add to claude_desktop_config.json:
{
"mcpServers": {
"chart-library": {
"command": "chartlibrary-mcp",
"env": {
"CHART_LIBRARY_API_KEY": "cl_your_key"
}
}
}
}
Cursor / VS Code
Add to .cursor/mcp.json or VS Code MCP settings:
{
"servers": {
"chart-library": {
"command": "chartlibrary-mcp",
"env": {
"CHART_LIBRARY_API_KEY": "cl_your_key"
}
}
}
}
GitHub Copilot (VS Code)
Add to .vscode/mcp.json in your project (this file is already included in the chart-library repos):
{
"servers": {
"chart-library": {
"command": "chartlibrary-mcp",
"env": {
"CHART_LIBRARY_API_KEY": "cl_your_key"
}
}
}
}
Copilot Chat will auto-detect the MCP server when you open the project. Use @mcp in Copilot Chat to invoke tools.
ChatGPT (Developer Mode)
ChatGPT connects to MCP servers via remote HTTP endpoints. To set up:
- Enable Developer Mode: Go to ChatGPT Settings > Apps > Advanced settings > Developer mode (requires Pro, Plus, Business, Enterprise, or Education plan)
- Create a connector: In Settings > Connectors, click Create and enter:
- Name: Chart Library
- Description: Historical chart pattern search engine -- 24M patterns, 10 years of data
- URL:
https://chartlibrary.io/mcp - Authentication: No Authentication (or OAuth if using an API key)
- Use in conversations: Select "Developer mode" from the Plus menu, choose the Chart Library app, and ask questions like "What does NVDA's chart look like historically?"
Note: The remote endpoint at
https://chartlibrary.io/mcpuses Streamable HTTP transport. If you need SSE fallback, usehttps://chartlibrary.io/mcp/sse.
Remote MCP Endpoint
For any MCP client that supports remote HTTP connections:
https://chartlibrary.io/mcp
This endpoint supports both Streamable HTTP and SSE transports, no local installation required.
Free tier: 200 calls/day, no credit card required. Get an API key at chartlibrary.io/developers or use basic search without one.
What Can Your Agent Do With This?
"Should I be worried about my TSLA position?"
> get_exit_signal("TSLA")
Signal: HOLD (confidence: 72%)
Similar patterns that exited early: 3/10 would have avoided a drawdown
Similar patterns that held: 7/10 gained an additional +2.1% over 5 days
Recommendation: Pattern suggests continuation. No exit signal triggered.
"What sectors are rotating in right now?"
> get_sector_rotation()
Leaders (30-day relative strength):
1. XLK Technology +4.2%
2. XLY Cons. Disc. +3.1%
3. XLC Communication +2.8%
Laggards:
9. XLU Utilities -1.4%
10. XLP Cons. Staples -2.1%
11. XLRE Real Estate -3.3%
Regime: Risk-On (growth > defensives)
"What happens to AMD if SPY drops 3%?"
> run_scenario("AMD", spy_change=-3.0)
When SPY fell ~3%, AMD historically:
Median move: -5.2%
Best case: +1.1%
Worst case: -11.4%
Positive: 18% of the time
AMD shows 1.7x beta to SPY downside moves.
8 Canonical Tools
Chart Library 2.0 consolidates 22 legacy tools into 8 composable primitives. Chain them via cohort_id handles for sub-second refinement without re-running kNN.
| Tool | What it does |
|---|---|
search |
Entry point. Returns cohort_id + anchor + n_matches for a ticker+date. Feed the handle into cohort, analyze, or explain to chain. |
cohort |
The core primitive. Conditional distribution (p10/p25/p50/p75/p90 + calibrated bands + MAE/MFE + hit rates + survivorship) for a chart pattern, filtered by regime/sector/liquidity/event. One call replaces the legacy get_cohort_distribution, refine_cohort_with_filters, run_scenario, and get_regime_win_rates. |
analyze |
Analytic metrics via metric= enum: anomaly, volume_profile, crowding, correlation_shift, earnings_reaction, pattern_degradation, regime_accuracy. |
context |
Situational data via target=: ticker metadata, market regime + sector rotation, or DB coverage stats. |
explain |
Narrative + rankings via style= enum: filter_ranking (which filter shifts the distribution most), prose (plain-English summary), position_guidance (exit signals), risk_ranking (Sharpe-ranked picks). |
portfolio |
Portfolio-level conditional distribution across holdings. Weight-averages distributions, ranks tail contributors. |
anchor_fetch |
New in 2.0. Lightweight (symbol, date) metadata fetch — sector, market cap, point-in-time regime. Avoids full kNN when you just need context for a ticker. |
report_feedback |
Report errors or suggest improvements. |
These tools replace hallucinated "on average this pattern returns X%" with real conditional base rates. See the grounded-base-rates pattern for the full loop.
Typical agent flow
1. search("NVDA 2024-06-18") → cohort_id
2. cohort(cohort_id=..., filters={regime:{same_vix_bucket: true}})
→ conditional distribution
3. explain(cohort_id=..., style="filter_ranking") → which filter matters most
4. cohort(cohort_id=..., filters={...new filter...}) → refined distribution
Legacy tools (deprecated, still callable)
For backward compatibility, these 22 legacy tool names remain in place and are marked
deprecated in their MCP annotations. They forward to the canonical tool and will be
removed in a future major release. Migrate via the mapping below:
| Legacy | Replacement |
|---|---|
search_charts, search_batch, get_discover_picks |
search |
get_cohort_distribution, refine_cohort_with_filters, run_scenario, get_regime_win_rates, compare_to_peers |
cohort |
detect_anomaly, get_volume_profile, get_crowding, get_earnings_reaction, get_correlation_shift, get_pattern_degradation, get_regime_accuracy |
analyze (metric=) |
get_sector_rotation, get_status, get_market_context |
context |
get_pattern_summary, explain_cohort_filters, get_exit_signal, get_risk_adjusted_picks |
explain (style=) |
get_portfolio_health |
portfolio |
analyze_pattern, get_follow_through, check_ticker |
search + cohort (+ optional explain) |
How It Works
Chart Library uses 24 million pre-computed pattern embeddings (multi-channel numerical encodings of price, volume, volatility, and VWAP) indexed with pgvector for sub-10ms similarity search.
When your agent calls analyze_pattern("NVDA"), the server:
- Computes NVDA's current embedding from the latest market data
- Finds the 10 nearest neighbors by L2 distance across all stocks and dates
- Looks up what happened 1, 3, 5, and 10 days after each historical match
- Generates a plain-English summary via Claude Haiku
The result: factual, citation-ready statements like "8 of 10 similar patterns gained over 5 days" that your agent can present without hallucinating or hedging.
API Key
| Tier | Calls/day | Price |
|---|---|---|
| Sandbox | 200 | Free |
| Builder | 5,000 | $29/mo |
| Scale | 50,000 | $99/mo |
Get your key at chartlibrary.io/developers.
export CHART_LIBRARY_API_KEY=cl_your_key
Links
Chart Library provides historical pattern data for informational purposes. Not financial advice.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chartlibrary_mcp-3.0.0.tar.gz.
File metadata
- Download URL: chartlibrary_mcp-3.0.0.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f2b2f073e5f3f8e941d09cd3a6c37e1484aaed4055d4229dbdcb0c4b5dc9aa0
|
|
| MD5 |
81f401be69d9dd5bd4dddad864980bbf
|
|
| BLAKE2b-256 |
5d138dd11f5b9ace93664b72642f535f6f0730beb524397c86f9016d34f7aff3
|
File details
Details for the file chartlibrary_mcp-3.0.0-py3-none-any.whl.
File metadata
- Download URL: chartlibrary_mcp-3.0.0-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c75dd45ea74a907fa085d786873ecb2957b69aef8b6ad590f3927046f68911b2
|
|
| MD5 |
37e4508a2cf660fa73068664f02379f2
|
|
| BLAKE2b-256 |
826bcd0914bd2d64d4ec83699dfa6e63ddecb0da035ac761f6d0d3813c797513
|