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
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=truepara registrar solo herramientas de consulta y haz quegraphql_queryrechace 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.1por 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).
| Dominio | Consultas | Mutaciones | Herramientas notables |
|---|---|---|---|
| Incidentes | 3 | 10 | incidents, incident, health_incidents, acknowledge_incident, assign_incident, add_incident_comment, close_incident, update_incident_state |
| Tareas | 2 | 9 | tasks, task, assign_task, add_task_comment, resolve_task, update_task_state |
| Detecciones | 6 | 1 | detection_rules, customer_detections, customer_detection, customer_detection_activity_log_entries |
| Playbooks | 6 | 4 | playbooks, playbook_runs, playbook_run, recommended_playbooks, run_playbook |
| Casos | 2 | 9 | cases, case, create_case, close_case, cancel_case, add_case_comment, update_case_owner |
| Alertas DRP | 2 | 15 | drp_alerts, drp_alert, assign_drp_alert, watch_drp_alert, add_drp_alert_comment, update_drp_alert_state |
| Control de Acceso DRP | 3 | 4 | access_control_policies, access_control_resources, create_access_control_policy |
| Grupos de Acceso | 7 | 9 | access_groups, pods, roles, permissions, create_role, update_pod |
| Listas de Referencia | 2 | 9 | reference_lists, reference_list, create_reference_list_row, update_reference_list_column |
| Usuarios | 2 | 9 | me, user, create_user, disable_user, reset_mfa, resend_invite |
| Descubrir Tareas | 2 | 3 | discover_tasks, discover_task, assign_discover_task, close_discover_task |
| Contactos de Emergencia | 2 | 4 | emergency_contacts, create_emergency_contact, update_call_order |
| Claves de API | 1 | 3 | api_keys, create_api_key, delete_api_key_by_id |
| Activos | 1 | 1 | assets, delete_asset |
| Cliente | 2 | 0 | customer, customers |
| Identidades | 1 | 0 | identities |
| Indicadores | 2 | 0 | indicators, indicator |
| Campos | 2 | 0 | greymatter_fields, greymatter_field |
| Gestión de Consultas | 3 | 0 | integrations, integration, search_history |
| Datos | 2 | 0 | data_source_schema, time_buckets |
| Actividad de Usuario | 1 | 0 | audits |
| Utilidades | 2 | 0 | rate_limit, node |
146 herramientas en total. Destacados:
- Consultas de listado (
incidents,tasks,assets,detection_rules,cases, …) están paginadas por Relay — pasafirst/aftery leeedges,pageInfoytotalCount. 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 argumentoby(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_stateyclose_incident. Los códigos de cierre de incidentes incluyenCUSTOMER_TRUE_POSITIVE,CUSTOMER_FALSE_POSITIVE,CUSTOMER_ANOMALOUS_SAFE,FALSE_POSITIVE_CREATE_TUNING_TICKET,CUSTOMER_SECURITY_CONTROL_TESTING,CUSTOMER_CANCELLED; los estados incluyenPENDING_CUSTOMER,PENDING_RQ,RESOLVED,CANCELLED. - Responder / playbooks:
run_playbookejecuta un playbook predefinido;playbook_runsyplaybook_runleen los resultados de la ejecución. - Vía de escape
graphql_queryejecuta un documento GraphQL arbitrario para cualquier cosa sin una herramienta dedicada. En modo solo lectura rechaza mutaciones. customer_slugen cada herramienta anula el encabezadox-reliaquest-customer(OpCo) para esa única llamada — consulta Multi-OpCo.rate_limitinforma 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:
- En GreyMatter, ve a Configuración → Gestión de Claves de API.
- Haz clic en Nueva Clave de API, elige una Fecha de Expiración (el valor predeterminado es 1 año) y luego Crear Clave.
- 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:
| Variable | Requerida | Predeterminado | Descripción |
|---|---|---|---|
GREYMATTER_API_KEY | sí | — | Tu clave de API de GreyMatter (Configuración → Gestión de Claves de API) |
GREYMATTER_BASE_URL | no | https://greymatter.myreliaquest.com/graphql | Endpoint de GraphQL |
GREYMATTER_CUSTOMER_SLUG | no | (ninguno) | Encabezado x-reliaquest-customer (OpCo) predeterminado para cuentas multi-OpCo |
GREYMATTER_READ_ONLY | no | false | Cuando es true, no se registran herramientas de mutación y graphql_query rechaza mutaciones |
GREYMATTER_TIMEOUT | no | 60 | Tiempo de espera de solicitud en segundos (algunas mutaciones son lentas en el servidor) |
LOG_LEVEL | no | INFO | Nivel de registro |
MCP_HTTP_HOST / MCP_HTTP_PORT | no | 127.0.0.1:8765 | Enlace del transporte HTTP |
Ejecutar
- stdio (predeterminado):
uv run greymatter-mcp(o simplementegreymatter-mcpsi 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_queryrechaza 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_SLUGpara aplicar un slug predeterminado a cada solicitud. - Pasa
customer_slugen cualquier llamada de herramienta individual para anular el predeterminado para esa llamada. Ambos establecen el encabezadox-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 enstate: PENDING_CUSTOMER). - "Reconoce el incidente
<id>y asígnalo a mí." →acknowledge_incident→assign_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(establecefirst3: 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
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.