MITRE ATLAS MCP Server

io.github.imouichePublished by GitHub account imouichev0.1.0Updated Nov 14, 2026

Threat-model AI and agentic systems against MITRE ATLAS: surfaces, techniques, controls

The publisher's own server: Red Atlas Api

Overview

AI-generated overview

Threat-models AI and agentic systems against MITRE ATLAS, mapping your architecture's surfaces to applicable techniques, mitigations and real incidents.

What you can do
  • Profile a system's architecture into ranked techniques, mitigations and compound risks, and list the ten surfaces that drive the mapping
  • Drill into one surface's techniques and find analogous case studies ranked by technique overlap
  • Look up ATLAS reference data: release info, tactics, techniques, mitigations, case studies with attack flows, and attacker software
  • Search techniques and case studies by text, platform, maturity, type or technique employed
  • Cross-map techniques to ATT&CK, STRIDE, OWASP Top 10 for LLM and NIST AI RMF, with CoSAI control owners
  • Read the matrix and surface taxonomy as resources, and use bundled threat-model prompts
When to use it
Useful when designing or reviewing an AI or agentic system and you want a structured threat model grounded in a pinned ATLAS release, including which risks arise from combinations of features such as untrusted input plus tool use. Also handy for teams already modelling against ATT&CK who need the AI-specific parallels.
Requirements
Runs locally over stdio via npx; needs Node 18+ and Python 3.12+ on PATH. On first run it builds a private virtualenv under ~/.mitre-atlas-mcp-server/runtime. MITRE_ATLAS_PYTHON can point at an existing interpreter that already has the dependencies; MITRE_ATLAS_RUNTIME_DIR relocates the cached virtualenv. No network access at runtime and no authentication.
Before you install
The first run creates a virtualenv and installs packages, so it writes to the runtime directory (by default under your home folder). If you set MITRE_ATLAS_PYTHON, that interpreter must already satisfy the dependencies. Data is vendored and pinned, so results reflect the bundled ATLAS and CoSAI releases rather than the latest upstream state.

Installation

In SourceWeft

  1. Open MITRE ATLAS MCP Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

MITRE ATLAS MCP Server

Threat-model AI and agentic systems against MITRE ATLAS.

Describe your system's architecture - an agent with tool access over a RAG corpus, say - and get back the ATLAS techniques that apply, the mitigations that cover them, the compounding risks your specific combination of surfaces creates, and the real-world incidents that have already happened to systems shaped like yours.

This is not a lookup wrapper around the ATLAS matrix. Lookup is included, but the point is the mapping from how you built it to what can be done to it.

Pinned to ATLAS v2026.10: 16 tactics, 221 techniques, 44 mitigations, 77 case studies. Mitigations are enriched with control ownership from the CoSAI Risk Map, and techniques cross-map to ATT&CK, STRIDE, OWASP Top 10 for LLM and NIST AI RMF. 17 tools. No network access at runtime; both datasets are vendored.

Install

bash
npx -y @imouiche/mitre-atlas-mcp-server

Requires Node 18+ and Python 3.12+ on PATH. On first run it prepares a private virtualenv under ~/.mitre-atlas-mcp-server/runtime, which takes a few seconds: both datasets are already in the package, so only mcp and pyyaml are installed and nothing is downloaded. Nothing touches your system or active Python environment.

VariableEffect
MITRE_ATLAS_PYTHONUse this interpreter directly and skip virtualenv creation. It must already satisfy the dependencies in pyproject.toml.
MITRE_ATLAS_RUNTIME_DIRRelocate the cached virtualenv.

The PyPI release is not published yet, so these do not work today:

bash
uvx mitre-atlas-mcp-server            # pending PyPIpip install mitre-atlas-mcp-server    # pending PyPI

uvx will become the recommended path once the package is on PyPI, since it needs no Node at all.

Claude Desktop / Claude Code

json
{  "mcpServers": {    "mitre-atlas": {      "command": "npx",      "args": ["-y", "@imouiche/mitre-atlas-mcp-server"]    }  }}

The idea

ATLAS is organised by adversary intent - tactics and techniques. Engineers describe systems by architecture. That mismatch is why ATLAS is harder to apply than it should be, and it is the gap this server closes.

It defines ten surfaces, each a yes/no question about your architecture, each anchored to the ATLAS techniques that become reachable when the answer is yes:

SurfaceApplies when
untrusted_inputContent from outside your trust boundary reaches the model
tool_useThe model's output drives function, shell, HTTP, or MCP calls
ragRetrieved documents land in the context window
agent_memoryState persists across turns or sessions
agent_configConfig, system prompts, or tool manifests are reachable
multi_agentAgents delegate to, spawn, or message other agents
rendered_outputOutput is rendered as markdown, HTML, or links
inference_apiA model endpoint is reachable over the network
model_supply_chainWeights, adapters, datasets, or MCP servers come from a registry
training_pipelineYou train or fine-tune on data you collect

The surfaces that matter most are the ones that combine. untrusted_input alone is a content-filtering problem. untrusted_input + tool_use is the agentic equivalent of remote code execution: injected text becomes attacker-chosen actions. profile_ai_system reports those compounds explicitly rather than leaving you to infer them from two separate lists.

ATLAS v2026.10 tags 148 of its 221 techniques as applying to Agentic AI, which is what makes this framing tractable - the agentic coverage is MITRE's, not invented here.

Tools

Threat modelling

ToolDoes
list_surfacesThe ten surfaces, with the question that decides each. Start here
profile_ai_systemSurfaces in → techniques ranked by exposure, mitigations ranked by coverage, compound risks, and techniques ATLAS has no mitigation for
map_surface_to_techniquesOne surface at a time, for drilling in
find_analogous_incidentsCase studies ranked by technique overlap, each naming the overlapping techniques so the relevance is checkable

Reference

ToolDoes
get_atlas_infoRelease served and collection sizes
list_tacticsAll 16 tactics with technique counts
get_techniqueOne technique: tactics, sub-techniques, mitigations, case studies, ATT&CK parallel
search_techniquesText search, filterable by platform and maturity
get_techniques_by_tacticBy tactic id or name
get_mitigationOne mitigation, with everything it covers
get_mitigations_for_techniqueMitigations for a technique, inheriting from the parent when a sub-technique has none
get_case_studyOne case study with its ordered attack flow - each step's tactic, technique, and what the operator actually did
search_case_studiesBy text, by type (27 Incident, 50 Exercise), or by technique employed
get_softwareAttacker tooling ATLAS catalogues

Cross-framework

ToolDoes
map_atlas_to_attackThe ATT&CK technique an ATLAS technique parallels
map_attack_to_atlasThe reverse, for teams already modelling against ATT&CK
map_technique_to_frameworksATT&CK, STRIDE, OWASP Top 10 for LLM and NIST AI RMF for one technique, plus the CoSAI risks and controls behind them

ATLAS asserts an ATT&CK parallel for 48 of 221 techniques. Every tool reports its coverage figure, so an empty result is never mistaken for "no parallel exists".

Resources: atlas://matrix (the matrix as markdown), atlas://surfaces (the taxonomy).

Prompts: threat_model_this_agent, review_mcp_tool_surface.

Who owns the fix

ATLAS tells you what to do about a technique. It does not tell you who does it.

So every mitigation this server returns is enriched from the CoSAI Risk Map (Coalition for Secure AI, an OASIS open project), which maps its engineering controls to ATLAS mitigation ids. Where a mapping exists you also get the control, the personas who own it, and the components it applies to:

AML.M0004  Limit AI Service Query Volume and Rate  CoSAI control : Agent Execution Bounds  owners        : Agentic Platform and Framework Providers, Application Developer,                  AI Platform Provider  components    : Agent Reasoning Core, Orchestration Input Handling,                  Orchestration Output Handling

That turns a ranked mitigation list into assignable work, which is the point of threat-modelling a system you are actually building.

Coverage, stated plainly. 13 of ATLAS's 44 mitigations have a CoSAI control, and all 13 cited ids resolve against the pinned ATLAS release. Per surface, roughly a quarter to a half of returned mitigations carry an owner; agent_config currently has none. Where CoSAI maps nothing, the tools say so rather than returning a silent blank.

Example

Threat-model this: a customer-support agent that reads incoming email, retrieves from our knowledge base, and can issue refunds through our billing API. It remembers prior conversations per customer.

That is untrusted_input + rag + tool_use + agent_memory. profile_ai_system returns the ranked techniques, and leads with the three compounds - injection-to-tool-call, corpus-write-to-tool-call, and persistent injection with delayed triggers - then the mitigations in coverage order, then the real incidents that have already followed that shape.

Data

Two datasets are vendored, so the server makes no network calls at runtime.

ATLAS at src/mitre_atlas_mcp/data/atlas/ATLAS.yaml (1.1MB), pinned to the release tag in RELEASE:

bash
python scripts/refresh_data.py --release v2026.10uv run pytest        # the counts and taxonomy ids are asserted

CoSAI Risk Map at src/mitre_atlas_mcp/data/cosai/ (348KB), pinned to the upstream commit in COMMIT:

bash
python scripts/refresh_cosai.py --latestuv run pytest        # the ATLAS ids CoSAI cites are asserted to resolve

Neither dataset is fetched at runtime, and that is deliberate. Shipping the data keeps results reproducible, lets the server run air-gapped, and means no third party can change what it reports between two identical calls. For a security tool that integrity property is worth more than freshness measured in days.

Staying current is automated instead: .github/workflows/refresh-data.yml runs weekly, pulls upstream, runs the suite against the refreshed data and opens a pull request only when something changed. Accepting a refresh stays a reviewed decision, because upstream can renumber an id the surface taxonomy depends on. get_atlas_info reports both pins, so a caller can always see which releases are being served.

The tests assert collection sizes and that every technique id in the surface taxonomy resolves, so a renumbered or retired technique fails the suite instead of silently shortening a threat model.

Development

bash
uv syncuv run pytestuv run python -m mitre_atlas_mcp.server    # stdio

Licence

Apache-2.0. The ATLAS dataset is © 2021–2026 MITRE, redistributed under Apache-2.0 - see NOTICE. This project is not affiliated with or endorsed by MITRE.

Issues and pull requests are welcome at github.com/imouiche/mitre-atlas-mcp-server.

Author

Inoussa Mouiche, Ph.D. - University of Windsor, WASP Lab. Research in threat intelligence automation, machine learning, agent AI security, and LLM-powered security operations.

GitHub · LinkedIn · Google Scholar · [email protected]

Also the author of the MITRE ATT&CK MCP Server, which covers conventional adversary TTPs; this server covers the AI-specific ones and cross-maps between the two.

Source: README.md at commit a9548ee

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the server did not start.

Version history

1
  1. v0.1.0LatestNov 14, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Atlas integrations