Skip to content

Back to the catalog

PatrikFehrenbach/h1-brain
github.comrepo

PatrikFehrenbach/h1-brain

h1-brain is an MCP server that connects Claude Desktop/Code to HackerOne, pulling a researcher's own bounty history and program scopes into a local SQLite database alongside a bundled dataset of 3,600+ publicly disclosed bounty-awarded reports. Its primary tool, hack(handle), fuses live program scope, the user's past findings, weakness patterns, and public disclosures for that program into a single AI-generated attack briefing with suggested untested vectors, effectively putting the LLM in offensive recon/planning mode for bug bounty hunting.

TL;DR MCP server that feeds HackerOne scope, personal report history, and 3,600+ public disclosures into Claude to auto-generate bug-bounty attack briefings.
Document

What it is

h1-brain (MIT, by Patrik Grobshäuser / PatrikFehrenbach) is a Python MCP server bridging an MCP client (Claude Desktop/Code) to HackerOne. Beyond what the summary states, the page gives the concrete operational shape: two separate SQLite stores — your private data and a bundled community corpus — and the exact setup path.

How it works

Two databases with a deliberate trust separation. h1_data.db (auto-created, gitignored) holds your fetched reports/programs/scopes; personal tools (search_reports, get_report) query it with no API calls. disclosed_reports.db ships in the repo and holds 3,600+ public bounty-awarded disclosures (title, write-up, weakness type, program, asset, CVEs, bounty amount; redacted/empty reports excluded); public tools (search_disclosed_reports, get_disclosed_report) query it. hack(handle) uses both plus a live HackerOne API call, loading its directives from hack_instructions.md.

Preconditions / Affected

  • Python 3.10+.
  • A HackerOne API token, stored in plaintext in the MCP client config as env vars H1_USERNAME and H1_API_TOKEN.
  • Your personal DB is empty until populated — fetch_rewarded_reports and fetch_programs must be run once (re-run to sync). The page flags fetch_rewarded_reports as "the most important step." The public DB works immediately.

What to do

Install and register:

git clone https://github.com/PatrikFehrenbach/h1-brain.git
cd h1-brain
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

For Claude Code:

claude mcp add h1-brain \
  -e H1_USERNAME=your_hackerone_username \
  -e H1_API_TOKEN=your_api_token \
  -- /path/to/h1-brain/venv/bin/python /path/to/h1-brain/server.py

For Claude Desktop, add the equivalent mcpServers block to ~/Library/Application Support/Claude/claude_desktop_config.json and restart. Then run fetch_rewarded_reports and fetch_programs once.

flowchart LR
    A[Claude client] -->|MCP| B[h1-brain]
    B -->|API + token| C[HackerOne API]
    B --> D[h1_data.db your private data]
    B --> E[disclosed_reports.db public corpus]
    D --> A
    E --> A

Caveats

  • Dependencies are only mcp and httpx — minimal, but the bundled disclosed_reports.db is data shipped in the repo that flows into the model context; the page does not describe any provenance check on it.
  • Bounty amount is included "when available," so that field is not guaranteed per report.
  • The tool's stated purpose is to put the AI "in offensive mode" against live HackerOne programs — only run it against targets whose scope authorizes your testing.