lordx64/hackerone-mcp

GitHub: lordx64/hackerone-mcp

一个零依赖的 MCP 服务器,将 HackerOne 公开 GraphQL API 封装为 AI 代理工具,方便安全研究者通过自然语言发现赏金计划并探索漏洞报告。

Stars: 0 | Forks: 0

# HackerOne MCP Server [![许可证: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Python](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/) [![依赖](https://img.shields.io/badge/dependencies-none-brightgreen.svg)](#) [![MCP](https://img.shields.io/badge/MCP-stdio-purple.svg)](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服务器, 数据查询接口, 逆向工具, 零依赖