Bitcoin on-chain analytics — 109 metrics: MVRV, SOPR, NUPL, HODL Waves, CDD, cycles & more
MCP (Model Context Protocol) server for Blocklens Bitcoin on-chain analytics. Connect your AI agent to 127 on-chain metrics computed from raw blockchain data — no API wrappers, no delays.
Connect directly to the hosted endpoint — no packages, no local setup:
Claude.ai (Browser): Settings → Connectors → Add → URL: https://mcp.blocklens.co
Claude Desktop / Cursor / Windsurf (via mcp-remote):
{
"mcpServers": {
"blocklens": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.blocklens.co"]
}
}
}
Any MCP HTTP client: POST to https://mcp.blocklens.co (Streamable HTTP transport)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"blocklens": {
"command": "npx",
"args": ["-y", "blocklens-mcp-server"],
"env": {
"BLOCKLENS_API_KEY": "blk_your_key_here"
}
}
}
}
Config file location:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonAdd to your MCP config (.cursor/mcp.json):
{
"blocklens": {
"command": "npx",
"args": ["-y", "blocklens-mcp-server"],
"env": {
"BLOCKLENS_API_KEY": "blk_your_key_here"
}
}
}
Works without an API key — you get 60 days of history for basic-tier metrics. Get an API key at blocklens.co/api-keys for full access.
| Tool | Description |
|---|---|
list_metrics | List all 127 available metrics with categories and tiers |
search_metrics | Search metrics by keyword |
get_metric | Get full definition of a single metric |
get_categories | List metric categories with counts |
get_prices | BTC daily OHLC, market cap, volume, drawdown, realized volatility (1W–1Y) |
get_holder_supply | LTH/STH supply breakdown, circulating supply |
get_holder_valuation | Realized cap/price, MVRV, thermo cap, delta cap, balanced price, investor cap |
get_holder_profit | NUPL, realized/unrealized P/L, SOPR — LTH/STH breakdowns (Pro tier) |
get_cohort_metrics | Age cohort supply, realized cap, realized price (12 age brackets) |
get_utxo_history | UTXO set breakdown by age cohort |
get_coindays | Coin Days Destroyed, liveliness, vaultedness, dormancy, dormancy flow |
get_blockchain | Block height, blocks mined |
get_cycle_performance | Cycle performance indexed from lows, ATHs, halvings |
get_latest_metrics | Latest snapshot across all categories |
render_chart | Render any metric as PNG with annotations and templates |
Price, OHLC, volume, market cap, drawdown from ATH, 6 realized volatility windows (1W, 2W, 1M, 3M, 6M, 1Y), cycle performance, and individual cycle tracks from lows, ATHs, and halvings.
Circulating supply, LTH/STH supply, cost basis distribution heatmap, and 12 age cohort supplies (<24h through 10y+) for HODL Waves analysis.
Realized cap, realized price, MVRV (aggregate + LTH/STH), thermo cap, delta cap, average cap, balanced price, investor cap, market cap/thermo cap ratio, and 24 age cohort realized prices and caps.
NUPL, unrealized/realized P/L, SOPR — each with aggregate, LTH, and STH breakdowns.
Coin Days Destroyed (CDD), binary CDD, supply-adjusted CDD, liveliness, vaultedness, dormancy, dormancy flow, net coin days, coin days accumulated, transferred price, transfer volume.
Total BTC holdings, AUM, net/cumulative flows, cumulative money flow, ETF realized price, US Spot ETF realized price, US Spot cumulative money flow, BTC dominance, US BTC holdings, ETF premium average.
Block height, blocks mined.
The render_chart tool generates PNG charts inline in the conversation.
Quick examples:
render_chart({ metric: "price", days: 365 })
render_chart({ template: "mvrv_ratio" })
render_chart({ metrics: ["lth_supply", "sth_supply"], style: "area" })
render_chart({ metric: "dormancy_flow", overlay: "price" })
render_chart({ template: "realized_volatility", days: 730 })
Annotations — reference lines and areas:
render_chart({
metric: "lth_mvrv",
reference_lines: [
{ "y": 3.5, "label": "Overheated", "stroke": "#ef4444", "dash": "3 3" }
],
reference_areas: [
{ "y1": 0, "y2": 0.85, "label": "Undervalued", "fill": "#22c55e", "fill_opacity": 0.15 }
]
})
| Tier | History | Metrics | Daily Requests |
|---|---|---|---|
| Demo (no key) | 60 days | Basic (grade 0) | Unlimited |
| Pro ($50/mo) | Unlimited | All grade 0–1 | 10,000 |
| Enterprise ($900/mo) | Unlimited | All grade 0–2 | 100,000 |
MIT
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y blocklens-mcp-serverMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-blocklens-blocklens-mcp-server": {
"command": "npx",
"args": [
"-y",
"blocklens-mcp-server"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceblocklens-mcp-servernpmio.github.blocklens/blocklens-mcp-server works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.