taegis-magic-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@taegis-magic-mcpList high severity alerts from last hour"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
taegis-magic-mcp
An MCP (Model Context Protocol) server that wraps taegis-magic — the Secureworks Taegis XDR CLI and SDK — so that AI assistants and agents can query alerts, events, investigations, threat intelligence, and tenants directly from their context window.
How it works
taegis-magic is the official open-source
CLI and SDK for Secureworks Taegis XDR. It exposes subcommands like
taegis alerts search, taegis investigations search, taegis events search, etc. via
a rich Python SDK backed by the Taegis GraphQL API.
This server wraps those CLI commands behind the MCP tool protocol: an agent calls a tool
(search_alerts, search_events, …), the server runs the appropriate taegis command as
a subprocess, and returns the JSON output to the agent. No Taegis API knowledge is required
on the agent side.
Agent / LLM
│
│ MCP tool call: search_alerts(query="...", region="charlie")
▼
taegis-magic-mcp (this server)
│
│ subprocess: taegis alerts search --cell "..." --region charlie --limit 100
▼
taegis-magic CLI ─────► Secureworks Taegis XDR APIRelated MCP server: wazuh-mcp-server
Requirements
Requirement | Notes |
Python ≥ 3.11 | |
Used to run the server in an isolated environment | |
Must be installed and on |
Authentication
taegis-magic supports two authentication methods:
OAuth client credentials (recommended for automated use)
export TAEGIS_CLIENT_ID=<your-oauth-client-id>
export TAEGIS_CLIENT_SECRET=<your-oauth-client-secret>
export TAEGIS_ENVIRONMENT=<region> # charlie | delta | us1 | us2 | euThe MCP server forwards these as CLIENT_ID / CLIENT_SECRET to the
taegis-sdk-python environment
(the names the SDK reads). TAEGIS_CLIENT_ID / TAEGIS_CLIENT_SECRET are the
namespaced forms used here to avoid collisions with other tools.
Interactive login (recommended for interactive use)
taegis auth loginThe cached token is stored at ~/.taegis_sdk_python/config and reused automatically.
Available MCP tools
Tool | Description |
| Search Taegis alerts using OCSF query syntax |
| Search Taegis security events |
| List open security investigations |
| Search threat intelligence (IOCs, hashes, IPs, domains …) |
| List all tenants visible to the authenticated user |
| Escape hatch — run any |
All tools accept an optional region parameter (overrides TAEGIS_ENVIRONMENT).
Example queries
search_alerts(query="FROM alert EARLIEST=-1d WHERE severity='High'", region="charlie")
search_events(query="FROM event EARLIEST=-4h WHERE source_ip='10.0.0.1'")
search_threat_intel(query="evil.example.com")
run_taegis_command(args="rules search --region charlie --limit 10")Installation
With opencode
Clone or add this repo as a submodule, then add to your opencode.jsonc:
"mcp": {
"taegis": {
"type": "local",
"command": ["uv", "run", "--project", "/path/to/taegis-magic-mcp", "taegis-mcp"],
"environment": {
"TAEGIS_CLIENT_ID": "${TAEGIS_CLIENT_ID}",
"TAEGIS_CLIENT_SECRET": "${TAEGIS_CLIENT_SECRET}",
"TAEGIS_ENVIRONMENT": "${TAEGIS_ENVIRONMENT}"
},
"enabled": false
}
}Set "enabled": true (or toggle at runtime) when you want the Taegis tools in scope.
Standalone
git clone https://github.com/DarkLicornor/taegis-magic-mcp.git
cd taegis-magic-mcp
uv sync
uv run taegis-mcpDevelopment
git clone https://github.com/DarkLicornor/taegis-magic-mcp.git
cd taegis-magic-mcp
uv sync --extra dev
uv run taegis-mcp # run the server
uv run pytest # run tests
uv run ruff check . # lint
uv run mypy src # type-checkSee also
taegis-magic — the underlying Taegis CLI / SDK this server wraps
taegis-sdk-python — the Python SDK taegis-magic is built on
Model Context Protocol — the protocol this server implements
FastMCP — the MCP server framework used
License
MIT
Available Tools
6 toolslist_tenantsA
List all Taegis tenants visible to the authenticated user.
Returns: JSON array of tenant objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the read-only nature via 'List', scoping via 'visible to the authenticated user', and return format via 'JSON array of tenant objects.' It does not mention pagination or errors, but for a simple listing tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences: one for the action and one for the return format. It is front-loaded with the verb and includes no unnecessary words, earning maximum conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with zero parameters and an output schema, the description is complete: it states the primary function and the return type. The presence of an output schema means the description does not need to detail return fields beyond the summary provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so no parameter semantics are needed. The baseline for 0-parameter tools is 4, and the description correctly implies no parameters are required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'Taegis tenants' and scope 'visible to the authenticated user.' It clearly distinguishes itself from the sibling search tools (search_alerts, search_events, etc.) which are query-based rather than a simple listing operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention use cases such as retrieving tenant IDs before running searches, nor does it exclude any scenarios. The usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_taegis_commandA
Run an arbitrary taegis CLI command and return JSON output.
Use this as an escape hatch for commands not yet wrapped as dedicated tools
(e.g. "rules search --region charlie").
Args:
args: Space-separated CLI arguments after the taegis binary,
e.g. "audits search --region charlie --limit 10".
Returns: Raw JSON output from the taegis CLI.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states that it runs arbitrary commands and returns raw JSON, which is transparent about the action and output. However, it gives no warning about potential side effects or errors, which would be valuable for an arbitrary-command tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (overview, Args, Returns). It is front-loaded with the main purpose and every sentence adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an escape-hatch tool, the description covers what it does, how to invoke it, and expected output. It does not mention authentication or error handling, but these are less critical for a generic wrapper and the sibling tools handle specific contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description thoroughly explains the 'args' parameter: space-separated CLI arguments after the binary, with a concrete example. Even though schema coverage is 0%, the description fully compensates for this single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it runs an arbitrary taegis CLI command and returns JSON output. It explicitly identifies itself as an escape hatch, which distinguishes it from sibling tools that wrap specific searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says to use it for commands not yet wrapped as dedicated tools, which implies when to use it. It does not explicitly say 'use dedicated tools when available' as an exclusion, but the escape hatch framing provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_alertsA
Search Taegis alerts using OCSF query syntax.
Args:
query: OCSF query string, e.g. "FROM alert EARLIEST=-1d WHERE severity='High'"
region: Taegis environment/region (charlie, delta, us1, us2, eu …).
Defaults to the TAEGIS_ENVIRONMENT env var, then "charlie".
limit: Maximum number of results to return (default 100, max 10 000).
Returns: JSON array of alert objects.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden of behavioral disclosure. It provides useful context: OCSF query syntax, default region fallback to TAEGIS_ENVIRONMENT and then 'charlie', a maximum limit of 10,000, and a return format of a JSON array. It does not mention rate limits or pagination, but for a read-only search tool this is largely sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose sentence, an Args section, and a Returns section. It is slightly longer than necessary but every sentence adds value—example query, default behavior, and result format. Front-loading the core purpose makes it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters (1 required) and an output schema, so the description doesn't need to detail return fields. It covers input syntax, defaults, limits, and return type. It could mention whether the search spans all tenants, but for an alert search tool this is adequate and contextually aligned with its sibling search tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain parameters. It does so exceptionally: query is described with a concrete OCSF example, region lists example values (charlie, delta, us1, us2, eu) and default resolution, and limit specifies default (100) and max (10,000). This far exceeds the schema's minimal titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Search Taegis alerts using OCSF query syntax' clearly specifies the verb (search), resource (Taegis alerts), and query syntax (OCSF). This distinguishes it from sibling tools like search_events and search_investigations, which target other data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating 'Search Taegis alerts' but does not explicitly mention when to use this tool versus alternatives or provide exclusions. It lacks the explicit alternative guidance seen in high-scoring examples, but the context is clear enough for an agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_eventsA
Search Taegis security events.
Args: query: Event query string. region: Taegis environment/region. Defaults to TAEGIS_ENVIRONMENT or "charlie". limit: Maximum number of results (default 100).
Returns: JSON array of event objects.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure. It adds useful context by explaining the default region derived from TAEGIS_ENVIRONMENT, the default limit, and the return format as a JSON array. However, it does not disclose potential side effects, error behavior, or rate limits, which are common for search tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact docstring with a one-line purpose, a short Args section, and a Returns line. It is front-loaded and concise, with no filler or redundant prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with an output schema, the description covers the essential purpose, parameters, and return type. However, it lacks usage guidance (when to choose this over sibling tools) and does not elaborate on query syntax, which prevents it from being fully contextually complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the sole source of parameter meaning. It explains 'query' as an event query string, 'region' as the Taegis environment with a default, and 'limit' as the maximum result count. While this adds value beyond the schema, 'query' lacks syntax or example details, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Search Taegis security events.' This directly states the tool's function and distinguishes it from sibling tools like search_alerts, search_investigations, and search_threat_intel, which target different data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like search_alerts or search_investigations. The description only covers mechanics (query, region, limit) and does not mention exclusions, prerequisites, or a decision framework.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_investigationsA
List and search open security investigations in Taegis.
Args: region: Taegis environment/region. Defaults to TAEGIS_ENVIRONMENT or "charlie". limit: Maximum number of investigations to return (default 25).
Returns: JSON array of investigation objects.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It discloses the 'open' filter, default values, and return type, but omits details on permissions, side effects, or pagination. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a one-sentence purpose, an Args section, and a Returns section. Every sentence contributes directly to tool usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with two optional parameters and an output schema, the description covers the core scope, parameters, and return format. It could mention pagination or tenant context, but the essentials are complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the input schema: 'region' is explained as the Taegis environment with a fallback to an environment variable, and 'limit' is defined as the maximum number of results. This enriches the schema's minimal default-value definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List and search open security investigations in Taegis.' The verb+resource combination is specific and distinguishes it from sibling tools like search_alerts and search_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for investigation data, but it does not explicitly state when to use it over alternatives or provide any exclusions. Usage context is clear but not contrasted with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_threat_intelA
Search Taegis threat intelligence (IOCs, hashes, IPs, domains …).
Args: query: Search query — indicator value or free-text search. region: Taegis environment/region. Defaults to TAEGIS_ENVIRONMENT or "charlie".
Returns: JSON array of threat intelligence objects.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| region | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It adds value by specifying the return type ('JSON array of threat intelligence objects') and the region default behavior ('Defaults to TAEGIS_ENVIRONMENT or "charlie"'). While it doesn't discuss pagination or rate limits, this is a simple search tool and the described behavior is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, with a single-purpose opening sentence and organized Args/Returns sections. Every sentence earns its place; there is no redundant or extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter search tool, the description covers the essential context: what it searches, how parameters behave, and what is returned. The presence of an output schema means the description needn't list fields. It lacks explicit mention of potential pagination or permissions, but these are not critical for basic usage, making it nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage (only titles), so the description fully compensates. The Args section explains that 'query' is an 'indicator value or free-text search' and 'region' is 'Taegis environment/region' with an explicit default. This adds meaningful semantics beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Search Taegis threat intelligence (IOCs, hashes, IPs, domains …)', which clearly states the tool's specific verb and resource. This also distinguishes it from sibling tools like search_alerts and search_events by focusing on threat intelligence rather than alerts or investigations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the types of indicators (IOCs, hashes, IPs, domains) and the platform (Taegis), which gives clear context for when this tool is appropriate. However, it does not explicitly mention alternatives or exclusions, such as 'for security events use search_events', so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource type (alerts, events, investigations, tenants, threat intel) with clear search/list semantics. The escape hatch command is explicitly for arbitrary CLI calls, so there's no overlap with the dedicated tools.
All tool names follow a consistent verb_noun snake_case pattern (search_alerts, list_tenants, run_taegis_command). The pattern is uniform across the set with no mixed conventions.
Six tools is well within the ideal 3-15 range. The server covers the core Taegis search use cases without redundancy, and the escape hatch avoids the need for many narrow wrappers.
The dedicated tools cover the most common read/search operations for a security platform. Minor gaps exist (e.g., no dedicated get-by-id tools or investigation management), but the run_taegis_command escape hatch fills any missing functionality, making the surface effectively complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceUniversal MCP server that wraps any CLI tool, enabling AI assistants to run commands via natural language.MIT
- AlicenseAqualityCmaintenanceAI-powered MCP server that enables security analysts to query Wazuh SIEM/XDR for alert triage, threat hunting, compliance audits, and incident response through natural language prompts.2813MIT
- FlicenseNot gradedqualityDmaintenanceA robust MCP server that bridges AI development tools with Palo Alto Cortex platforms (XSOAR/XSIAM), enabling natural language-driven development, testing, and automation of security workflows.1
- AlicenseNot gradedqualityAmaintenanceA modular, multi-transport Model Context Protocol server that connects AI assistants to the CrowdStrike Falcon platform. Query NG-SIEM logs, triage alerts, inspect endpoints, manage detection rules, and audit cloud security posture — all through natural language.13MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DarkLicornor/taegis-magic-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server