@blockchainacademics/mcp
Official@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)
Category | Count | Examples |
Content & corpus | 7 |
|
Market data | 4 |
|
On-chain | 4 |
|
Sentiment | 3 |
|
Proprietary indicators | 6 |
|
Agent-backed (async, Pro+) | 6 |
|
Directories | 13 |
|
Fundamentals | 6 |
|
Chain-specific | 4 |
|
Markets microstructure | 5 |
|
Narrative / meta | 5 |
|
Regulatory | 4 |
|
Security | 4 |
|
Memes / degen | 4 |
|
Services (revenue) | 3 |
|
History time-series | 4 |
|
Compute / AI crypto | 2 |
|
Corpus meta | 7 |
|
Memos + theses + social | 6 |
|
Currencies | 2 |
|
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/mcpimport { 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.
arg | type | required | description |
| string (1-512) | yes | Search query |
| string | no | Entity slug filter (e.g. |
| ISO 8601 | no | Earliest publish date |
| string | no | Topic filter (e.g. |
| number (1-50) | no | Default 10 |
Example: { "query": "circle IPO", "since": "2026-01-01T00:00:00Z", "limit": 5 }
get_entity
Fetch a canonical entity dossier. Provide exactly one of:
arg | type | description |
| string | e.g. |
| string | e.g. |
Aliases resolve automatically (CZ → changpeng-zhao, Maker → makerdao, BSC → bnb-chain, …).
get_explainer
Fetch a canonical academy lesson. Provide exactly one of:
arg | type | description |
| string | Lesson slug, e.g. |
| string | Topic 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": "..." } }Code | Meaning |
| Invalid |
| Tool 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. |
| Rate limit exceeded (HTTP 429 — honor |
| BCA API returned 5xx or malformed JSON |
| Network failure or 20s timeout exceeded |
| Invalid 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 nowHooks 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