Rapid7 Bulk Export MCP
Rapid7 Bulk Export MCP
Análisis impulsado por IA para datos de Rapid7 Command Platform mediante MCP (Model Context Protocol) y AgentSkills.
Esta herramienta se ofrece como soporte de carácter voluntario ("best effort"); debido a la naturaleza personalizada y cambiante de las herramientas y flujos de trabajo que podrían utilizarla, no podemos ofrecer soporte ni orientación fuera del contenido del Código MCP y de AgentSkill.
¿Qué es esto?
Esta herramienta exporta datos de Rapid7 Command Platform a través de la Rapid7 Bulk Export API y los hace consultables en flujos de trabajo de GenAI y agentes.
Servidor MCP: Incorpora herramientas que permiten obtener, procesar y consultar datos
Agent Skill / Kiro Power: Aporta contexto adicional, conocimiento del esquema e instrucciones sobre cómo usar las herramientas MCP
Base de datos DuckDB: Base de datos local basada en archivos para permitir consultas rápidas y estructuradas
Related MCP server: Rapid7 Bulk Export MCP Server
Características
Análisis impulsado por IA: Úselo con Kiro, Claude Desktop o cualquier asistente de IA compatible con MCP
Carga de datos bajo demanda: Obtenga y cargue datos automáticamente desde Rapid7
Reutilización de exportaciones: Reutiliza automáticamente las exportaciones del mismo día para evitar llamadas API redundantes
Consultas en lenguaje natural: Haga preguntas en inglés sencillo
Ejecución de consultas SQL: Ejecute consultas SQL complejas sobre vulnerabilidades, activos y otros datos
Exploración de esquemas: Descubra los campos de datos disponibles
Estadísticas e información: Obtenga resúmenes y distribuciones al instante
Bloqueo de seguridad: Las consultas de los usuarios están en espacio aislado (sandbox): el acceso al sistema de archivos y a la red está deshabilitado a nivel del motor DuckDB
Compatibilidad con Docker: Ejecútelo como servicio HTTP contenerizado para despliegues remotos o compartidos
Local vs Remoto
Puede ejecutar el servidor MCP en dos modos según su configuración:
Local (stdio) — El cliente de IA lanza el servidor como proceso hijo y se comunica a través de stdin/stdout. Esta es la opción predeterminada y la más sencilla. El servidor se ejecuta en su máquina, la base de datos vive junto a él y todo permanece local. Ideal para uso individual en una estación de trabajo o portátil.
Remoto (Docker / HTTP de streaming) — El servidor se ejecuta como un servicio HTTP contenerizado que expone un único endpoint /mcp. Los clientes se conectan a través de la red mediante URL. Ideal para entornos compartidos, uso en equipo o cuando quiera que el servidor se ejecute en una infraestructura dedicada separada de su herramienta de IA. Cabe señalar que esto hará que los datos sean compartibles entre todos los usuarios del MCP remoto; debe autenticar y proteger el endpoint /mcp.
Ambos modos usan las mismas herramientas MCP y controles de seguridad. La única diferencia es cómo se conecta el cliente.
Inicio rápido
0. Obtenga su clave API de Rapid7 y su región
Antes de empezar, necesitará las credenciales de su cuenta de Rapid7 Insight Platform.
Generar una clave API:
Importante: La clave API debe ser generada por un Administrador de la plataforma. La API de exportación masiva devuelve todos los datos de vulnerabilidades de toda la plataforma, por lo que se requiere acceso de nivel administrador.
Inicie sesión en Rapid7 Insight Platform como Administrador de la plataforma
Vaya a Administración → Administración de claves API
Elija el tipo de clave:
Clave de organización (recomendada): Permisos completos de administración (requiere el rol de Administrador de la plataforma)
Clave de usuario: Hereda los permisos de su cuenta; debe ser creada por un Administrador de la plataforma para tener acceso suficiente para las exportaciones masivas
Haga clic en "Generar nueva clave de administrador" (o "Generar nueva clave de usuario" si utiliza una cuenta de Administrador de la plataforma)
Seleccione su organización y proporcione un nombre para la clave
Copie la clave inmediatamente: no podrá volver a verla.
Encuentre su región:
Su región determina qué endpoint de API utilizar. Para encontrar su región:
Vaya a insight.rapid7.com e inicie sesión
Busque la etiqueta "Región de almacenamiento de datos" en la esquina superior derecha, debajo del nombre de su cuenta
Para más detalles, consulte:
1. Configure su herramienta de IA
Elija su herramienta de IA a continuación. Cada guía explica cómo instalar el servidor MCP, añadir el Agent Skill y verificar la conexión.
Proteja su clave API: Evite almacenar su
RAPID7_API_KEYen texto plano en el disco. Utilice un administrador de secretos para inyectar la clave en tiempo de ejecución; por ejemplo, 1Password CLI, Bitwarden CLI, macOS Keychain, Windows Credential Manager o PowerShell SecretManagement. Con 1Password puede establecer"command": "op"y"args": ["run", "--", "rapid7-mcp-server"]con referencias secretasop://en el bloque env: la clave se resuelve desde su bóveda y nunca se escribe en archivos de configuración. Adapte este patrón al administrador de contraseñas que utilice.
Instalar el servidor MCP
Abra Claude Desktop y navegue a Personalizar → Conectores
Busque "Rapid7 Bulk Export" en el directorio de conectores
Haga clic en Instalar y proporcione su
RAPID7_API_KEYyRAPID7_REGIONcuando se le solicite

Instalar el Agent Skill
Vaya a Personalizar -> Habilidades
Haga clic en (+)
Crear habilidad
Subir habilidad
Suba el último archivo zip de la skill desde la versión de la derecha

Verificar
Pruebe:
/rapid7-bulk-export-analysis-expert Load the latest vulnerability data from Rapid7
Instalar el servidor 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.gitConfiguración
Cree o edite .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"
}
}
}
}Instalar el Agent Skill
Abra el panel de Skills de Kiro (Paleta de comandos → "Kiro: Open Skills")
Haga clic en "Install from GitHub"
Introduzca la URL del repositorio:
https://github.com/rapid7/rapid7-bulk-export-mcp/rapid7-bulk-export-skill
Active la skill en el chat con #rapid7-bulk-export-skill.
Verificar
Reinicie o vuelva a conectar los servidores MCP (Paleta de comandos → "MCP: Reconnect All Servers")
Compruebe en el panel MCP el servidor "rapid7-bulk-export" (debería mostrar "Connected")
Pruebe:
#rapid7-bulk-export-skill Load the latest vulnerability data from Rapid7
Instalar el servidor 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.gitConfiguración
Use la CLI de 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-serverO edite manualmente ~/.claude.json (ámbito de usuario) o .mcp.json (ámbito de proyecto):
{
"mcpServers": {
"rapid7-bulk-export": {
"command": "rapid7-mcp-server",
"args": [],
"env": {
"RAPID7_API_KEY": "your-api-key-here",
"RAPID7_REGION": "your-region"
}
}
}
}Use --scope user para acceso entre proyectos o --scope project para compartir en equipo.
Instalar el 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.mdO use npx skills para instalarlo directamente:
npx skills install https://github.com/rapid7/rapid7-bulk-export-mcpClaude Code detectará y usará automáticamente la skill cuando sea pertinente.
Verificar
Reinicie Claude Code o recargue la ventana
Escriba
/mcpen el chat para comprobar el estado del servidorVerifique que "rapid7-bulk-export" aparece en la lista
Pruebe:
Load the latest vulnerability data from Rapid7
Instalar el servidor 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.gitConfiguración
Edite la configuración de MCP en VS Code:
Use la Paleta de comandos: "MCP: Edit Configuration"
O edite manualmente:
.vscode/mcp.json(espacio de trabajo) o la configuración de usuario
{
"mcpServers": {
"rapid7-bulk-export": {
"command": "rapid7-mcp-server",
"args": [],
"env": {
"RAPID7_API_KEY": "your-api-key-here",
"RAPID7_REGION": "your-region"
}
}
}
}Instalar el 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.mdO use npx skills para instalarlo directamente:
npx skills install https://github.com/rapid7/rapid7-bulk-export-mcpUse la skill como comando de barra: /rapid7-bulk-export.
Verificar
Recargue la ventana de VS Code
Compruebe el estado de MCP en la barra de estado o en el panel de salida
Pruebe:
Load the latest vulnerability data from Rapid7
Instalar el servidor 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.gitConfiguración
Añada el servidor usando la CLI de Codex:
codex mcp add rapid7-bulk-export \
--env RAPID7_API_KEY=your-api-key-here \
--env RAPID7_REGION=your-region \
-- rapid7-mcp-serverO edite manualmente ~/.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"Si utiliza variables de entorno de su shell en lugar de codificarlas:
[mcp_servers.rapid7-bulk-export]
command = "rapid7-mcp-server"
args = []
enabled = true
env_vars = ["RAPID7_API_KEY", "RAPID7_REGION"]Verificar
Liste los servidores configurados:
codex mcp listCompruebe los detalles del servidor:
codex mcp get rapid7-bulk-exportPruebe:
Load the latest vulnerability data from Rapid7
Instalar el servidor 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.gitConfiguración
Edite su archivo de configuración MCP de Antigravity:
macOS/Linux:
~/.gemini/antigravity/mcp_config.jsonWindows:
C:\Users\<USERNAME>\.gemini\antigravity\mcp_config.json
También puede acceder a este archivo desde el panel de Agente de Antigravity → "..." → Servidores MCP → Administrar servidores MCP → Ver configuración sin procesar.
Añada lo siguiente a mcp_config.json:
{
"mcpServers": {
"rapid7-bulk-export": {
"command": "rapid7-mcp-server",
"args": [],
"env": {
"RAPID7_API_KEY": "your-api-key-here",
"RAPID7_REGION": "your-region"
}
}
}
}Verificar
Reinicie Antigravity para que los cambios surtan efecto
Abra el panel de Servidores MCP (menú "..." → Servidores MCP)
Confirme que "rapid7-bulk-export" aparece con las herramientas disponibles
Pruebe:
Load the latest vulnerability data from Rapid7
Imagen de Docker
Utiliza la imagen base Red Hat UBI 10 Python 3.12 Minimal con Python 3.12.13 preinstalado. Compatible con sistema de archivos de solo lectura. No se requiere suscripción a Red Hat.
Compilar y ejecutar
Con docker compose (recomendado):
RAPID7_API_KEY=your-key RAPID7_REGION=us docker compose up -dCon 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-mcpConfigure su cliente MCP
Apunte cualquier cliente compatible con MCP al endpoint HTTP:
{
"mcpServers": {
"rapid7-bulk-export": {
"url": "http://localhost:8000/mcp"
}
}
}Instalar el Agent Skill
Siga la instalación de la skill para su herramienta de IA específica indicada anteriormente. La skill funciona igual independientemente de si el servidor MCP es local o remoto.
Verificar
Confirme que el contenedor está en ejecución:
docker psPruebe el endpoint:
curl http://localhost:8000/mcpConecte su herramienta de IA y pruebe:
Load the latest vulnerability data from Rapid7
2. Empiece a analizar
Nota: La primera exportación tarda entre 1 y 5 minutos según el tamaño de la organización. Una vez completada, los datos se almacenan en caché y las cargas posteriores reutilizan la misma exportación. Siempre puede solicitar actualizar los datos para obtener el conjunto más reciente.
Show me the top 10 critical vulnerabilities with known exploitsWhat's the severity distribution across my cloud assets?Referencia de herramientas
start_rapid7_export
Inicia un nuevo trabajo de exportación en los servidores de Rapid7. Devuelve inmediatamente un ID de exportación. Admite tres tipos de exportación: vulnerability, policy y remediation.
Start a vulnerability export from Rapid7check_rapid7_export_status
Consulta la API de Rapid7 una vez para obtener el estado actual de un trabajo de exportación. Úselo después de start_rapid7_export para saber cuándo están listos los datos.
Check the status of export abc-123download_rapid7_export
Descarga los archivos Parquet de una exportación completada y los carga en la base de datos local DuckDB. Aquí es donde los datos se vuelven consultables.
Download and load export abc-123load_rapid7_parquet
Carga archivos Parquet existentes directamente desde el disco (deben estar dentro de ~/.rapid7_mcp/imports/). Útil si ya tiene archivos exportados y desea omitir la llamada a la API.
Load parquet files from ~/.rapid7_mcp/imports/my-export/query_rapid7
Ejecuta SQL sobre los datos cargados. La conexión se bloquea después de la carga: las lecturas y escrituras del sistema de archivos y el acceso a la red están bloqueados a nivel del motor DuckDB.
Tablas disponibles: assets, vulnerabilities, policies, vulnerability_remediation.
Run: SELECT severity, COUNT(*) FROM vulnerabilities GROUP BY severityget_rapid7_schema
Devuelve los nombres de las columnas y los tipos de datos de todas las tablas cargadas. Úselo para comprender qué campos están disponibles antes de escribir consultas.
Show me the schema of the loaded dataget_rapid7_stats
Devuelve estadísticas resumidas: recuentos de filas, distribuciones de severidad, rangos de puntuación CVSS, recuentos de exploits y desgloses por proveedor de nube.
Give me an overview of the vulnerability datalist_rapid7_exports
Muestra el historial reciente de exportaciones con IDs, fechas, estados y recuentos de filas. Útil para encontrar una exportación anterior para volver a cargarla.
List my recent exportspurge_rapid7_data
Elimina permanentemente del disco tanto la base de datos de vulnerabilidades como la base de datos de seguimiento de exportaciones. Úselo cuando haya terminado el análisis o antes de entregar una máquina.
Purge all local Rapid7 dataArquitectura
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:#ffe1e1Desarrollo
Los cambios en AgentSkill y MCP se pueden realizar localmente para adaptarlos a su entorno; las contribuciones son bienvenidas de vuelta a este repositorio.
Clonar e instalar
git clone https://github.com/rapid7/rapid7-bulk-export-mcp.git
cd rapid7-bulk-export-mcp
uv syncConfigurar para desarrollo
Cree o edite .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"
}
}
}
}Nota: Apunta
commanddirectamente al punto de entrada de venv en lugar de usaruv runcon uncwd. Claude Desktop no garantiza un directorio de trabajo al lanzar servidores MCP, por lo queuv runpuede resolverse a una versión en caché o instalada en el sistema del paquete en lugar de tu fuente local.
Ejecutar Pruebas
uv run pytestVariables de entorno
Variable | Requerido | Por defecto | Descripción |
| Sí | — | Clave de API de Rapid7 InsightVM |
| Sí |
| Región de la API: |
| No |
| Directorio para los archivos de base de datos; debe ser escribible. Las importaciones manuales de parquet deben colocarse en |
| No |
| Protocolo de transporte: |
| No |
| Dirección de enlace HTTP (solo cuando |
| No |
| Puerto HTTP (solo cuando |
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