ReliaQuest GreyMatter MCP Server

Un servidor del Protocolo de Contexto del Modelo que expone la API GraphQL de autoservicio de ReliaQuest GreyMatter a asistentes de IA.

Documentación

Servidor MCP de ReliaQuest GreyMatter

PyPI version Python versions License: MIT CI

Un servidor de Model Context Protocol que expone la API GraphQL de autoservicio de ReliaQuest GreyMatter a asistentes de IA. Proporciona 146 herramientas en 22 dominios — Incidentes, Tareas, Detecciones, Playbooks, Casos, Alertas DRP, Activos, Identidades, Listas de Referencia, Usuarios y más — además de una vía de escape genérica graphql_query para cualquier cosa no cubierta por una herramienta dedicada. El conjunto de herramientas se genera directamente desde la colección de API del proveedor, por lo que se mantiene fiel a la superficie real de la API, y se ha verificado contra el esquema GraphQL en vivo.

[!IMPORTANT] Proyecto no oficial. Este es un servidor MCP independiente, construido por la comunidad, desarrollado contra la documentación pública de la API de ReliaQuest. No es un producto oficial de ReliaQuest y no está afiliado, respaldado ni soportado por ReliaQuest, LLC. "ReliaQuest" y "GreyMatter" son marcas comerciales de ReliaQuest, LLC. Para soporte oficial de la plataforma GreyMatter o de la API en sí, contacta directamente con ReliaQuest en greymattersupport@reliaquest.com.

[!WARNING] Software beta — aún no recomendado para entornos de producción. Este proyecto está en desarrollo activo. La superficie de herramientas y las formas individuales de los cuerpos de las herramientas pueden cambiar entre versiones menores, y no todos los endpoints se han ejercitado exhaustivamente contra cada configuración de cuenta/derechos. Úsalo contra un alcance no productivo hasta que estés seguro del comportamiento para tu caso de uso.

Este servidor puede realizar acciones destructivas contra tu entorno GreyMatter. Las herramientas pueden cerrar y cancelar incidentes/casos/tareas, ejecutar playbooks de respuesta y crear o eliminar usuarios, claves de API, políticas de control de acceso y listas de referencia. Un argumento de herramienta alucinado por tu asistente de IA podría cambiar el estado de un incidente o modificar la configuración de tu tenant.

Postura recomendada:

  • Ejecuta primero en modo solo lectura. Establece GREYMATTER_READ_ONLY=true para registrar solo herramientas de consulta y haz que graphql_query rechace mutaciones. Actívalo solo cuando necesites escribir.
  • Usa una clave de API de GreyMatter con el alcance de permisos mínimos que tu caso de uso requiera.
  • Revisa cada llamada de herramienta mutante antes de permitir su ejecución. Claude Desktop requiere aprobación de llamadas de herramienta por defecto — mantén eso habilitado.
  • Trata la clave de API con el mismo cuidado que las credenciales de administrador del portal, porque funcionalmente lo es.
  • El transporte HTTP se vincula a 127.0.0.1 por defecto. No lo expongas a internet público sin añadir autenticación.

Herramientas

146 herramientas en 22 dominios (56 consultas + 90 mutaciones), más la vía de escape graphql_query. En modo solo lectura solo se registran las 56 consultas (y un graphql_query solo de consulta).

DominioConsultasMutacionesHerramientas notables
Incidentes310incidents, incident, health_incidents, acknowledge_incident, assign_incident, add_incident_comment, close_incident, update_incident_state
Tareas29tasks, task, assign_task, add_task_comment, resolve_task, update_task_state
Detecciones61detection_rules, customer_detections, customer_detection, customer_detection_activity_log_entries
Playbooks64playbooks, playbook_runs, playbook_run, recommended_playbooks, run_playbook
Casos29cases, case, create_case, close_case, cancel_case, add_case_comment, update_case_owner
Alertas DRP215drp_alerts, drp_alert, assign_drp_alert, watch_drp_alert, add_drp_alert_comment, update_drp_alert_state
Control de Acceso DRP34access_control_policies, access_control_resources, create_access_control_policy
Grupos de Acceso79access_groups, pods, roles, permissions, create_role, update_pod
Listas de Referencia29reference_lists, reference_list, create_reference_list_row, update_reference_list_column
Usuarios29me, user, create_user, disable_user, reset_mfa, resend_invite
Descubrir Tareas23discover_tasks, discover_task, assign_discover_task, close_discover_task
Contactos de Emergencia24emergency_contacts, create_emergency_contact, update_call_order
Claves de API13api_keys, create_api_key, delete_api_key_by_id
Activos11assets, delete_asset
Cliente20customer, customers
Identidades10identities
Indicadores20indicators, indicator
Campos20greymatter_fields, greymatter_field
Gestión de Consultas30integrations, integration, search_history
Datos20data_source_schema, time_buckets
Actividad de Usuario10audits
Utilidades20rate_limit, node

146 herramientas en total. Destacados:

  • Consultas de listado (incidents, tasks, assets, detection_rules, cases, …) están paginadas por Relay — pasa first/after y lee edges, pageInfo y totalCount. La mayoría acepta un filtro de dominio y una entrada de orden (p. ej. incidentFilter, incidentOrder).
  • Consultas de un solo elemento (incident, task, case, user, …) toman un argumento by (p. ej. un id o número de ticket) para obtener un registro con su detalle completo y comentarios.
  • Las mutaciones del flujo de trabajo de incidentes cubren el ciclo de vida de GreyMatter Investigate: acknowledge_incident, assign_incident, add_incident_comment, update_incident_state y close_incident. Los códigos de cierre de incidentes incluyen CUSTOMER_TRUE_POSITIVE, CUSTOMER_FALSE_POSITIVE, CUSTOMER_ANOMALOUS_SAFE, FALSE_POSITIVE_CREATE_TUNING_TICKET, CUSTOMER_SECURITY_CONTROL_TESTING, CUSTOMER_CANCELLED; los estados incluyen PENDING_CUSTOMER, PENDING_RQ, RESOLVED, CANCELLED.
  • Responder / playbooks: run_playbook ejecuta un playbook predefinido; playbook_runs y playbook_run leen los resultados de la ejecución.
  • Vía de escape graphql_query ejecuta un documento GraphQL arbitrario para cualquier cosa sin una herramienta dedicada. En modo solo lectura rechaza mutaciones.
  • customer_slug en cada herramienta anula el encabezado x-reliaquest-customer (OpCo) para esa única llamada — consulta Multi-OpCo.
  • rate_limit informa de tu presupuesto restante de API (la API permite 5000 puntos/hora por cuenta de empresa; cada nodo devuelto cuenta como un punto).

Consulta docs/ENDPOINTS.md para el mapeo completo de herramienta ↔ operación GraphQL.

Inicio rápido

Instalación

# with uv (recommended)
uv tool install greymatter-mcp

# or with pip
pip install greymatter-mcp

Para desarrollo desde el código fuente:

git clone https://github.com/Space-C0wboy/Reliaquest-Greymatter-MCP-Server
cd Reliaquest-Greymatter-MCP-Server
uv venv && uv pip install -e ".[dev]"

Obtener una clave de API

Genera una clave de API de GreyMatter desde el portal:

  1. En GreyMatter, ve a Configuración → Gestión de Claves de API.
  2. Haz clic en Nueva Clave de API, elige una Fecha de Expiración (el valor predeterminado es 1 año) y luego Crear Clave.
  3. Copia la clave — se muestra solo una vez. Esta es tu GREYMATTER_API_KEY.

[!IMPORTANT] Cada usuario puede tener una clave de API, y las claves no se pueden renovar — crear una clave nueva invalida la anterior. Las solicitudes se autentican con el encabezado X-API-KEY (no con tu inicio de sesión de correo/contraseña).

Configuración

Copia .env.example a .env y establece:

VariableRequeridaPredeterminadoDescripción
GREYMATTER_API_KEYTu clave de API de GreyMatter (Configuración → Gestión de Claves de API)
GREYMATTER_BASE_URLnohttps://greymatter.myreliaquest.com/graphqlEndpoint de GraphQL
GREYMATTER_CUSTOMER_SLUGno(ninguno)Encabezado x-reliaquest-customer (OpCo) predeterminado para cuentas multi-OpCo
GREYMATTER_READ_ONLYnofalseCuando es true, no se registran herramientas de mutación y graphql_query rechaza mutaciones
GREYMATTER_TIMEOUTno60Tiempo de espera de solicitud en segundos (algunas mutaciones son lentas en el servidor)
LOG_LEVELnoINFONivel de registro
MCP_HTTP_HOST / MCP_HTTP_PORTno127.0.0.1:8765Enlace del transporte HTTP

Ejecutar

  • stdio (predeterminado): uv run greymatter-mcp (o simplemente greymatter-mcp si está instalado como herramienta)
  • HTTP: greymatter-mcp --transport http --port 8765

Modo solo lectura

Establece GREYMATTER_READ_ONLY=true para ejecutar el servidor de forma segura contra producción. En este modo:

  • No se registran herramientas de mutación — solo se exponen las 56 herramientas de consulta.
  • La vía de escape graphql_query rechaza mutaciones, por lo que solo puede ejecutar operaciones de lectura (robusto contra documentos de mutación con prefijo de fragmento o BOM).

El modo solo lectura está fuertemente recomendado para casos de uso de asistente-analista, paneles e informes donde el modelo nunca debería poder cambiar el estado.

Integración con editores

Claude Desktop

Edita claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "greymatter": {
      "command": "greymatter-mcp",
      "env": {
        "GREYMATTER_API_KEY": "your-key-here",
        "GREYMATTER_READ_ONLY": "true"
      }
    }
  }
}

Si se ejecuta desde el código fuente en lugar de una herramienta instalada, usa uv con --directory:

{
  "mcpServers": {
    "greymatter": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/Reliaquest-Greymatter-MCP-Server", "greymatter-mcp"],
      "env": { "GREYMATTER_API_KEY": "your-key-here", "GREYMATTER_READ_ONLY": "true" }
    }
  }
}

Reinicia Claude Desktop y luego confirma que greymatter aparece en el menú de herramientas.

Claude Code

claude mcp add greymatter \
  --env GREYMATTER_API_KEY=your-key-here \
  --env GREYMATTER_READ_ONLY=true \
  -- greymatter-mcp

Multi-OpCo (Header Slug)

Las cuentas de GreyMatter que gestionan múltiples empresas operativas (OpCos) usan el encabezado x-reliaquest-customer ("Header Slug") para seleccionar a qué empresa se dirige una solicitud:

  • Establece GREYMATTER_CUSTOMER_SLUG para aplicar un slug predeterminado a cada solicitud.
  • Pasa customer_slug en cualquier llamada de herramienta individual para anular el predeterminado para esa llamada. Ambos establecen el encabezado x-reliaquest-customer.

Límites de velocidad

La API de GreyMatter aplica un límite de 5000 puntos/hora por cuenta de empresa. Cada entidad de nodo devuelta cuenta como 1 punto, por lo que las consultas paginadas grandes consumen puntos rápidamente. Usa la herramienta rate_limit para comprobar tu uso actual.

Limitaciones conocidas

Herramientas restringidas por derechos. Algunas herramientas devuelven "No tienes acceso a este elemento" a menos que tu cuenta/clave de API tenga licencia para el módulo relevante — p. ej. drp_alerts, access_control_policies, access_control_resources, discover_tasks, audits. Estas funcionan normalmente para cuentas con derechos.

Consultas de múltiples conexiones. Algunas consultas paginan varias conexiones anidadas y exponen múltiples parámetros first / after (p. ej. cases usa first3/after3 para la lista de nivel superior y first/first1/first2 para conexiones anidadas). Siempre establece el parámetro de tamaño de página externo para acotar los resultados; dejarlo sin establecer puede devolver respuestas muy grandes y agotar el tiempo de espera. Para consultas pesadas (p. ej. playbook_run_filter_data), aumenta GREYMATTER_TIMEOUT.

Ejemplos de indicaciones

  • "Muéstrame incidentes pendientes de acción del cliente."incidents (filtro en state: PENDING_CUSTOMER).
  • "Reconoce el incidente <id> y asígnalo a mí."acknowledge_incidentassign_incident.
  • "Resuelve el incidente <id> como falso positivo con una nota de ajuste."close_incident (closeCode: CUSTOMER_FALSE_POSITIVE).
  • "¿Qué reglas de detección están implementadas y cuáles se asignan a técnicas MITRE?"detection_rules.
  • "Lista los 25 casos abiertos más recientes."cases (establece first3: 25).
  • "¿Cuánto presupuesto de mi límite de velocidad de API queda?"rate_limit.

Cómo se generan las herramientas

Las herramientas se generan desde la colección de API del proveedor:

python scripts/generate_from_collection.py

Esto regenera los módulos bajo src/greymatter_mcp/tools/_generated/ y el catálogo en docs/ENDPOINTS.md. Los archivos generados no se editan a mano — cambia el generador (sus mapas OVERRIDES / FIELD_EXCLUSIONS) y regenera.

La colección de API y otro material de referencia de ReliaQuest viven en el directorio Development Reference/, que está en gitignore: es material propietario de ReliaQuest y no se redistribuye en este repositorio público. Para verificar las herramientas generadas contra la API en vivo, scripts/introspect.py obtiene el esquema GraphQL actual.

Desarrollo

uv run pytest        # full suite (HTTP fully mocked; no live calls)
uv run ruff check .  # lint
uv run python scripts/generate_from_collection.py  # regenerate tools

Las versiones se publican en PyPI cuando se envía una etiqueta v* (consulta .github/workflows/release.yml).

Licencia

MIT

Soporte

Este es un proyecto comunitario no oficial. Para preguntas sobre la plataforma o la API de GreyMatter, contacta con ReliaQuest en greymattersupport@reliaquest.com. Para problemas con este servidor MCP, abre un issue en el repositorio de GitHub.