BlackHartBlackHart

MCP server

Let Claude, Cursor, and any MCP-aware AI agent query BlackHart BRI tools directly during a conversation. 8 typed tools cover scores, hacks, history, search, and comparison. Zero-install, stdio transport, no key required for the free tier.

auto_awesome

Why MCP?

chat
Plain-English queries

Ask for risk scores in natural language. No API calls, no parsing, no boilerplate. Your AI agent handles it.

search
Tool discovery

MCP-compatible agents auto-discover tools and their zod schemas. Plug in and start querying.

data_object
Typed results

Every response is structured JSON: scores, verdicts, dimensions, deltas. Machine-readable by default.

Install

1

Zero-install (recommended)

Run on demand via npx. Always latest. No state.

Terminal
npx -y @blackhart/mcp-server
2

Global install

Pin a version. Slightly faster startup. Requires Node 18+.

Terminal
npm install -g @blackhart/mcp-server
terminal

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows). Restart Claude after saving.

claude_desktop_config.json
{
  "mcpServers": {
    "blackhart": {
      "command": "npx",
      "args": ["-y", "@blackhart/mcp-server"]
    }
  }
}

With an API key (recommended for higher rate limits):

claude_desktop_config.json
{
  "mcpServers": {
    "blackhart": {
      "command": "npx",
      "args": ["-y", "@blackhart/mcp-server"],
      "env": {
        "BLACKHART_API_KEY": "your-key-here"
      }
    }
  }
}
integration_instructions

Cursor / Claude Code

Add to your project's .mcp.json (Claude Code) or ~/.cursor/mcp.json (Cursor):

.mcp.json
{
  "mcpServers": {
    "blackhart": {
      "command": "npx",
      "args": ["-y", "@blackhart/mcp-server"]
    }
  }
}

Available tools

get_protocol_score()slug: string

Full BRI, Forge Scale, and all 12 dimension scores for one protocol.

list_protocols()filter?: { category, chain, minBri }

Paginated list of scored protocols. Filter by category, chain, or minimum BRI.

get_hack()slug: string

Full forensic write-up of one confirmed DeFi exploit, including the post-hoc BRI dimension impact.

list_hacks()days?: number

Recent confirmed hacks. Default 30 days. Returns severity, loss, attack class, and forensic links.

search_protocols()query: string

Full-text search across protocol names, categories, and chains. Returns matching scores.

compare_protocols()slugs: string[]

Side-by-side comparison of up to 5 protocols across all 12 dimensions plus composite BRI.

get_findings_summary()slug: string

Aggregated counts and severity distribution of public findings (Critical / High / Medium / Low) for a protocol.

get_score_history()slug: string, days?: number

Time series of BRI changes for a protocol. Default 30 days. Each point includes delta and the event that triggered it.

forum

Usage examples

Once configured, ask in plain English. The agent picks the tool, fills the args, and renders the structured result.

Natural-language prompts
# In Claude Desktop, Cursor, or any MCP client, just ask:

"What's the BlackHart score for Aave V3?"
-> get_protocol_score("aave-v3")

"Compare Morpho Blue and Euler V2 across all dimensions."
-> compare_protocols(["morpho-blue", "euler-v2"])

"List lending protocols below DAMASCUS."
-> list_protocols({ category: "lending" })

"Has Lido's score changed in the last 30 days?"
-> get_score_history("lido", 30)

"Show me the Squid Router hack write-up."
-> get_hack("squid-router")

Environment variables

VariableDefault
BLACKHART_API_URLhttps://oracle.blackhart.io/api/v1
BLACKHART_API_KEY(none)
Open source

MIT licensed. Issues, PRs, and forks welcome.

codeView source