Skip to main content
Glama
alpernae

HackerOne MCP Server

by alpernae
README.md
# HackerOne MCP Server

An MCP (Model Context Protocol) server that connects Claude, Codex, and other MCP clients to the HackerOne Hackers API.

## Tools Available

21 tools cover the complete documented Hacker API surface:

- Hacktivity search
- Reports: list, get, and create
- Payments: balance, earnings, and payouts
- Programs: list, get, structured scopes, scope exclusions, and weaknesses
- Report intents: list, get, create, update, delete, submit, and attachment management

---

## Setup

### 1. Install dependencies

```bash
cd hackerone-mcp
npm install
```

### 2. Get your HackerOne API credentials

1. Go to https://hackerone.com/settings/api_token/edit
2. Create a new API token
3. Note your **username** and the generated **token**

---

## Configuration

### Claude Desktop

Edit your Claude Desktop config file:

- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "hackerone": {
      "command": "node",
      "args": ["/absolute/path/to/hackerone-mcp/index.js"],
      "env": {
        "HACKERONE_API_USERNAME": "your_api_token_identifier",
        "HACKERONE_API_TOKEN": "your_api_token"
      }
    }
  }
}
```

Restart Claude Desktop after saving.

---

### Claude Code (CLI)

Run once to add the MCP server to your Claude Code config:

```bash
claude mcp add hackerone \
  -e HACKERONE_API_USERNAME=your_api_token_identifier \
  -e HACKERONE_API_TOKEN=your_api_token \
  -- node /absolute/path/to/hackerone-mcp/index.js
```

Or set credentials as shell environment variables first:

```bash
export HACKERONE_API_USERNAME=your_api_token_identifier
export HACKERONE_API_TOKEN=your_api_token

claude mcp add hackerone -- node /absolute/path/to/hackerone-mcp/index.js
```

Verify it's registered:
```bash
claude mcp list
```

---

### Codex CLI

Run once to add the MCP server to Codex:

```bash
codex mcp add hackerone \
  --env HACKERONE_API_USERNAME=your_api_token_identifier \
  --env HACKERONE_API_TOKEN=your_api_token \
  -- node /absolute/path/to/hackerone-mcp/index.js
```

Or configure it directly in `config.toml`:

- **macOS/Linux:** `~/.codex/config.toml`
- **Windows:** `%USERPROFILE%\.codex\config.toml`

```toml
[mcp_servers.hackerone]
command = "node"
args = ["/absolute/path/to/hackerone-mcp/index.js"]

[mcp_servers.hackerone.env]
HACKERONE_API_USERNAME = "your_api_token_identifier"
HACKERONE_API_TOKEN = "your_api_token"
```

Verify it's registered:

```bash
codex mcp list
```

In Codex TUI, run `/mcp` to view active MCP servers.

---

### Other MCP Clients (generic stdio)

Pass the environment variables when launching:

```bash
HACKERONE_API_USERNAME=your_api_token_identifier \
HACKERONE_API_TOKEN=your_api_token \
node /path/to/hackerone-mcp/index.js
```

Or configure your client's MCP settings with:
- **command:** `node`
- **args:** `["/path/to/hackerone-mcp/index.js"]`
- **env:** `{ "HACKERONE_API_USERNAME": "...", "HACKERONE_API_TOKEN": "..." }`

---

## Example prompts

Once connected, you can ask your MCP client (Claude, Codex, etc.) things like:

- *"List my HackerOne reports"*
- *"Search Hacktivity for disclosed critical reports"*
- *"Get the full details of report 12345"*
- *"What's in scope for the nodejs program?"*
- *"Show me the policy and bounty info for the security program"*
- *"List all programs I have access to"*

---

## Security Notes

- **Never hardcode** your API token in the source files
- Always use environment variables or your client's secrets manager
- Your API token provides full access to your HackerOne account — treat it like a password

---

## Reliability settings (optional)

If you see intermittent failures (timeouts, 429 rate limits, transient 5xx), you can tune these environment variables:

- `HACKERONE_TIMEOUT_MS` (default: `20000`) — per-request timeout
- `HACKERONE_MAX_RETRIES` (default: `2`) — retries for 429/5xx and transient network errors
- `HACKERONE_API_BASE` (default: `https://api.hackerone.com/v1`) — API base URL

TDQS

B3/5.0

Scored across 21 tools

Disambiguation5/5

Each tool targets a distinct resource and action. Report intents, attachments, programs, financial data, and reports are clearly separated. Even similar financial tools (balance, earnings, payouts) have clear distinctions.

Naming Consistency5/5

All tools follow the h1_verb_noun pattern with consistent snake_case. The singular/plural usage for attachments is standard (delete one vs list many). The prefix h1_ is applied uniformly.

Tool Count3/5

21 tools is on the higher end for an MCP server, but each tool corresponds to a specific HackerOne API endpoint. While not over-bloated, the count is borderline heavy compared to typical 3-15 tool servers.

Completeness4/5

The server covers report intents fully (CRUD + submit + attachments), program reads, financial reads, and report creation/listing. However, there is no update or delete operation for submitted reports, which may be a gap for some workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues