Odel
bca mcp

bca mcp

Local
@blockchainacademics1TypeScriptMITUpdated 1mo ago

Crypto MCP — 99 tools across news, market, on-chain, sentiment, indicators, agent generation.

@blockchainacademics/mcp

The canonical crypto MCP server for AI agents. 99 tools spanning 3,501+ editorial articles, 200+ entity dossiers, 43 academy lessons, aggregated market + on-chain data, proprietary indicators, and async agent-backed generation — all accessible as MCP tools your AI agent can call natively.

Tool categories (v0.4.0)

CategoryCountExamples
Content & corpus7search_news, get_article, get_entity, get_explainer, list_entity_mentions, get_as_of_snapshot
Market data4get_price, get_ohlc, get_market_overview, get_pair_data
On-chain4get_wallet_profile, get_tx, get_token_holders, get_defi_protocol
Sentiment3get_sentiment, get_social_pulse, get_fear_greed
Proprietary indicators6get_coverage_index, get_narrative_strength, get_sentiment_velocity, get_editorial_premium, get_kol_influence, get_risk_score
Agent-backed (async, Pro+)6generate_due_diligence, generate_tokenomics_model, summarize_whitepaper, translate_contract, monitor_keyword, get_agent_job
Directories13list_stablecoins, list_yields, list_aggregators, list_mcps, list_vcs, list_jobs, build_custom_indicator, …
Fundamentals6get_tokenomics, get_audit_reports, get_team_info, compare_protocols, check_rugpull_risk
Chain-specific4get_solana_ecosystem, get_l2_comparison, get_bitcoin_l2_status, get_ton_ecosystem
Markets microstructure5get_funding_rates, get_options_flow, get_liquidation_heatmap, get_exchange_flows, predict_listing
Narrative / meta5track_narrative, get_ai_agent_tokens, get_depin_projects, get_rwa_tokens, get_prediction_markets
Regulatory4get_regulatory_status, track_sec_filings, get_mica_status, get_tax_rules
Security4check_exploit_history, check_phishing_domain, get_bug_bounty_programs, scan_contract
Memes / degen4track_pumpfun, track_bonkfun, check_memecoin_risk, get_degen_leaderboard
Services (revenue)3book_kol_campaign, request_custom_research, submit_listing
History time-series4get_history_prices, get_history_sentiment, get_history_correlation, get_history_coverage
Compute / AI crypto2get_compute_pricing, get_ai_crypto_metrics
Corpus meta7list_entities, get_topic, search_academy, get_trending, get_unified_feed, list_sources, get_recent_stories
Memos + theses + social6list_memos, get_memo, list_theses, get_thesis, get_social_signals, get_social_signals_detail
Currencies2list_currencies, get_currency_feed

Every tool response carries cite_url (with UTM src attribution), as_of (time-travel snapshot), and source_hash (content integrity).

Tools for unreleased integrations (Twitter social pulse, DEXTools, bonk.fun, Bittensor) return {status: "integration_pending", reason, eta} rather than failing. The MCP server is fully usable today.

Why

LLMs hallucinate about crypto. BCA ships ground-truth editorial content with full attribution. Plug this MCP server into Claude Desktop, LangChain, Eliza, or any MCP-compatible agent and your model queries the BCA corpus like any other tool — with citations, timestamps, and source hashes on every response.

Install

Claude Desktop (zero-config demo)

The package ships with a public demo key baked in. No signup needed to try it. Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "blockchainacademics": {
      "command": "npx",
      "args": ["-y", "@blockchainacademics/mcp"]
    }
  }
}

Restart Claude Desktop. The demo path unlocks 10 marquee tools (get_price, get_trending, get_fear_greed, get_market_overview, search_news, get_sentiment, get_entity, get_explainer, get_recent_stories, get_topic) with real data and real citations. Shared rate cap: 100 calls/day globally + 20/day per IP.

Claude Desktop (full 99 tools)

Get a free key at brain.blockchainacademics.com/signup (2,000 calls/month per user) and add the env block:

{
  "mcpServers": {
    "blockchainacademics": {
      "command": "npx",
      "args": ["-y", "@blockchainacademics/mcp"],
      "env": { "BCA_API_KEY": "bca_live_xxxxxxxxxxxxxxxx" }
    }
  }
}

Restart Claude Desktop. All 99 tools appear in the tool picker.

Programmatic (LangChain, Eliza, custom agents)

npm install @blockchainacademics/mcp
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

const transport = new StdioClientTransport({
  command: "npx",
  args: ["-y", "@blockchainacademics/mcp"],
  env: { BCA_API_KEY: process.env.BCA_API_KEY! },
});
const client = new Client({ name: "my-agent", version: "0.0.1" }, { capabilities: {} });
await client.connect(transport);

const res = await client.callTool({
  name: "search_news",
  arguments: { query: "stablecoin regulation", limit: 5 },
});
console.log(res.content);

See examples/research-agent.ts for a full tool-chaining loop.

Tools

search_news

Full-text search across 3,501+ editorial crypto articles.

argtyperequireddescription
querystring (1-512)yesSearch query
entitystringnoEntity slug filter (e.g. ethereum)
sinceISO 8601noEarliest publish date
topicstringnoTopic filter (e.g. regulation)
limitnumber (1-50)noDefault 10

Example: { "query": "circle IPO", "since": "2026-01-01T00:00:00Z", "limit": 5 }

get_entity

Fetch a canonical entity dossier. Provide exactly one of:

argtypedescription
slugstringe.g. "vitalik-buterin", "circle"
tickerstringe.g. "ETH", "SOL" (case-insensitive)

Aliases resolve automatically (CZchangpeng-zhao, Makermakerdao, BSCbnb-chain, …).

get_explainer

Fetch a canonical academy lesson. Provide exactly one of:

argtypedescription
slugstringLesson slug, e.g. "what-is-a-blockchain"
topicstringTopic keyword that resolves to the canonical lesson

Attribution

Every response includes a structured attribution block:

{
  "data": { ... },
  "attribution": {
    "cite_url": "https://blockchainacademics.com/...",
    "as_of": "2026-04-19T12:34:56Z",
    "source_hash": "sha256:..."
  }
}

When your agent surfaces BCA content to a user, attribute via the cite_url. Fields are preserved as null when upstream omits them so downstream agents can detect missing provenance.

API Key

Not required to try it. When BCA_API_KEY is unset, the server falls back to a baked-in public demo key that unlocks 10 marquee tools. See Demo tier above.

For the full 99 tools, get a free key at brain.blockchainacademics.com/signup (2,000 calls/month). Paid tiers unlock agent-backed research generation and proprietary on-chain indicators.

Set BCA_API_KEY in your MCP client env. Optionally override BCA_API_BASE (default https://api.blockchainacademics.com). BCA_API_BASE_URL is also accepted for backward compatibility.

Errors

The server never crashes the stdio process. All failures surface as MCP responses with isError: true and a JSON body:

{ "error": { "code": "BCA_AUTH", "message": "..." } }
CodeMeaning
BCA_AUTHInvalid BCA_API_KEY (HTTP 401/403)
BCA_TIER_LOCKEDTool not in your current tier's allowlist (HTTP 403). Demo tier sees this on 89 of the 99 tools — the error message includes the upgrade URL.
BCA_RATE_LIMITRate limit exceeded (HTTP 429 — honor Retry-After)
BCA_UPSTREAMBCA API returned 5xx or malformed JSON
BCA_NETWORKNetwork failure or 20s timeout exceeded
BCA_BAD_REQUESTInvalid tool arguments

Development

npm install
npm run build    # tsc -> dist/
npm test         # node:test smoke suite
npm run dev      # tsx src/index.ts (stdio)

Pre-commit hooks

This repo uses pre-commit to enforce formatting, lint, secret scanning, and large-file caps before every commit. Install once per clone:

pip install pre-commit          # or: brew install pre-commit
pre-commit install              # wires .git/hooks/pre-commit
pre-commit run --all-files      # optional: lint the full tree now

Hooks configured in .pre-commit-config.yaml: prettier --check, eslint, gitleaks, detect-private-key, check-added-large-files (500KB cap).

Security

See SECURITY.md for vulnerability reporting, supported versions, and our 90-day coordinated disclosure policy.

License

MIT © 2026 Blockchain Academics