Ga naar inhoud

Claude Connector (MCP)

monsys.ai publiceert een Model Context Protocol (MCP) server zodat je het kan toevoegen als Custom Connector in Claude. Vanuit een chat of routine kan Claude dan tools aanroepen zoals “lijst open alerts”, “geef Trust Score”, “drill into deze detection”.

Per feedback_human_in_the_loop zijn de tools read-mostly. Claude kan zien + samenvatten + voorstellen, niet executeren. Destructive acties (IsolateNetwork, kernel update, user lock) blijven via de TOTP-gated Emergency Actions in het dashboard. Enige write-tool: monsys_acknowledge_detection — sluit een detection-event na investigatie (volledig reversibel, audit-gelogd).

  1. Open Claude desktop of claude.ai
  2. Settings → Connectors → Add custom connector
  3. URL: https://api.monsys.ai
  4. Claude detecteert OAuth via /.well-known/oauth-authorization-server
  5. Klik Connect → je wordt naar app.monsys.ai/login gestuurd
  6. Login met je monsys-account → approve scope mcp.read mcp.acknowledge
  7. Terug in Claude: connector heeft de status “Connected”

Token TTL: 1 uur. Daarna verschijnt een re-auth knop in Claude. Refresh tokens komen later.

Tool Wat Scope
monsys_list_agents actieve hosts met tag-filter read
monsys_get_agent detail per host (CPU/mem/disk + open alerts) read
monsys_trust_score huidige tenant score + 6 componenten + 7d delta read
monsys_list_alerts open alerts met filter severity/category/agent read
monsys_list_detections detected_events laatste 24u/7d/30d met filter read
monsys_get_detection drill-down: full context + related auth-events + similar findings + suggested next steps read
monsys_acknowledge_detection sluit een detection na investigatie (reversibel) acknowledge
monsys_list_kernel_cves open kernel CVEs met affected_hosts count read
monsys_list_os_cves open OS-pakket CVEs uit OSV.dev (apt/dnf/apk/zypper) read
monsys_list_sla_overview alle SLA targets met observed%/error budget read
monsys_audit_log_search grep audit_log per event_type/actor/time read
monsys_kpi_summary one-shot fleet snapshot voor morning briefings read

Elke tool-call wordt gelogd in mcp_call_log met tool_name + tenant + user + duration + result_status. Zichtbaar in dashboard audit-log via monsys_audit_log_search(event_type='mcp_tool_invoked').

Vraag in Claude (sla op als routine):

“Open de monsys connector. Roep monsys_kpi_summary aan. Format als korte slack-style update: Trust Score X/100, Y open critical alerts, Z open detections laatste 24u. Als er detections zijn: roep ook monsys_list_detections(since=24h, ack=open) aan en geef per event een 1-regel samenvatting.”

“In monsys zie ik een alert vanuit IP 185.220.101.42. Roep monsys_audit_log_search(actor_email_contains='@yourMSP.com') aan voor de afgelopen 24u én monsys_list_detections(since=7d) met filter op deze IP. Vat samen wat dit IP heeft geprobeerd en suggereer of dit verdacht is.”

Per tenant 1× connector. In je MSP-workspace gebruik je per cliënt een aparte Claude-conversatie met de juiste connector aan:

“In monsys-acme: monsys_kpi_summary. In monsys-eu-bank: monsys_kpi_summary. Vergelijk de twee en flag de tenant met de grootste delta sinds gisteren.”

Belangrijk om expliciet te zeggen tegen prospects: Claude is Anthropic (US-bedrijf). Wanneer je een tool aanroept gaat de data door Claude’s API om aan het model gevoerd te worden. Voor sommige tenants (overheid, bepaalde NIS2-sectoren) is dat een dealbreaker. De connector is daarom per-tenant opt-in.

Wat NIET door Claude gaat:

  • Geen agent-side data (de connector leest hub-DB, niet host-resources)
  • Geen geheimen, geen credentials (de tools returnen tenant-data scoped op de user’s RBAC)
  • Geen audit-log raw bodies (alleen event_type + metadata)

Wat WEL door Claude gaat:

  • Hostnames, IP-adressen, country codes
  • Alert titles + descriptions
  • Detection event src_ip + target_user
  • Trust Score numbers

Voor de NIS2 audit-buyer is dit acceptabel; voor een AIVD-architect niet. Maak het bewust per cliënt.

  • Tokens revoken: dashboard → /settings/mcp-tokens (komt v2; voor nu via SQL: UPDATE mcp_access_tokens SET revoked_at=NOW() WHERE user_id='<uuid>')
  • Audit per connector: monsys_audit_log_search(event_type='mcp_authorization_granted')
  • Per-call audit: tabel mcp_call_log toont elke tool-call met argument-hash (raw args niet opgeslagen ivm PII)

Of via API (geavanceerd — voor automatisering)

Section titled “Of via API (geavanceerd — voor automatisering)”

Direct MCP roundtrip met een eigen client (zonder Claude-UI):

Terminal window
# 1. Registreer een client
curl -X POST https://api.monsys.ai/mcp/oauth/register \
-H "Content-Type: application/json" \
-d '{"client_name":"my-script","redirect_uris":["http://localhost:8080/cb"]}'
# returnt: {"client_id":"mcp_xxx",...}
# 2. Browser-flow: open
# https://api.monsys.ai/mcp/oauth/authorize?client_id=mcp_xxx&redirect_uri=http://localhost:8080/cb&response_type=code&code_challenge=<sha256-of-verifier>&code_challenge_method=S256&scope=mcp.read
# login als nodig → redirect met ?code=xxx
# 3. Wissel code voor token
curl -X POST https://api.monsys.ai/mcp/oauth/token \
-d "grant_type=authorization_code&code=xxx&redirect_uri=http://localhost:8080/cb&client_id=mcp_xxx&code_verifier=<original>"
# returnt: {"access_token":"mat_xxx","token_type":"Bearer","expires_in":3600}
# 4. Roep een tool aan
curl -X POST https://api.monsys.ai/mcp \
-H "Authorization: Bearer mat_xxx" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"monsys_kpi_summary","arguments":{}}}'
  • Manueel Emergency Actions (IsolateNetwork etc.) → zie Emergency console
  • OpenAI Admin Audit module (andere richting: monsys leest OpenAI/Copilot, niet andersom) → zie OpenAI Audit
  • Anthropic case study (Claude → monsys integratie voor false-positive reduction) → zie blog