Skip to main content
Glama
stoyky

MITRE ATT&CK MCP Server

by stoyky
README.md
<h1 align="center">
  <br>
  MITRE ATT&CK MCP Server
  <br>
</h1>

<h4 align="center">A Model-Context Protocol server for the MITRE ATT&CK knowledge base</h4>

<p align="center">
  <a href="#key-features">Key Features</a> •
  <a href="#installation">Installation</a> •
  <a href="#how-to-use">How To Use</a> •
  <a href="#use-cases">Use Cases</a> •
  <a href="#credits">Credits</a>
</p>

## Key Features

* 50+ Tools for MITRE ATT&CK Querying
  * Comprehensive access to the MITRE ATT&CK knowledge base through structured API tools
* Automatic ATT&CK Navigator Layer Generation
  * Generate visual representations of techniques used by threat actors
* Threat Actor and Malware Attribution
  * Query relationships between malware, threat actors, and techniques
* Technique Overlap Analysis
  * Compare techniques used by different threat actors or malware families

## Installation

To clone and run this server, you'll need [Git](https://git-scm.com), [Python](https://www.python.org/), and [PipX](https://github.com/pypa/pipx) installed on your computer.

1. Ensure Git, Python, and PipX have been installed using their official respective installation instructions for Windows/Mac/Linux
2. Install the MCP Server using PipX
   
```bash
pipx install git+https://github.com/stoyky/mitre-attack-mcp
```

## How To Use

### Configure with Claude AI Desktop

1. Open Claude's MCP server configuration file.

#### Windows

```
C:\Users\[YourUsername]\AppData\Roaming\Claude\claude_desktop_config.json
# or
C:\Users\[YourUsername]\AppData\Local\AnthropicClaude\claude_desktop_config.json
```

#### Linux / Mac

```bash
~/.config/Claude/claude_desktop_config.json
```

2. Add the following to that file if it doesn't already exist. If it already exists, merge the two JSON structures accordingly.

```json
{
  "mcpServers": {
    "mitre-attack": {
      "command": "mitre-attack-mcp",
      "args": [
      ]
    }
  }
}
```

**Note**: By default the MCP server stores the mitre-related data in the current users default cache directory. You can specify a custom data directory to use with the following config:

```json
{
  "mcpServers": {
    "mitre-attack": {
      "command": "mitre-attack-mcp",
      "args": [
        "--data-dir",
        "<path-to-data-dir>"
      ]
    }
  }
}
```

## Changelog

* v1.0.2 - Now installable via PipX on Windows, Mac, and Linux. "data directory" argument is now optional and will use the default cache directory if omitted.
* v1.0.0 - Initial release
* V1.0.1 - Improved robustness of layer metadata generation and error handling in layer generation function

## Use Cases

* Query for detailed information about specific malware, tactics, or techniques
* Discover relationships between threat actors and their tools
* Generate visual ATT&CK Navigator layers for threat analysis
* Find campaign overlaps between different threat actors
* Identify common techniques used by multiple malware families

Please see my [blog](https://www.remyjaspers.com/blog/mitre_attack_mcp_server/) for more information and examples.

## Credits

* [MITRE ATT&CK](https://attack.mitre.org/) - Knowledge base of adversary tactics and techniques
* [MITRE ATT&CK Python](https://github.com/mitre-attack/mitreattack-python) - Python library to interact with the knowledge base
* [ATT&CK Navigator](https://github.com/mitre-attack/attack-navigator) - Tool for visualizing ATT&CK matrices
* [Anthropic](https://www.anthropic.com/) - Developers of the Model-Context Protocol

---

> Created by [Remy Jaspers](https://github.com/stoyky)

TDQS

B3.3/5.0

Scored across 55 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific ATT&CK objects and relationships, with clear naming like 'get_techniques_used_by_group' versus 'get_groups_using_technique'. However, some tools like 'get_objects_by_name' and 'get_objects_by_content' could be confused due to overlapping search functionality, and 'get_layer_metadata' is a special-case tool that might be misapplied.

Naming Consistency5/5

Tool names follow a highly consistent snake_case pattern with a clear 'verb_noun' or 'verb_noun_preposition_noun' structure throughout. All tools start with 'generate_' or 'get_', and relationship tools consistently use prepositions like 'by', 'for', 'using', or 'targeting' to indicate connections between entities.

Tool Count2/5

With 55 tools, this is an extremely large set that feels overwhelming for the ATT&CK framework domain. While ATT&CK has many entities and relationships, this many tools will likely cause analysis paralysis and difficulty in tool selection, exceeding the typical well-scoped range of 3-15 tools.

Completeness5/5

The toolset provides comprehensive coverage of the MITRE ATT&CK domain, including retrieval of all entity types (groups, techniques, software, etc.), relationship queries between entities, search capabilities by various attributes, and specialized functions like layer generation and timestamp filtering. No obvious gaps exist for querying the framework's data model.

Maintenance

ActivityInactive
ResponsivenessNo issues