Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
179 changes: 179 additions & 0 deletions docs/servers/secops_mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,123 @@ The service account or user credentials need the following Chronicle roles:
- **broad**: More detections, potentially higher false positive rate. Better for comprehensive threat hunting.
- **precise**: Fewer detections, lower false positive rate. Better for production alerting.

### Watchlist Management

- **`create_watchlist(name, display_name, multiplying_factor, description, project_id=None, customer_id=None, region=None)`**
- **Description:** Creates a new watchlist in Chronicle to track high-risk entities and apply risk score multipliers.
- **Parameters:**
- `name` (required): Unique identifier for the watchlist (e.g., "critical_threat_actors").
- `display_name` (required): Human-readable name shown in the UI.
- `multiplying_factor` (required): Risk score multiplier (e.g., 2.0 doubles the risk score).
- `description` (required): Purpose and context of the watchlist.
- `project_id` (optional): Google Cloud project ID (defaults to environment config).
- `customer_id` (optional): Chronicle customer ID (defaults to environment config).
- `region` (optional): Chronicle region (defaults to environment config or 'us').
- **Returns:** Dictionary with created watchlist details including ID and configuration.
- **Return Example:**
```json
{
"name": "projects/123/locations/us/instances/456/watchlists/abc-123-def",
"displayName": "Critical Threat Actors",
"description": "High-priority threat actors requiring immediate investigation",
"multiplyingFactor": 2.0,
"createTime": "2024-01-15T10:30:00Z",
"updateTime": "2024-01-15T10:30:00Z"
}
```

- **`update_watchlist(watchlist_id, display_name=None, description=None, multiplying_factor=None, entity_population_mechanism=None, watchlist_user_preferences=None, project_id=None, customer_id=None, region=None)`**
- **Description:** Updates an existing watchlist's configuration, risk multiplier, or preferences.
- **Parameters:**
- `watchlist_id` (required): Watchlist ID only (e.g., "abc-123-def").
- `display_name` (optional): New display name for the watchlist.
- `description` (optional): New description for the watchlist.
- `multiplying_factor` (optional): New risk score multiplier.
- `entity_population_mechanism` (optional): Entity population configuration.
- `watchlist_user_preferences` (optional): User preferences like pinning.
- `project_id` (optional): Google Cloud project ID (defaults to environment config).
- `customer_id` (optional): Chronicle customer ID (defaults to environment config).
- `region` (optional): Chronicle region (defaults to environment config or 'us').
- **Returns:** Dictionary with updated watchlist details.
- **Return Example:**
```json
{
"name": "projects/123/locations/us/instances/456/watchlists/abc-123-def",
"displayName": "Updated Critical Threat Actors",
"description": "Increased multiplier due to active campaign",
"multiplyingFactor": 3.0,
"updateTime": "2024-01-15T14:22:00Z"
}
```

- **`delete_watchlist(watchlist_id, force=False, project_id=None, customer_id=None, region=None)`**
- **Description:** Permanently deletes a watchlist from Chronicle. Use caution as this operation cannot be undone.
- **Parameters:**
- `watchlist_id` (required): Watchlist ID only (e.g., "abc-123-def").
- `force` (optional): Force deletion even if dependencies exist (default: False).
- `project_id` (optional): Google Cloud project ID (defaults to environment config).
- `customer_id` (optional): Chronicle customer ID (defaults to environment config).
- `region` (optional): Chronicle region (defaults to environment config or 'us').
- **Returns:** Dictionary confirming deletion or error details.
- **Return Example:**
```json
{
"success": true,
"watchlist_id": "abc-123-def",
"message": "Watchlist deleted successfully"
}
```

- **`get_watchlist(watchlist_id, project_id=None, customer_id=None, region=None)`**
- **Description:** Retrieves detailed information about a specific watchlist including configuration and entity membership.
- **Parameters:**
- `watchlist_id` (required): Watchlist ID only (e.g., "abc-123-def").
- `project_id` (optional): Google Cloud project ID (defaults to environment config).
- `customer_id` (optional): Chronicle customer ID (defaults to environment config).
- `region` (optional): Chronicle region (defaults to environment config or 'us').
- **Returns:** Dictionary with complete watchlist details.
- **Return Example:**
```json
{
"name": "projects/123/locations/us/instances/456/watchlists/abc-123-def",
"displayName": "Critical Threat Actors",
"description": "High-priority threat actors",
"multiplyingFactor": 2.0,
"createTime": "2024-01-15T10:30:00Z",
"updateTime": "2024-01-15T14:22:00Z",
"entityCount": 42
}
```

- **`list_watchlists(page_size=None, page_token=None, as_list=False, project_id=None, customer_id=None, region=None)`**
- **Description:** Lists all watchlists in Chronicle with pagination support.
- **Parameters:**
- `page_size` (optional): Number of results per page for pagination.
- `page_token` (optional): Token for fetching the next page of results.
- `as_list` (optional): Return all results as a flat list (default: False).
- `project_id` (optional): Google Cloud project ID (defaults to environment config).
- `customer_id` (optional): Chronicle customer ID (defaults to environment config).
- `region` (optional): Chronicle region (defaults to environment config or 'us').
- **Returns:** Dictionary with watchlists array and pagination metadata.
- **Return Example:**
```json
{
"watchlists": [
{
"name": "projects/123/locations/us/instances/456/watchlists/abc-123",
"displayName": "Critical Threat Actors",
"multiplyingFactor": 2.0
},
{
"name": "projects/123/locations/us/instances/456/watchlists/def-456",
"displayName": "Suspicious Domains",
"multiplyingFactor": 1.5
}
],
"total_in_page": 2
}
```

## Usage Examples

### Example 1: Natural Language Security Event Search
Expand Down Expand Up @@ -608,6 +725,68 @@ AI: The Azure Network rule set generated 3 detections in the last 7 days:
Would you like me to investigate any of these detections further?
```

### Example 6: Watchlist Management

```
User: Create a watchlist for critical APT threat actors with a 2.5x risk multiplier.

AI uses: create_watchlist(
name="apt_threat_actors_2024",
display_name="APT Threat Actors 2024",
multiplying_factor=2.5,
description="High-priority APT groups actively targeting our industry"
)

AI: I've created the "APT Threat Actors 2024" watchlist with a 2.5x risk multiplier.
Watchlist ID: abc-123-def

Any entities added to this watchlist will have their risk scores multiplied by 2.5,
helping prioritize alerts and investigations related to these threat actors.

User: Show me all my watchlists.

AI uses: list_watchlists(as_list=True)

AI: You have 3 watchlists configured:

1. APT Threat Actors 2024 (Risk: 2.5x)
- Created: 2024-01-15
- For tracking high-priority APT groups

2. Suspicious Domains (Risk: 1.5x)
- Created: 2024-01-10
- Domains flagged by threat intelligence

3. Legacy Monitoring (Risk: 1.2x)
- Created: 2023-12-01
- Deprecated systems requiring extra monitoring

User: We have an active campaign. Increase the APT watchlist multiplier to 4.0.

AI uses: update_watchlist(
watchlist_id="abc-123-def",
multiplying_factor=4.0,
description="Increased multiplier due to active campaign against our sector"
)

AI: Updated the APT Threat Actors 2024 watchlist:
- Risk multiplier: 2.5x → 4.0x
- Description updated to note the active campaign

This will significantly elevate the priority of any events involving entities
on this watchlist.

User: The campaign has ended. We can remove the APT watchlist now.

AI uses: delete_watchlist(
watchlist_id="abc-123-def"
)

AI: Successfully deleted the "APT Threat Actors 2024" watchlist.
Entities previously on this watchlist will now use their base risk scores
without the 4.0x multiplier.
```

## Additional Resources

- [Chronicle API Documentation](https://cloud.google.com/chronicle/docs/reference/rest)
Expand Down
21 changes: 20 additions & 1 deletion server/secops/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,23 @@ Chronicle Security Operations suite.
- **`update_curated_rule_set_deployment(category_id, rule_set_id, precision, enabled, alerting, project_id=None, customer_id=None, region=None)`**
- Update deployment configuration for a curated rule set. Enables/disables rule sets, configures precision level (broad or precise), and controls alerting settings.

### Watchlist Management Tools

- **`create_watchlist(name, display_name, multiplying_factor, description, project_id=None, customer_id=None, region=None)`**
- Creates a new watchlist to track high-risk entities and apply risk score multipliers for prioritizing investigations.

- **`update_watchlist(watchlist_id, display_name=None, description=None, multiplying_factor=None, entity_population_mechanism=None, watchlist_user_preferences=None, project_id=None, customer_id=None, region=None)`**
- Updates an existing watchlist's configuration, risk multiplier, or user preferences like pinning.

- **`delete_watchlist(watchlist_id, force=False, project_id=None, customer_id=None, region=None)`**
- Permanently removes a watchlist from Chronicle. Use with caution as this operation cannot be undone.

- **`get_watchlist(watchlist_id, project_id=None, customer_id=None, region=None)`**
- Retrieves detailed information about a specific watchlist including configuration and entity membership.

- **`list_watchlists(page_size=None, page_token=None, as_list=False, project_id=None, customer_id=None, region=None)`**
- Lists all watchlists in Chronicle with pagination support for reviewing configured watchlists.

### API Capabilities

The MCP server provides the following capabilities:
Expand All @@ -163,7 +180,8 @@ The MCP server provides the following capabilities:
11. **Reference List Management**: Create and manage reference lists for detection rules
12. **Feed Management**: Create, update, enable, disable, and delete data feeds
13. **Curated Rules Management**: Discover, retrieve, and manage Google-curated detection content and rule set deployments
14. **UDM Search & Export**: Direct UDM querying, field value autocomplete, and CSV export
14. **Watchlist Management**: Create, update, delete, and list watchlists for entity risk scoring
15. **UDM Search & Export**: Direct UDM querying, field value autocomplete, and CSV export

### Example

Expand All @@ -179,6 +197,7 @@ These tools focus on core security operations tasks:
- **Rule Management**: Use `list_security_rules` and `search_security_rules` to manage detection rules
- **Threat Intelligence**: Use `get_ioc_matches` and `get_threat_intel` for IOC analysis and AI-powered insights
- **Curated Rules Management**: Use curated rules management tools to discover, enable, and configure Google-maintained detection content
- **Watchlist Management**: Use `create_watchlist`, `update_watchlist`, `list_watchlists`, `get_watchlist`, and `delete_watchlist` to manage entity watchlists with risk score multipliers for prioritizing high-risk entities
- **UDM Analysis & Export**: Use `search_udm`, `export_udm_search_csv`, and `find_udm_field_values` for direct UDM querying, data export, and field discovery

### Data Ingestion & Parsing Tools
Expand Down
17 changes: 9 additions & 8 deletions server/secops/secops_mcp/tools/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,18 @@
# limitations under the License.
"""Security Operations MCP tools package."""

from .security_events import *
from .security_alerts import *
from .curated_rules_management import *
from .data_table_management import *
from .entity_lookup import *
from .security_rules import *
from .feed_management import *
from .ioc_matches import *
from .threat_intel import *
from .log_ingestion import *
from .parser_management import *
from .data_table_management import *
from .reference_list_management import *
from .udm_search import *
from .search import *
from .feed_management import *
from .curated_rules_management import *
from .security_alerts import *
from .security_events import *
from .security_rules import *
from .threat_intel import *
from .udm_search import *
from .watchlist_management import *
Loading