lordx64/hackerone-mcp
GitHub: lordx64/hackerone-mcp
一个零依赖的 MCP 服务器,将 HackerOne 公开 GraphQL API 封装为 AI 代理工具,方便安全研究者通过自然语言发现赏金计划并探索漏洞报告。
Stars: 0 | Forks: 0
# HackerOne MCP Server
[](LICENSE)
[](https://www.python.org/)
[](#)
[](https://modelcontextprotocol.io/)
一个将 HackerOne 的**公开 GraphQL API** 转换为任何 AI agent 都能调用的工具的
[MCP (Model Context Protocol)](https://modelcontextprotocol.io/) 服务器 —— 用于发现漏洞赏金计划、
阅读其范围并探索最近解决的报告。
## ✨ 功能
- 🆕 **发现最新推出的赏金计划**,包含其完整的范围内资产列表。
- 🔍 **通过 handle 查询任何计划的范围**(“漏洞赏金页面”范围)。
- 🏷️ **使用通配符按名称搜索计划**。
- ✅ **浏览最近解决(已解决)的报告** —— 包括解决该报告的**公司**和
**黑客**。
- 🧩 **未公开报告的范围。** HackerOne 会隐藏未公开报告上的特定资产,因此此服务器会附加**计划级别的范围**作为
实际替代项(并在报告*已*公开时提供确切的报告范围)。
- 💰 **按赏金金额对近期支付进行排名**。
- 🧠 **原始 hacktivity 搜索**,支持 Lucene 风格的查询。
## 🧰 工具
| 工具 | 描述 |
|------|-------------|
| `h1_list_new_programs` | 最近推出的赏金计划,按最新排序,包含范围内资产。 |
| `h1_get_program` | 通过 handle 获取单个计划的完整详细信息:赏金范围、状态、范围统计信息、范围。 |
| `h1_get_program_scopes` | 通过 handle 获取计划漏洞赏金页面中的范围列表。 |
| `h1_search_programs` | 按(部分)名称搜索计划 —— 支持使用 `%` 通配符或纯关键字。 |
| `h1_recent_resolved` | 最近**已解决**的报告,包含公司 + 解决者 + 赏金。即使对于未公开的报告也会附加 `program_scope`。可选的 `program_handle` 过滤器。 |
| `h1_recent_disclosed` | 最近**已公开**的报告,包含发现该漏洞的精确范围内资产。 |
| `h1_hacktivity_search` | 对 hacktivity 索引执行任意 Lucene 风格的搜索(例如 `team_handle:uber`、`severity_rating:critical`)。 |
| `h1_top_bounties` | 扫描最近解决的报告,并按公开的赏金金额排名。 |
所有工具均返回 JSON。
## 🚀 安装与注册
### Claude Code (CLI)
```
git clone https://github.com/lordx64/hackerone-mcp.git
claude mcp add hackerone -- python3 "$(pwd)/hackerone-mcp/h1_mcp_server.py"
```
使用 `/mcp` 确认,然后提问,例如:*“列出 5 个最新的赏金计划及其范围。”*
### Claude Desktop
添加到 `~/Library/Application Support/Claude/claude_desktop_config.json`
(macOS)或 `%APPDATA%\Claude\claude_desktop_config.json`(Windows):
```
{
"mcpServers": {
"hackerone": {
"command": "python3",
"args": ["/ABSOLUTE/PATH/TO/hackerone-mcp/h1_mcp_server.py"]
}
}
}
```
重启 Claude Desktop。有关项目级范围的变体,请参阅 [`.mcp.json.example`](.mcp.json.example)。
### 任何其他 MCP 客户端
指向:`python3 /path/to/h1_mcp_server.py`(stdio 传输)。
## 🧪 在没有客户端的情况下尝试
```
python3 examples/demo_client.py
```
这会启动服务器,执行 MCP 握手,并调用几个工具。
或者手动驱动它(在 stdin 上使用换行符分隔的 JSON-RPC):
```
python3 h1_mcp_server.py
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"x","version":"0"}}}
{"jsonrpc":"2.0","id":2,"method":"tools/list"}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"h1_recent_resolved","arguments":{"program_handle":"uber","limit":5}}}
```
还有一个不需要 MCP 客户端的独立报告生成器:
```
python3 examples/generate_report.py # writes h1_scan_report.md
```
## 💡 Agent 提示词示例
- “使用 hackerone 工具列出 5 个最新的赏金计划及其范围。”
- “显示 `uber` 最近的已解决报告及其所属范围。”
- “搜索加密货币计划并显示其赏金范围。”
- “最近排名前 10 的 HackerOne 赏金支付是哪些?”
- “获取 `gitlab` 的完整范围。”
## 📦 输出示例(针对 `uber` 的 `h1_recent_resolved`)
```
{
"company": "Uber",
"program_handle": "uber",
"solved_by": "japter",
"resolved_at": "2026-06-26T...",
"bounty_amount": 4369,
"currency": "USD",
"disclosed": false,
"report_scope": null,
"program_scope": [
{ "asset_type": "URL", "asset_identifier": "uber.com", "eligible_for_bounty": true, "max_severity": "critical" }
]
}
```
## ⚠️ 注意事项与限制
- 仅使用**公开数据**;无需身份验证,无法访问私人计划或您自己的
报告。做一个良好的公民 —— 不要疯狂请求 endpoint。
- hacktivity 索引将 `total_count` 的上限设为 10,000。
- `severity_rating` 和每个报告的资产仅由 HackerOne 针对**已公开的**
报告显示;对于未公开的报告,请使用 `program_scope`。
- Hacktivity 搜索字段为 Elasticsearch 风格:请使用 `team_handle:`(而不是 `team.handle:`)。
## 🏗️ 架构
```
MCP client ──stdio JSON-RPC──> h1_mcp_server.py ──HTTPS──> hackerone.com/graphql
```
单文件,仅使用标准库(`urllib`、`json`、`sys`)。在单次运行内会对按 handle 进行的范围查询进行缓存。
工具 schema 通过 `tools/list` 公布;调用通过一个小型的注册表进行分发。
## 🤝 贡献
欢迎提交 Issue 和 PR —— 将新工具(CWE/弱点细分、每个计划的赏金表格、
排行榜)添加到 `TOOLS` 注册表中非常容易。
## 📄 许可证
[MIT](LICENSE)
标签:AI代理工具, HackerOne, MCP服务器, 数据查询接口, 逆向工具, 零依赖