sentinelone-mcp
# sentinelone-mcp
FastMCP server for SentinelOne: session login, XDR alerts, Purple AI, and SOC investigation tools.
Credentials live in **Azure Key Vault** only. `config.json` holds Azure identity + KV secret **names**, not values.
## Setup
```bash
python -m venv .venv
source .venv/bin/activate
pip install -e .
playwright install chromium
cp config.example.json config.json # edit with your vault + secret names
```
Populate KV secrets (see `config.example.json` for logical keys). Required:
- `S1-LOGIN-EMAIL`, `S1-LOGIN-PASSWORD`, `S1-LOGIN-TOTP` (if MFA)
- `S1-LOGIN-URL`, `S1-API-URL` (your SentinelOne console/API base URLs)
- `SENTINELONE-API-KEY`, `SENTINELONE-XDR-TOKEN`
- Optional: `S1-XDR-REGION` (default `eu1`), `S1-SITE-ID`
Session cookies (`SENTINELONE-SESSION-COOKIES*`) are written by `refresh_login`.
## Run
```bash
python main.py # FastMCP stdio (default)
python main.py --mode login # refresh Playwright session → KV
python -m sentinelone_mcp # same as default MCP mode
```
## Cursor MCP config
```json
{
"mcpServers": {
"sentinelone": {
"command": "python",
"args": ["/path/to/sentinelone-sync/main.py"],
"cwd": "/path/to/sentinelone-sync"
}
}
}
```
Override config path: `SENTINELONE_CONFIG=/path/to/config.json`
TDQS
Scored across 14 tools
Core resources (tenants, rules, Purple AI) are distinct, but several tools overlap in intent: get_threats vs get_unresolved_threats are near-duplicates, and get_storyline_events, run_dv_query, and xdr_query all offer event querying with only backend/scope differences. Descriptions help, but an agent could easily pick the wrong one without careful reading.
Most tools follow a readable snake_case verb_noun pattern like get_threats, list_tenants, and mark_threat_resolved. There are minor deviations: run_dv_query and xdr_query both represent query actions but use different forms, and purple_ai_query/reset are not strictly verb-first. Overall the pattern is consistent enough to be predictable.
14 tools is reasonable for a security operations server covering threats, alerts, Deep Visibility/XDR queries, tenants, and Purple AI. The count is slightly high because some event-query tools could be consolidated, but each tool still represents a plausible capability.
The set covers the main incident triage flow well: list unresolved threats, get threat context, query related events, and mark resolved. Minor gaps exist around cloud-detection rule management and alert status updates, but core investigative and response workflows are present.