Google Security Operations MCP Server
Draft · awaiting reviewMCP server for Google Security Operations (Chronicle) with 68 tools for event search, alerts, detection rules, log ingestion and SIEM configuration.
For Alert triage, Detection engineeringWorks with Any MCP client, Claude Code, Gemini CLI, CursorMaintained google, last push 2026-10-16
MCP serverAn MCP server is a program that gives your AI client extra tools; the client's model decides when to call them. by google · read from the code at ceb703a (secops-v0.7.1) on 2026-10-21The date we last read the tool’s files. The code after “at” names the exact version (the git commit) we read; a newer version may differ. · Not run yet.Whether we have run the tool in our lab. “Did more than it said” means the run used rights its description does not name; “did no more than it said” means it stayed within them.
What the code shows, worst first. No run advice yet: the one word needs a read under the full rule.
Level 3. Secrets. Without SECOPS_SA_PATH the client is created without explicit credentials and falls back to Application Default Credentials, the user's Google Cloud credential profile.
Level 2. Persistence. One of 27 tools that change SecOps configuration or data with a direct SDK call and no confirmation step.
No evidence. Approval. Unknown: no approval settings were found in the code, but the search patterns for approvals match several lines, so a zero cannot be written. That never counts as zero.
Before first useSettings for your AI client that limit the tool to the rights its task needs; derived from the code unless marked tested. derived from the code, not tested
- Use a dedicated service account with read-only SecOps roles through SECOPS_SA_PATH instead of personal Application Default Credentials, set project, customer and region explicitly because built-in fallback IDs apply otherwise, keep the service account limited to one instance because any call can name another project, and pin google-secops-mcp==0.7.1.
What the code can reach, 0 to 3 per right; a dashed point means no evidence, never zero. The three readings
Is it for you?
- Made for
- Gives MCP clients access to Google Security Operations (Chronicle) for threat detection, investigation and hunting.
- Performs security operations tasks in Chronicle, including natural-language event search.
- Gets data into Chronicle through raw log and UDM event ingestion, custom parsers and feed configuration.
- Use it when
- Retrieve and monitor security alerts from Chronicle Alert triage
- Run detection rules against historical data as retrohunts and track their results Detection engineering
- Look up IPs, domains, hashes and other indicators against Chronicle log history Threat intel enrichment
- Create and deploy rule exclusions to filter false positives and tune detection rules Detection engineering
- Not for
Nothing excluded by the author in the files read
- You need
- A Google Security Operations (Chronicle) instance, identified by Google Cloud project ID, Chronicle customer ID and region
- Google Cloud Application Default Credentials by default, set up with gcloud auth application-default login
- Optionally a service account JSON key file, whose path is read from SECOPS_SA_PATH
+5 more
Details: You need
Install
linked, not distributed: the Field Guide does not bundle agents or MCP serversUpstream
uvx --from google-secops-mcp secops_mcp
Quoted from README.md#L69 at the pinned commit; a quotation, not a command to copy.
Run it with least privilege
- note
derived from the code, not tested in the lab; use a dedicated service account with read-only SecOps roles through SECOPS_SA_PATH instead of personal Application Default Credentials, set project, customer and region explicitly because built-in fallback IDs apply otherwise, keep the service account limited to one instance because any call can name another project, and pin google-secops-mcp==0.7.1
derived, not tested: proposed from the code analysis
The record · every value with its evidence
What we checked, and what we found.
Profile read at commit ceb703a on 2026-10-25: 57 facts, each with its quoted line confirmed by script; not installed, not run in the lab.Each fact was read from the tool's files at the checked version and links to the line it comes from. Where nothing was found, the page says so instead of assuming “none”.
Selected by criteria v0.1, approved by Ilja Schlak: awaiting approval. Each section opens with the answer; the file and line of every fact follow it.
What it can change the capability groups as upstream groups them, worst first
Changes, deletes, according to the capabilities read.
| Group | What it covers | Effect | On by default |
|---|---|---|---|
| Data Table Management Tools | Creates data tables for use in detection rules, adds and lists rows, and deletes rows by ID. data_table_management.py L459, server/secops/secops_mcp/tools/data_table_management.py#L459 at the checked commit | reads, changes, deletes | yes |
| Feed Management Tools | Lists, reads, creates, updates, enables, disables and deletes ingestion feeds and generates new feed authentication secrets. feed_management.py L500, server/secops/secops_mcp/tools/feed_management.py#L500 at the checked commit | reads, changes, deletes | yes |
| Watchlist Management Tools | Creates, updates, reads, lists and deletes watchlists that apply risk score multipliers to entities. watchlist_management.py L302, server/secops/secops_mcp/tools/watchlist_management.py#L302 at the checked commit | reads, changes, deletes | yes |
| Security Tools | Searches events (natural language or UDM), alerts, entities, IoC matches and rules; asks Gemini; runs retrohunts; creates rules and updates alert status and verdict. security_alerts.py L285, server/secops/secops_mcp/tools/security_alerts.py#L285 at the checked commit | reads, changes | yes |
| Log Ingestion Tools | Ingests raw logs (single or batch) and pre-formatted UDM events into Chronicle and lists the log types available for ingestion. log_ingestion.py L127, server/secops/secops_mcp/tools/log_ingestion.py#L127 at the checked commit | reads, changes | yes |
| Parser Management Tools | Creates, lists, reads, activates and deactivates log parsers and tests parser code against sample logs. parser_management.py L121, server/secops/secops_mcp/tools/parser_management.py#L121 at the checked commit | reads, changes | yes |
| Reference List Management Tools | Creates, reads and updates reference lists (STRING, CIDR or REGEX) used in detection rules; supplied entries replace the existing ones. reference_list_management.py L324-333, server/secops/secops_mcp/tools/reference_list_management.py#L324-333 at the checked commit | reads, changes | yes |
| Curated Rules Management Tools | Lists and reads Google-curated rules, rule sets and detections, and changes rule-set deployment (enabled, precision, alerting). curated_rules_management.py L701, server/secops/secops_mcp/tools/curated_rules_management.py#L701 at the checked commit | reads, changes | yes |
| Rule Exclusions Management Tools | Creates, reads, lists and patches rule exclusions, changes their deployment and computes how many events they excluded. rule_exclusions.py L113, server/secops/secops_mcp/tools/rule_exclusions.py#L113 at the checked commit | reads, changes | yes |
| Investigation Management Tools | Lists and reads investigations, triggers a new investigation for an alert and fetches investigations linked to alerts or cases. investigation_management.py L231, server/secops/secops_mcp/tools/investigation_management.py#L231 at the checked commit | reads, changes | yes |
Where it sends data and who can connect to it
3 outside connections found in the files read: Google SecOps Chronicle API, Gemini in Chronicle, Chronicle natural-language translation.
- Google SecOps Chronicle API vendor API, always. Sends queries, rule text, log data and configuration changes to the Chronicle instance and receives events, alerts and settings. server.py L77-79, server/secops/secops_mcp/server.py#L77-79 at the checked commit
- Gemini in Chronicle vendor API, if you turn it on. get_threat_intel sends the question text to Chronicle's integrated Gemini model and returns its answer. threat_intel.py L78, server/secops/secops_mcp/tools/threat_intel.py#L78 at the checked commit
- Chronicle natural-language translation vendor API, if you turn it on. search_security_events sends the natural-language query text to Chronicle to translate it into a UDM query. security_events.py L137, server/secops/secops_mcp/tools/security_events.py#L137 at the checked commit
Listens for no connections in the files read.
Other connections not ruled out: read in the documentation and the cited code, not searched in full.
How it runs generated from the files read, never drawn by hand
A Python FastMCP server that the MCP client starts and talks to over stdio; each tool call builds a SecOpsClient from the secops SDK, which calls the Chronicle API in Google Cloud. server.py L94, server/secops/secops_mcp/server.py#L94 at the checked commit
Your AI client
Parts that live inside the AI client: skill instructions, client configuration.
- MCP client configuration mcpServers entry in the client settings that starts the server and passes CHRONICLE_* and SECOPS_SA_PATH environment variables. README.md L278, server/secops/README.md#L278 at the checked commit
Your machine
Programs and files on the machine where you run the tool.
- secops_mcp server Python FastMCP process that registers the SecOps tools and serves them over stdio. server.py L28, server/secops/secops_mcp/server.py#L28 at the checked commit
- secops SDK (SecOpsClient) Python library the tools call to reach the Chronicle API. server.py L25, server/secops/secops_mcp/server.py#L25 at the checked commit
- Google Cloud credentials Application Default Credentials from gcloud, or a service account JSON key file named by SECOPS_SA_PATH. README.md L392-393, server/secops/README.md#L392-393 at the checked commit
Outside your machine
Remote services: vendor APIs, model providers, targets, telemetry endpoints. Data sent here leaves your machine.
- Chronicle API (Google SecOps) Google-hosted SIEM instance, selected by project ID, customer ID and region, that runs every search and change the tools request. server.py L77-78, server/secops/secops_mcp/server.py#L77-78 at the checked commit
The six rights, read three waysThe six rights a tool can take (files, network, execution, secrets, persistence, approval), each read three ways and rated 0 to 3. 0 never means safe; “?” means no evidence. what the author says, what the code shows, what one lab run showed
Level 3 (privileged), read from the code. Not run in our lab yet.
0 contained · 1 scoped · 2 open · 3 privileged · ? no evidence · 0 never means safe · zero means: none declared (Declared), none found (Code), none observed (Lab)
Author says: the evidence
- Files · 1README.md L392-393 the author lets the server read a service-account key file from a path the user sets
- Network · 1README.md L3-4 the author names Google Security Operations as the only service the server talks to
- Secrets · 3README.md L383-387 the author makes Google Cloud Application Default Credentials the default, which is the user's cloud credential profile outside the working directory
- Persistence · 2README.md L222-228 the author lists tools that create, update, enable, disable and delete feeds, parsers, data tables, reference lists, rule exclusions and watchlists
- Approval · 1README.md L333-340 the documented pip client configuration pre-approves three read tools
Code shows: the evidence
- Files · 1server.py L71-73 the server passes a key-file path from SECOPS_SA_PATH to the SDK, which reads it from any location, and writes no local files
- Network · 1server.py L77-79 all tools reach the network only through the SecOps SDK client for the configured or per-call project, customer and region, and the server runs over stdio only
- Execution · 0none found: patterns exec-v0.1 in 24 files at ceb703a
- Secrets · 3server.py L74-75 without SECOPS_SA_PATH the client is created without explicit credentials and falls back to Application Default Credentials, the user's Google Cloud credential profile
- Persistence · 2curated_rules_management.py L701 one of 27 tools that change SecOps configuration or data with a direct SDK call and no confirmation step
- Approval · ?no evidence: no approval settings were found in the code, but the search patterns for approvals match several lines, so a zero cannot be written
Valid for commit ceb703a (secops-v0.7.1) · checked 2026-10-21 · method reach-v0.1The published rules we follow: how tools are selected, how their rights are read and rated, how a lab run is done.
Limits and risks what the files say that fits nowhere else, and what this reading does not cover
- If CHRONICLE_PROJECT_ID or CHRONICLE_CUSTOMER_ID is unset, the server falls back to a hard-coded project number and customer ID instead of stopping with an error. server.py L38-41, server/secops/secops_mcp/server.py#L38-41 at the checked commit
- Every tool accepts project_id, customer_id and region arguments that override the configured Chronicle instance for that call. server.py L60-63, server/secops/secops_mcp/server.py#L60-63 at the checked commit
- Without SECOPS_SA_PATH the server creates SecOpsClient() with no explicit credentials, so tools act with whatever default Google credentials the environment provides. server.py L74-75, server/secops/secops_mcp/server.py#L74-75 at the checked commit
- delete_feed permanently removes a feed and stops its data ingestion; the author states this cannot be undone. feed_management.py L457-460, server/secops/secops_mcp/tools/feed_management.py#L457-460 at the checked commit
- When the API returns it, generate_feed_secret adds the newly generated feed secret to the tool result, so the value reaches the MCP client and its model. feed_management.py L567-569, server/secops/secops_mcp/tools/feed_management.py#L567-569 at the checked commit
- The server README's pip configuration lists get_ioc_matches, search_security_events and get_security_alerts under autoApprove and get_ioc_matches under alwaysAllow. README.md L333-339, server/secops/README.md#L333-339 at the checked commit
- Tool descriptions suggest follow-up write actions to the model, such as updating alert status with do_update_security_alert after an investigation. investigation_management.py L217-218, server/secops/secops_mcp/tools/investigation_management.py#L217-218 at the checked commit
- The repository README lists Google's fully managed Remote MCP Server for SecOps as the recommended option ahead of this local server. README.md L5, README.md#L5 at the checked commit
- do_update_security_alert changes an alert's status, priority, severity and verdict, and an empty string clears existing comments or root cause. security_alerts.py L234-239, server/secops/secops_mcp/tools/security_alerts.py#L234-239 at the checked commit
- The search_security_events description tells the model to use findings for response actions such as blocking an IP or isolating a host through SOAR or endpoint MCP tools. security_events.py L91, server/secops/secops_mcp/tools/security_events.py#L91 at the checked commit
- ingest_udm_events writes caller-supplied UDM events into Chronicle, and its description names creating synthetic events for testing detection rules or filling data gaps. log_ingestion.py L163, server/secops/secops_mcp/tools/log_ingestion.py#L163 at the checked commit
- generate_feed_secret replaces any existing authentication secret of the feed. feed_management.py L520-521, server/secops/secops_mcp/tools/feed_management.py#L520-521 at the checked commit
- delete_feed passes the feed ID straight to the Chronicle delete call after building the client; the tool has no confirmation parameter or step in code. feed_management.py L495-500, server/secops/secops_mcp/tools/feed_management.py#L495-500 at the checked commit
- generate_feed_secret creates a new secret for an HTTPS push feed, and its description states that this replaces any existing secret. feed_management.py L520-521, server/secops/secops_mcp/tools/feed_management.py#L520-521 at the checked commit
- Not covered: what it does at runtime. Other connections not ruled out: read in the documentation and the cited code, not searched in full.
What you need and what the documented installer does
| Kind | What |
|---|---|
| AI client | Any MCP client, Claude Code, Gemini CLI, Cursor; sign-in: OAuth 2 |
| Account | A Google Security Operations (Chronicle) instance, identified by Google Cloud project ID, Chronicle customer ID and region. README.md L360-362, server/secops/README.md#L360-362 at the checked commit |
| Credentials | Google Cloud Application Default Credentials by default, set up with gcloud auth application-default login. README.md L381-387, server/secops/README.md#L381-387 at the checked commit |
| Credentials | Optionally a service account JSON key file, whose path is read from SECOPS_SA_PATH. server.py L71-73, server/secops/secops_mcp/server.py#L71-73 at the checked commit |
| Runtime | Python 3.11 or later. pyproject.toml L6, server/secops/pyproject.toml#L6 at the checked commit |
| Other tools | uv (recommended by the author) or pip to install and run the package. README.md L282, server/secops/README.md#L282 at the checked commit |
| Other tools | The gcloud CLI to create Application Default Credentials. README.md L387, server/secops/README.md#L387 at the checked commit |
| Authorisation | Chronicle API access for the identity in use, listed as a requirement for the integration tests. README.md L9, server/secops/tests/README.md#L9 at the checked commit |
| Setting | CHRONICLE_PROJECT_ID, CHRONICLE_CUSTOMER_ID, CHRONICLE_REGION and SECOPS_SA_PATH are passed through the env block of the MCP client configuration. README.md L296-301, server/secops/README.md#L296-301 at the checked commit |
What the documented installer does
- The repository README installs the google-secops-mcp package with uv tool install and no version pin. README.md L44-48, README.md#L44-48 at the checked commit
- The pip client configuration runs /bin/bash -c to install the cloned repository in editable mode with pip install -e . every time the client starts the server. README.md L321-324, server/secops/README.md#L321-324 at the checked commit
- The uv client configuration runs server.py with uv run from a local clone of the repository and loads variables from an env file given with --env-file. README.md L288-294, server/secops/README.md#L288-294 at the checked commit
- The package declares its dependencies with minimum versions only, for example secops>=0.35.1 and mcp[cli]>=1.26.0,<2.0, so an install picks the newest matching versions. pyproject.toml L16-23, server/secops/pyproject.toml#L16-23 at the checked commit
Lab runs one run is an observation, not a benchmark
About this entry
- Type
- MCP server · Defensive · works with Any MCP client, Claude Code, Gemini CLI, Cursor
- Source
- github.com/google/mcp-security ·
server/secops· Apache-2.0 · manifestpyproject.toml - Version readThe install command installs exactly the version we checked (the pinned git commit), so what you get is what the card describes.
- ceb703a · secops-v0.7.1 · last upstream push 2026-10-16 · no release since the pinned commit (current secops-v0.7.1)
- In the catalog
- listed · added 2026-10-21 · last checked 2026-10-21 · next check 2027-01-19 · fresh
- ScannersA scan of the tool's files with a scanner for malicious patterns. “Pending” means it has not run yet.
- cisco-skill-scanner: not run, pending
- Changes
- none since the entry was added on 2026-10-21
Disagree?
Dispute a value with evidence (file, line, commit): write to hello@readbeforerun.ai. A dispute is checked against the pinned commit; a changed value is logged under Changes.
How this entry was checked, and how to cite it
Selected by the published criteria (method v0.1). What the author says comes only from author statements; what the code shows comes from the code and manifests at commit ceb703a, each with one evidence line. A “?” means no evidence, never zero; zero never means safe.
The descriptive profile (what it does, can do, how it runs, what it needs) was read through the same isolated pipeline at commit ceb703a on 2026-10-25: one reader proposed every fact with a quoted line, a script confirmed each quoted line (57 of 57), and a second reader checked each sentence against its lines. Where nothing was found, the page says so instead of assuming “none”.
Known issues and limits: remote server-side behaviour stays “?”; the lab is not your production; static analysis can miss runtime behaviour.
Placement, badges or fast tracks are not for sale. The author is employed by an IT consultancy; the company has no influence on selection, execution or result.
Cite this:
Ilja Schlak. "Google Security Operations MCP Server". Agentic Security Field Guide, checked 2026-10-21, method reach-v0.1. https://readbeforerun.ai/catalog/google-secops-mcp/For maintainers
Badge for your README (reach 3 · not run yet):
[](https://readbeforerun.ai/catalog/google-secops-mcp/)Dispute a value with evidence (file, line, commit): write to hello@readbeforerun.ai. A dispute is checked against the pinned commit; a changed value is logged under Changes.
Claim the entry with a fieldguide.yaml in your repository: planned.
Other tools for the same task
Tasks: Alert triage, Detection engineering. The task pages compare every tool side by side.- Code showsCrowdStrike Falcon MCP ServerDraft · awaiting review
MCP server that connects agents to the CrowdStrike Falcon platform: detections, threat intel, host management and response.
Can tunnel or exfiltrate · write outside the project · change config or install globally · Approval: no evidence · ran once, 2026-11-07: did more than it said · checked 2026-11-07
- Code showsGitGuardian MCP ServerDraft · awaiting review
MCP server that brings GitGuardian secret detection, incident triage and honeytokens into an AI agent.
Can tunnel or exfiltrate · write outside the project · read broad tokens or the environment · +1 more · Approval: no evidence · ran once, 2026-11-07: did no more than it said · checked 2026-11-07
- Code showsPurple AI MCP ServerDraft · awaiting review
Read-only MCP server for the SentinelOne Singularity platform: Purple AI, data-lake PowerQuery, alerts, vulnerabilities, misconfigurations and inventory.
Can tunnel or exfiltrate · add autostart, users or keys · read broad tokens or the environment · Approval: no evidence · not run yet · checked 2026-10-21
- Code showsSentinelOne MCP Server (s1-secops-mcp)Draft · awaiting review
Node.js MCP server with 35 tools for the SentinelOne console, data lake, alert management and Hyperautomation, read-only by default.
Can write outside the project · read broad tokens or the environment · change config or install globally · Approval: no evidence · not run yet · checked 2026-10-21
- Code showsSentinelOne AI Analyst: Claude SkillsDraft · awaiting review
Claude plugin with eight SentinelOne skills for threat hunting, alert triage, detections, dashboards, parsers and Hyperautomation workflows.
Can tunnel or exfiltrate · add autostart, users or keys · write outside the project · +2 more · Approval: no evidence · not run yet · checked 2026-10-21
- Code showsMalware AnalystDraft · awaiting review
Agent skill that walks through a static malware analysis: deobfuscation, IOC extraction and detection signatures.
Can run shell commands or eval · Secrets: no evidence · not run yet · checked 2026-10-21