Rapid7 Bulk Export MCP
Rapid7 Bulk Export MCP
AI-анализ данных Rapid7 Command Platform с помощью MCP (Model Context Protocol) и AgentSkills.
Этот инструмент предоставляется на условиях "best effort" поддержки. Из-за уникального и постоянно меняющегося характера инструментов и рабочих процессов, которые могут использовать этот инструмент, мы не можем предоставить поддержку или руководство за пределами MCP Code и контента AgentSkill.
Что это?
Этот инструмент экспортирует данные из Rapid7 Command Platform через Rapid7 Bulk Export API и делает их доступными для запросов в GenAI и агентных рабочих процессах.
MCP-сервер: содержит инструменты для получения, обработки и запроса данных
Agent Skill / Kiro Power: предоставляет дополнительный контекст, знания о схеме и инструкции по использованию MCP-инструментов
База данных DuckDB: локальная файловая база данных для быстрых структурированных запросов
Related MCP server: Rapid7 Bulk Export MCP Server
Возможности
ИИ-анализ: используйте с Kiro, Claude Desktop или любым ИИ-ассистентом, совместимым с MCP
Загрузка данных по требованию: автоматически получайте и загружайте данные из Rapid7
Повторное использование экспорта: автоматически использует экспорт за тот же день, чтобы избежать лишних API-вызовов
Запросы на естественном языке: задавайте вопросы на простом английском
Выполнение SQL-запросов: выполняйте сложные SQL-запросы к данным об уязвимостях, активах и другим данным
Исследование схемы: узнавайте доступные поля данных
Статистика и аналитика: получайте мгновенные сводки и распределения
Безопасность: пользовательские запросы изолированы — доступ к файловой системе и сети отключен на уровне движка DuckDB
Поддержка Docker: запуск в виде контейнерного HTTP-сервиса для удаленных или общих развертываний
Локально и удаленно
Вы можете запустить MCP-сервер в двух режимах в зависимости от вашей настройки:
Локально (stdio) — ИИ-клиент запускает сервер как дочерний процесс и общается через stdin/stdout. Это вариант по умолчанию и самый простой. Сервер работает на вашей машине, база данных находится рядом с ним, и все остается локальным. Лучше всего для индивидуального использования на рабочей станции или ноутбуке.
Удаленно (Docker / потоковый HTTP) — сервер работает как контейнерный HTTP-сервис, предоставляющий единую конечную точку /mcp. Клиенты подключаются по сети через URL. Лучше всего для общих сред, командной работы или когда вы хотите, чтобы сервер работал на выделенной инфраструктуре отдельно от вашего ИИ-инструмента. Следует отметить, что данные будут доступны всем пользователям удаленного MCP, поэтому вы должны аутентифицировать и защитить конечную точку /mcp.
Оба режима используют одни и те же MCP-инструменты и средства контроля безопасности. Единственное различие — способ подключения клиента.
Быстрый старт
0. Получите ключ API Rapid7 и укажите регион
Прежде чем начать, вам понадобятся учетные данные из вашей учетной записи Rapid7 Insight Platform.
Создание ключа API:
Важно: Ключ API должен быть создан администратором платформы. Bulk Export API возвращает все данные об уязвимостях по всей платформе, поэтому требуется доступ уровня администратора.
Войдите в Rapid7 Insight Platform как администратор платформы
Перейдите в Administration → API Key Management
Выберите тип ключа:
Organization Key (рекомендуется): полные права администратора (требуется роль Platform Admin)
User Key: наследует разрешения вашей учетной записи — должен быть создан администратором платформы, чтобы иметь достаточный доступ для массового экспорта
Нажмите "Generate New Admin Key" (или "Generate New User Key", если используете учетную запись администратора платформы)
Выберите свою организацию и дайте ключу имя
Скопируйте ключ немедленно — вы не сможете увидеть его снова!
Определение региона:
Ваш регион определяет, какую конечную точку API использовать. Чтобы узнать свой регион:
Перейдите на insight.rapid7.com и войдите в систему
Найдите метку "Data Storage Region" в правом верхнем углу под именем вашей учетной записи
Для получения дополнительных сведений см.:
1. Настройте свой ИИ-инструмент
Выберите свой ИИ-инструмент ниже. Каждое руководство описывает установку MCP-сервера, добавление Agent Skill и проверку подключения.
Защита ключа API: избегайте хранения
RAPID7_API_KEYв открытом виде на диске. Используйте менеджер секретов для внедрения ключа во время выполнения — например, 1Password CLI, Bitwarden CLI, связку ключей macOS, Windows Credential Manager или PowerShell SecretManagement. С 1Password вы можете задать"command": "op"и"args": ["run", "--", "rapid7-mcp-server"]со ссылками на секретыop://в блоке env — ключ извлекается из вашего хранилища и никогда не записывается в конфигурационные файлы. Адаптируйте этот шаблон к любому используемому вами менеджеру паролей.
Установка MCP-сервера
Откройте Claude Desktop и перейдите в Customize → Connectors
Найдите "Rapid7 Bulk Export" в каталоге коннекторов
Нажмите Install и укажите
RAPID7_API_KEYиRAPID7_REGIONпри появлении запроса

Установка Agent Skill
Перейдите в Customize -> Skills
Нажмите (+)
Создайте навык (Create Skill)
Загрузите навык (Upload Skill)
Загрузите последний zip-файл навыка из релиза справа

Проверка
Попробуйте:
/rapid7-bulk-export-analysis-expert Load the latest vulnerability data from Rapid7
Установка MCP-сервера
# Using uv
uv pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git
# Or using pip
pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.gitНастройка
Создайте или отредактируйте .kiro/settings/mcp.json:
{
"mcpServers": {
"rapid7-bulk-export": {
"command": "rapid7-mcp-server",
"args": [],
"env": {
"RAPID7_API_KEY": "your-api-key-here",
"RAPID7_REGION": "your-region"
}
}
}
}Установка Agent Skill
Откройте панель Kiro Skills (Command Palette → "Kiro: Open Skills")
Нажмите "Install from GitHub"
Введите URL репозитория:
https://github.com/rapid7/rapid7-bulk-export-mcp/rapid7-bulk-export-skill
Активируйте навык в чате с помощью #rapid7-bulk-export-skill.
Проверка
Перезапустите или переподключите MCP-серверы (Command Palette → "MCP: Reconnect All Servers")
Проверьте в панели MCP сервер "rapid7-bulk-export" (должен отображаться как "Connected")
Попробуйте:
#rapid7-bulk-export-skill Load the latest vulnerability data from Rapid7
Установка MCP-сервера
# Using uv
uv pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git
# Or using pip
pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.gitНастройка
Используйте CLI Claude Code:
claude mcp add --transport stdio \
--env RAPID7_API_KEY=your-api-key-here \
--env RAPID7_REGION=your-region \
rapid7-bulk-export \
-- rapid7-mcp-serverИли отредактируйте вручную ~/.claude.json (пользовательская область) или .mcp.json (область проекта):
{
"mcpServers": {
"rapid7-bulk-export": {
"command": "rapid7-mcp-server",
"args": [],
"env": {
"RAPID7_API_KEY": "your-api-key-here",
"RAPID7_REGION": "your-region"
}
}
}
}Используйте --scope user для доступа между проектами или --scope project для командного доступа.
Установка Agent Skill
# User-level (available in all projects)
mkdir -p ~/.claude/skills/rapid7-bulk-export
curl -sL https://raw.githubusercontent.com/rapid7/rapid7-bulk-export-mcp/main/rapid7-bulk-export-skill/SKILL.md \
-o ~/.claude/skills/rapid7-bulk-export/SKILL.md
# Or project-level (only in current project)
mkdir -p .claude/skills/rapid7-bulk-export
curl -sL https://raw.githubusercontent.com/rapid7/rapid7-bulk-export-mcp/main/rapid7-bulk-export-skill/SKILL.md \
-o .claude/skills/rapid7-bulk-export/SKILL.mdИли используйте npx skills для прямой установки:
npx skills install https://github.com/rapid7/rapid7-bulk-export-mcpClaude Code автоматически обнаружит и будет использовать навык при необходимости.
Проверка
Перезапустите Claude Code или перезагрузите окно
Введите
/mcpв чате, чтобы проверить статус сервераУбедитесь, что "rapid7-bulk-export" появился в списке
Попробуйте:
Load the latest vulnerability data from Rapid7
Установка MCP-сервера
# Using uv
uv pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git
# Or using pip
pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.gitНастройка
Отредактируйте настройки MCP в VS Code:
Используйте Command Palette: "MCP: Edit Configuration"
Или отредактируйте вручную:
.vscode/mcp.json(рабочая область) или пользовательские настройки
{
"mcpServers": {
"rapid7-bulk-export": {
"command": "rapid7-mcp-server",
"args": [],
"env": {
"RAPID7_API_KEY": "your-api-key-here",
"RAPID7_REGION": "your-region"
}
}
}
}Установка Agent Skill
# Project-level (recommended, stored in repository)
mkdir -p .github/skills/rapid7-bulk-export
curl -sL https://raw.githubusercontent.com/rapid7/rapid7-bulk-export-mcp/main/rapid7-bulk-export-skill/SKILL.md \
-o .github/skills/rapid7-bulk-export/SKILL.md
# Or user-level (available across all projects)
mkdir -p ~/.copilot/skills/rapid7-bulk-export
curl -sL https://raw.githubusercontent.com/rapid7/rapid7-bulk-export-mcp/main/rapid7-bulk-export-skill/SKILL.md \
-o ~/.copilot/skills/rapid7-bulk-export/SKILL.mdИли используйте npx skills для прямой установки:
npx skills install https://github.com/rapid7/rapid7-bulk-export-mcpИспользуйте навык как слэш-команду: /rapid7-bulk-export.
Проверка
Перезагрузите окно VS Code
Проверьте статус MCP в строке состояния или на панели вывода
Попробуйте:
Load the latest vulnerability data from Rapid7
Установка MCP-сервера
# Using uv
uv pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git
# Or using pip
pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.gitНастройка
Добавьте сервер с помощью Codex CLI:
codex mcp add rapid7-bulk-export \
--env RAPID7_API_KEY=your-api-key-here \
--env RAPID7_REGION=your-region \
-- rapid7-mcp-serverИли отредактируйте вручную ~/.codex/config.toml:
[mcp_servers.rapid7-bulk-export]
command = "rapid7-mcp-server"
args = []
enabled = true
[mcp_servers.rapid7-bulk-export.env]
RAPID7_API_KEY = "your-api-key-here"
RAPID7_REGION = "your-region"Если вы используете переменные окружения из вашей оболочки вместо их жесткого кодирования:
[mcp_servers.rapid7-bulk-export]
command = "rapid7-mcp-server"
args = []
enabled = true
env_vars = ["RAPID7_API_KEY", "RAPID7_REGION"]Проверка
Выведите список настроенных серверов:
codex mcp listПроверьте сведения о сервере:
codex mcp get rapid7-bulk-exportПопробуйте:
Load the latest vulnerability data from Rapid7
Установка MCP-сервера
# Using uv
uv pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.git
# Or using pip
pip install git+https://github.com/rapid7/rapid7-bulk-export-mcp.gitНастройка
Отредактируйте файл конфигурации MCP Antigravity:
macOS/Linux:
~/.gemini/antigravity/mcp_config.jsonWindows:
C:\Users\<USERNAME>\.gemini\antigravity\mcp_config.json
Вы также можете получить доступ к этому файлу через панель Antigravity Agent → "..." → MCP Servers → Manage MCP Servers → View raw config.
Добавьте следующее в mcp_config.json:
{
"mcpServers": {
"rapid7-bulk-export": {
"command": "rapid7-mcp-server",
"args": [],
"env": {
"RAPID7_API_KEY": "your-api-key-here",
"RAPID7_REGION": "your-region"
}
}
}
}Проверка
Перезапустите Antigravity, чтобы изменения вступили в силу
Откройте панель MCP Servers (меню "..." → MCP Servers)
Убедитесь, что "rapid7-bulk-export" отображается с доступными инструментами
Попробуйте:
Load the latest vulnerability data from Rapid7
Образ Docker
Используется минимальный базовый образ Red Hat UBI 10 Python 3.12 с предустановленным Python 3.12.13. Поддерживает работу в файловой системе только для чтения. Подписка Red Hat не требуется.
Сборка и запуск
Используя docker compose (рекомендуется):
RAPID7_API_KEY=your-key RAPID7_REGION=us docker compose up -dИспользуя docker run:
# Build
docker build -t rapid7-bulk-export-mcp .
# Run with read-only filesystem
docker run -d \
-p 8000:8000 \
-e RAPID7_API_KEY=your-api-key-here \
-e RAPID7_REGION=us \
-e DATA_DIR=/data \
-e TMPDIR=/tmp \
-v rapid7-data:/data \
--tmpfs /tmp \
--read-only \
--security-opt no-new-privileges:true \
--name rapid7-bulk-export-mcp \
rapid7-bulk-export-mcpНастройка вашего MCP-клиента
Укажите любому MCP-совместимому клиенту HTTP-конечную точку:
{
"mcpServers": {
"rapid7-bulk-export": {
"url": "http://localhost:8000/mcp"
}
}
}Установка Agent Skill
Следуйте инструкциям по установке навыка для вашего конкретного ИИ-инструмента, описанным выше. Навык работает одинаково независимо от того, является ли MCP-сервер локальным или удаленным.
Проверка
Убедитесь, что контейнер запущен:
docker psПроверьте конечную точку:
curl http://localhost:8000/mcpПодключите свой ИИ-инструмент и попробуйте:
Load the latest vulnerability data from Rapid7
2. Приступайте к анализу
Примечание: Первый экспорт занимает 1–5 минут в зависимости от размера организации. После завершения данные кэшируются, и последующие загрузки используют тот же экспорт. Вы всегда можете запросить обновление данных, чтобы получить последний набор.
Show me the top 10 critical vulnerabilities with known exploitsWhat's the severity distribution across my cloud assets?Справочник инструментов
start_rapid7_export
Запускает новое задание экспорта на серверах Rapid7. Немедленно возвращает идентификатор экспорта. Поддерживает три типа экспорта: vulnerability, policy и remediation.
Start a vulnerability export from Rapid7check_rapid7_export_status
Однократно опрашивает Rapid7 API для получения текущего статуса задания экспорта. Используйте после start_rapid7_export, чтобы узнать, когда данные будут готовы.
Check the status of export abc-123download_rapid7_export
Загружает Parquet-файлы завершенного экспорта и загружает их в локальную базу данных DuckDB. На этом этапе данные становятся доступными для запросов.
Download and load export abc-123load_rapid7_parquet
Загружает существующие Parquet-файлы непосредственно с диска (они должны находиться в ~/.rapid7_mcp/imports/). Полезно, если у вас уже есть экспортированные файлы и вы хотите пропустить API-вызов.
Load parquet files from ~/.rapid7_mcp/imports/my-export/query_rapid7
Выполняет SQL по загруженным данным. После загрузки соединение блокируется — чтение и запись в файловую систему, а также доступ к сети отключаются на уровне движка DuckDB.
Доступные таблицы: assets, vulnerabilities, policies, vulnerability_remediation.
Run: SELECT severity, COUNT(*) FROM vulnerabilities GROUP BY severityget_rapid7_schema
Возвращает имена столбцов и типы данных для всех загруженных таблиц. Используйте это, чтобы понять, какие поля доступны перед написанием запросов.
Show me the schema of the loaded dataget_rapid7_stats
Возвращает сводную статистику — количество строк, распределение по уровням серьезности, диапазоны оценок CVSS, количество эксплойтов и разбивку по облачным провайдерам.
Give me an overview of the vulnerability datalist_rapid7_exports
Показывает историю последних экспортов с идентификаторами, датами, статусами и количеством строк. Полезно для поиска предыдущего экспорта для повторной загрузки.
List my recent exportspurge_rapid7_data
Безвозвратно удаляет с диска как базу данных уязвимостей, так и базу данных отслеживания экспортов. Используйте, когда закончите анализ или перед передачей компьютера другому человеку.
Purge all local Rapid7 dataАрхитектура
graph TB
subgraph "AI Layer"
LLM[LLM/AI Assistant<br/>Copilot, Kiro, Claude Desktop, etc.]
end
subgraph "Rapid7 Bulk Export MCP Tool"
MCP[MCP Server<br/>rapid7-bulk-export]
Skill[Agent Skill / Power<br/>rapid7-bulk-export-skill]
end
subgraph "Data Layer"
DB[(DuckDB<br/>rapid7_bulk_export.db)]
Tracker[(Export Tracker<br/>rapid7_bulk_export_tracking.db)]
end
subgraph "Rapid7 API"
R7[Rapid7 Bulk Export API<br/>/export/graphql ]
end
LLM <-->|Model Context Protocol| MCP
LLM -.->|Enhanced Context| Skill
MCP -->|SQL Queries| DB
MCP -->|Track Exports| Tracker
MCP -->|Fetch Data| R7
R7 -->|Parquet Files| MCP
MCP -->|Load Data| DB
style LLM fill:#e1f5ff
style MCP fill:#fff4e1
style Skill fill:#f0e1ff
style DB fill:#e8f5e9
style Tracker fill:#e8f5e9
style R7 fill:#ffe1e1Разработка
Изменения в AgentSkill и MCP могут быть сделаны локально, чтобы адаптировать их под вашу среду — приветствуются ваши доработки в этом репозитории.
Клонирование и установка
git clone https://github.com/rapid7/rapid7-bulk-export-mcp.git
cd rapid7-bulk-export-mcp
uv syncНастройка для разработки
Создайте или отредактируйте .kiro/settings/mcp.json:
{
"mcpServers": {
"rapid7-bulk-export": {
"command": "/absolute/path/to/rapid7-bulk-export-mcp/.venv/bin/rapid7-mcp-server",
"args": [],
"env": {
"RAPID7_API_KEY": "your-api-key-here",
"RAPID7_REGION": "your-region",
"DATA_DIR": "/Users/you/.rapid7-mcp"
}
}
}
}Примечание: Направляйте
commandнепосредственно на точку входа venv, а не используйтеuv runсcwd. Claude Desktop не гарантирует рабочую директорию при запуске MCP-серверов, поэтомуuv runможет разрешиться в кэшированную или системную версию пакета вместо вашего локального исходного кода.
Запуск тестов
uv run pytestПеременные окружения
Переменная | Обязательная | По умолчанию | Описание |
| Да | — | Ключ API Rapid7 InsightVM |
| Да |
| Регион API: |
| Нет |
| Каталог для файлов базы данных; должен быть доступен для записи. Ручные импорты parquet должны размещаться в |
| Нет |
| Транспортный протокол: |
| Нет |
| HTTP-адрес привязки (только когда |
| Нет |
| HTTP-порт (только когда |
Available Tools
9 toolscheck_rapid7_export_statusCheck Rapid7 Export StatusARead-onlyIdempotent
Check the current status of a Rapid7 export job.
This is a fast, non-blocking call that queries the Rapid7 API once and returns the current status. Does NOT poll or wait.
| Name | Required | Description | Default |
|---|---|---|---|
| export_id | Yes | The export ID returned by start_rapid7_export. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful context beyond annotations by specifying it is a fast, non-blocking call that queries the API once and does not poll or wait, which clarifies the operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the purpose and followed by the key non-polling behavior. Every word earns its place and there is no redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one parameter, full schema coverage, rich annotations, and an output schema present. The description adds the crucial behavioral guarantee of non-polling. Nothing material is missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the sole parameter export_id is already fully documented in the schema. The tool description does not add additional parameter meaning, but the baseline of 3 is appropriate when the schema carries the full load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Check the current status of a Rapid7 export job.' It clearly differentiates itself from sibling tools by emphasizing this is a status check and by noting 'Does NOT poll or wait,' which distinguishes it from any waiting/polling or export-starting workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need the current status without blocking or waiting. However, it does not explicitly name alternatives or state conditions for when not to use it, such as 'if you need to wait for completion, use start_rapid7_export' or 'use download_rapid7_export when ready.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_rapid7_exportDownload Rapid7 ExportAIdempotent
Download a completed Rapid7 export and load into the database.
Call this after check_rapid7_export_status confirms the export is COMPLETE. Downloads the Parquet files and loads them into the local DuckDB database for querying.
| Name | Required | Description | Default |
|---|---|---|---|
| export_id | Yes | The export ID of a completed export. | |
| export_type | No | Type of export. One of "vulnerability", "policy", or "remediation". | vulnerability |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that this tool downloads Parquet files and loads them into the local DuckDB database for querying, which adds side-effect context beyond the annotations. It also states the completion prerequisite. It does not detail overwrite behavior or failure handling, but idempotentHint and destructiveHint already cover safety expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose. There is mild redundancy between the first sentence and the final sentence, both saying the export is loaded into a database, but overall every sentence carries useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key invocation context: call after status is COMPLETE, download Parquet files, and load into DuckDB for querying. With a complete input schema and an output schema present, an agent has enough information to invoke it correctly. The only notable gap is the relationship to load_rapid7_parquet.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents both parameters with clear descriptions, so the baseline is 3. The description adds no extra parameter-level meaning beyond restating 'completed export,' which the schema already includes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Download a completed Rapid7 export' and 'load into the database.' It is distinct from siblings like start_rapid7_export or check_rapid7_export_status, but it does not explicitly differentiate itself from load_rapid7_parquet, since both involve loading Parquet into DuckDB.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to call this after check_rapid7_export_status confirms the export is COMPLETE, giving clear timing guidance. It does not mention when not to use it or point to alternatives such as load_rapid7_parquet, but the prerequisite is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rapid7_schemaGet Rapid7 SchemaARead-onlyIdempotent
Get the schema of all database tables.
Returns column names and data types for all existing tables: assets, vulnerabilities, policies, and vulnerability_remediation. Tables that have not been loaded yet are omitted.
Use this to understand what data is available before writing queries.
Returns: Table schemas as formatted JSON, keyed by table name
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds meaningful behavior beyond annotations: tables not yet loaded are omitted, and schemas are returned as formatted JSON keyed by table name. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, well-structured, and front-loaded with the core action. Every sentence adds useful information: scope, included tables, omission behavior, and usage intent. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only schema tool with an output schema and rich annotations, the description covers everything needed: what it returns, which tables, the omission nuance, and how to use it. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to document parameter behavior. The baseline of 4 applies because the schema already fully covers the empty parameter set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Get the schema of all database tables,' then enumerates exactly which tables are included. This makes the tool's scope unambiguous and distinguishes it from query/stats/export tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent when to use the tool: 'Use this to understand what data is available before writing queries.' It does not discuss exclusions or compare against alternatives, but given the sibling set, no other tool claims schema discovery, so the guidance is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rapid7_statsGet Rapid7 StatisticsARead-onlyIdempotent
Get summary statistics for all database tables.
Returns row counts and relevant distributions for all existing tables: assets, vulnerabilities, policies, and vulnerability_remediation. Tables that have not been loaded yet are omitted.
Useful for getting an overview of the data across all loaded datasets.
Returns: Summary statistics as formatted JSON, keyed by table name
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it readOnly, idempotent, and non-destructive. The description adds meaningful behavior beyond those hints: it returns row counts plus distributions, omits tables not yet loaded, and returns formatted JSON keyed by table name. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose and return shape. A small redundancy exists between 'Returns row counts...' and the later 'Returns: Summary statistics as formatted JSON...' line, but the latter adds keying detail so the duplication is minor.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-argument read-only tool with annotations and an output schema available, the description is complete: it identifies the covered tables, the omission behavior for unloaded tables, and the return format. No critical call-time information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so there is nothing to document beyond the baseline for zero-parameter tools. The description's statement of what the stats cover is the only relevant semantic context and it is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Get summary statistics for all database tables') and then enumerates the exact outputs ('row counts and relevant distributions') and the tables involved (assets, vulnerabilities, policies, vulnerability_remediation). This makes it clearly distinct from siblings like query_rapid7 or get_rapid7_schema, which are for detailed queries or schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit use context: 'Useful for getting an overview of the data across all loaded datasets.' It does not name alternatives or state when not to use it, so it stops short of a full routing rule, but the intended scenario is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rapid7_exportsList Rapid7 ExportsARead-onlyIdempotent
List recent Rapid7 exports tracked in the system.
Shows export metadata including export ID, date, status, type, and row counts. Useful for understanding what exports are available for reuse.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of exports to return (default: 10) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral context: it lists only 'recent' exports, scopes them to 'tracked in the system', and specifies the metadata fields returned. This goes beyond the structured annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The primary action is front-loaded, and the second sentence adds valuable detail about output contents and intended use. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with one optional parameter, a full output schema, and safety annotations already present, the description provides sufficient context. It explains what the tool returns, what the results represent, and why an agent would call it. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the limit parameter already documented including its default. The description adds no additional parameter semantics, but the schema fully covers the single optional parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('List') and identifies the exact resource ('Rapid7 exports tracked in the system'). It names the metadata fields returned, which distinguishes this from sibling tools like start_rapid7_export or download_rapid7_export. The phrase 'available for reuse' clarifies its role as an inventory/reuse tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: to see what exports exist and what can be reused. It does not explicitly state when not to use it or name alternatives, but the intended use case is clear enough for a simple listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_rapid7_parquetLoad Rapid7 Parquet FileAIdempotent
Load vulnerability data from existing Parquet file(s).
Use this if you already have Parquet files downloaded and want to skip the export process. This is much faster than running a full export.
| Name | Required | Description | Default |
|---|---|---|---|
| parquet_path | Yes | Path to a Parquet file or directory containing Parquet files |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (idempotentHint=true, destructiveHint=false, readOnlyHint=false), and the description's 'load' claim is consistent with those. The description adds a performance trait ('much faster than running a full export') and the workflow context of skipping exports. However, it doesn't disclose what happens when data is loaded into a non-empty store (overwrite vs. append), which is the key behavioral unknown for a load tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the purpose is front-loaded, the usage condition follows, and the performance rationale comes last. Each sentence earns its place, and the whole is well under any reasonable length limit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with 100% schema coverage, an output schema, and annotations covering idempotency and destructiveness, the description is nearly complete. The only gap is conflict semantics with pre-existing data (does loading replace or merge?), which is a minor omission for an idempotent loader.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — parquet_path's description states it accepts a file or directory, so the schema already carries the full semantic load. The description's phrase 'Parquet file(s)' reinforces the directory case but adds no new meaning beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Load vulnerability data from existing Parquet file(s).' This is unambiguous among the siblings, which are all export-management or query tools (start_rapid7_export, download_rapid7_export, query_rapid7, etc.), so there is no confusion about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit trigger condition: use this when you already have Parquet files downloaded and want to skip the export process. It contrasts this path with running a full export, letting an agent infer that the export siblings (start_rapid7_export, download_rapid7_export) are the alternative. It stops short of naming a specific sibling tool, but the condition is clear enough to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purge_rapid7_dataPurge Rapid7 DataADestructiveIdempotent
Permanently delete all local Rapid7 data and tracking databases.
This removes:
The main vulnerability database (rapid7_bulk_export.db)
The export tracking database (rapid7_bulk_export_tracking.db)
Any associated WAL files
Use this when you are done with your analysis session, before handing off a machine, or to free disk space. After purging, you will need to run a new export to query data again.
Returns: Confirmation of purged data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, and the description reinforces and enriches this by naming the exact databases and WAL files that will be destroyed and noting that the action is 'permanent.' It clearly discloses the irreversible destructive behavior without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly organized with a one-line summary, a bulleted list of affected files, a clear usage statement, and a return note. Every sentence adds useful information and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter destructive tool with annotations covering destructiveness and idempotency, the description is complete: it names exactly what is deleted, says when to use it, warns about the need to re-export afterward, and states the return value. No critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so there is nothing to document at the parameter level. The description instead clarifies that the operation acts on all local Rapid7 data, which is the only relevant 'scope' information an agent needs. Baseline 4 is appropriate for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Permanently delete all local Rapid7 data and tracking databases.' It goes on to enumerate the exact files removed (rapid7_bulk_export.db, rapid7_bulk_export_tracking.db, WAL files), which clearly distinguishes it from the read/query/export sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'when you are done with your analysis session, before handing off a machine, or to free disk space.' It also explains the consequence—'After purging, you will need to run a new export to query data again'—which tells the agent the practical impact and when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_rapid7Query Rapid7 DataARead-onlyIdempotent
Execute a SQL query against the Rapid7 database.
The database contains the following tables loaded from Rapid7 InsightVM Bulk Export API Parquet files:
assets — Asset inventory data: Key fields: orgId, assetId, agentId, hostName, ip, mac, osFamily, osProduct, osVersion, osDescription, riskScore, sites, assetGroups, tags, awsInstanceId, azureResourceId, gcpObjectId
vulnerabilities — Combined asset + vulnerability data: Key fields: orgId, assetId, vulnId, checkId, port, protocol, title, description, severity, severityRank, cvssScore, cvssV3Score, cvssV3Severity, hasExploits, epssscore, epsspercentile, riskScoreV2_0, cves, firstFoundTimestamp, reintroducedTimestamp, dateAdded, dateModified, datePublished, pciCompliant, pciSeverity
policies — Policy compliance results (agent and scan based): Key fields: orgId, assetId, benchmarkNaturalId, profileNaturalId, benchmarkVersion, ruleNaturalId, ruleTitle, finalStatus, proof, lastAssessmentTimestamp, benchmarkTitle, profileTitle, publisher, fixTexts, rationales, source ('agent' or 'scan')
vulnerability_remediation — Vulnerability remediation tracking: Key fields: orgId, assetId, cveId, vulnId, proof, firstFoundTimestamp, reintroducedTimestamp, lastDetected, lastRemoved, title, description, cvssV2Score, cvssV3Score, cvssV2Severity, cvssV3Severity, cvssV2AttackVector, cvssV3AttackVector, riskScoreV2_0, datePublished, dateAdded, dateModified, epssscore, epsspercentile
Use this tool to query any of the above tables. You can filter, aggregate, join across tables, or perform any SQL-based analysis supported by DuckDB.
Examples:
SELECT * FROM vulnerabilities WHERE severity = 'Critical' LIMIT 10
SELECT severity, COUNT(*) FROM vulnerabilities GROUP BY severity
SELECT * FROM policies WHERE finalStatus = 'fail' LIMIT 10
SELECT cveId, COUNT(*) FROM vulnerability_remediation GROUP BY cveId
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | SQL query to execute against the database |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context: the data comes from Rapid7 InsightVM Bulk Export Parquet files and SQL is executed with DuckDB support. This gives the agent expectations about the underlying engine and data source without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is direct, and the table-by-table field lists are useful rather than filler for a SQL tool. The examples are compact and illustrative. It is long, but the length is mostly justified by the need to document the data model for query authoring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex SQL-query tool, the description covers the available tables, representative fields, dialect, and example queries. An output schema exists, so return-value documentation is not the description's job. It does not mention result limits, timeouts, or error behavior, but those are minor given the annotations and the tool's read-only nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single sql parameter, so the baseline is 3. The description adds real value by specifying DuckDB as the SQL dialect, listing queryable tables with key columns, and providing representative examples. This materially reduces ambiguity about what kinds of queries are valid.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Execute a SQL query against the Rapid7 database') and goes beyond the name by enumerating the four available tables and their key fields. This clearly distinguishes it from sibling lifecycle tools like start_rapid7_export, download_rapid7_export, or purge_rapid7_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this tool to query any of the above tables' and gives concrete SQL examples, establishing clear context for when it applies. It does not name exclusions or alternatives, but the sibling set is self-evident enough that an agent can see this is the data-querying tool versus export/schema/stats helpers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_rapid7_exportStart Rapid7 ExportAIdempotent
Start a new Rapid7 export job (non-blocking).
This is a fast, non-blocking call that creates an export job on the Rapid7 platform and returns the export ID immediately. The export will process in the background on Rapid7's servers (typically 3-5 minutes).
Use check_rapid7_export_status(export_id) to monitor progress, then download_rapid7_export(export_id, export_type="...") once it completes.
If an export from today already exists, returns that export's ID instead of creating a duplicate.
For remediation exports, the Rapid7 API limits each request to 31 days. If the date range exceeds 31 days, this tool automatically splits it into multiple 31-day chunks and kicks off an export for each chunk.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | End date in YYYY-MM-DD format (only for remediation exports). Defaults to today if not specified. | |
| start_date | No | Start date in YYYY-MM-DD format (only for remediation exports). Defaults to 30 days ago if not specified. | |
| export_type | No | Type of export to create. One of "vulnerability", "policy", or "remediation". | vulnerability |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: non-blocking background processing, typical 3-5 minute completion, automatic reuse of a same-day export ID, and automatic splitting of >31-day remediation exports. These are exactly the kind of runtime behaviors an agent needs to know and cannot infer from the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the essential non-blocking behavior, followed by downstream tool usage and edge-case behavior. It is slightly repetitive ('non-blocking' appears twice; returning the export ID is stated more than once), but every block of information serves a distinct purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three optional parameters, an output schema, and annotations available, the description is fully complete. It explains what the tool returns, what happens in the background, how long it typically takes, how to check/download the result, and how edge cases like duplicates and long date ranges are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers parameter types, defaults, and enum values at 100%, so the baseline is 3. The description adds extra value by clarifying that date parameters are remediation-focused and by explaining the 31-day chunking behavior, which directly affects how start_date and end_date should be provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Start a new Rapid7 export job (non-blocking)', giving a specific verb and resource. It clearly separates this tool from siblings like check_rapid7_export_status, download_rapid7_export, and list_rapid7_exports by focusing on job creation and immediate ID return.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear workflow: call this first, then check_rapid7_export_status, then download_rapid7_export. It also explains the existing-export deduplication behavior, which helps the agent decide whether a new call is needed. It does not explicitly name alternatives like list_rapid7_exports for checking existing exports, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.5.2- First observed
check_rapid7_export_status - First observed
download_rapid7_export - First observed
get_rapid7_schema - First observed
get_rapid7_stats - First observed
list_rapid7_exports - First observed
load_rapid7_parquet - First observed
purge_rapid7_data - First observed
query_rapid7 - First observed
start_rapid7_export
TDQS
Scored across 9 tools
Each tool covers a distinct phase of the export/query lifecycle: starting, checking, downloading, loading, listing, querying, inspecting, and purging. While list_rapid7_exports and check_rapid7_export_status both surface status information, their purposes are clearly separated and their descriptions remove ambiguity.
Tool names consistently follow a verb_rapid7_object pattern, such as start_rapid7_export, download_rapid7_export, and get_rapid7_schema. Even query_rapid7 fits the pattern by treating Rapid7 as the object, and pluralization is used sensibly for list_rapid7_exports.
Nine tools is well-scoped for the server's purpose: managing Rapid7 exports, loading data, and querying the local database. Each tool earns its place and there is no redundant bloat.
The tool set covers the complete export-to-analysis lifecycle: start an export, check status, download it, load existing Parquet files, list available exports, inspect schema and stats, query the data, and purge everything when done. No critical workflow dead-ends are apparent.
Maintenance
Related MCP Connectors
Real-time CVE, exploit, and vulnerability intelligence for AI assistants (350K+ CVEs, 115K+ PoCs)
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
CVE lookups (NVD) and dependency-manifest audits (OSV) for AI agents. No API keys.
Defensive vulnerability intelligence search across public CVE/NVD and GitHub advisory APIs with CVSS
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides conversational access to a local CVE (Common Vulnerabilities and Exposures) database, enabling natural language queries to search vulnerabilities, retrieve detailed CVE information, and view security statistics.3MIT
- AlicenseAqualityAmaintenanceEnables AI-powered analysis of Rapid7 vulnerability and asset data by exporting via the Bulk Export API and making it queryable through natural language or SQL in MCP-compatible tools.933MIT
- AlicenseNot gradedqualityCmaintenanceConnects AI assistants to HackerOne to pull bug bounty history, program scopes, and report details into a local SQLite database, exposing tools for searching, analyzing, and generating attack briefings using both personal and public disclosed reports.358MIT
- AlicenseNot gradedqualityDmaintenanceA unified MCP server for Rapid7's security platform, exposing InsightVM (vulnerability management), InsightIDR (SIEM/investigations), and Metasploit Pro (pentest telemetry) as tools for Claude, Cursor, and any MCP-compatible LLM client.6MIT