Exposes the MITRE ATT&CK framework through nine MCP tools that let you query tactics, techniques, threat groups, software, and mitigations across Enterprise, Mobile, and ICS domains. You get operations like get_technique_by_id for looking up specific TTPs, get_techniques_used_by_group for profiling adversaries like APT29, and get_techniques_mitigated_by_mitigation for defense planning. Built on mitreattack-python with automatic 24-hour caching and O(1) lookups via pre-built indices. Runs in HTTP mode for multi-client access or stdio for local integrations. Reach for this when you need Claude or other LLMs to reason about threat intelligence, map defensive controls to attack patterns, or analyze adversary tradecraft without manually searching the ATT&CK website.
Production-ready Model Context Protocol (MCP) server that exposes the MITRE ATT&CK® framework to LLMs, AI assistants, and automation workflows. Built with the official MCP Python SDK and mitreattack-python library for secure, high-performance access to adversary tactics, techniques, groups, software, and mitigations.
Available in the MCP Registry (search for io.github.luongnv89/mitre-mcp).
| Tool Name | Description |
|---|---|
get_techniques | List all techniques with filtering options |
get_technique_by_id | Look up specific technique by ID (e.g., T1055) |
get_techniques_by_tactic | Get techniques for a specific tactic (e.g., persistence) |
get_tactics | List all tactical categories |
get_groups | List all threat actor groups |
get_techniques_used_by_group | Get techniques used by a specific group (e.g., APT29) |
get_software | List malware and tools with filtering |
get_mitigations | List all security mitigations |
get_techniques_mitigated_by_mitigation | Get techniques addressed by a specific mitigation |
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate.bat
pip install mitre-mcp
mitre-mcp --help
Start the server:
mitre-mcp --http
Expected output:
2025-11-17 22:40:10,991 - mitre_mcp.mitre_mcp_server - INFO - Starting MITRE ATT&CK MCP Server (HTTP mode on localhost:8000)
======================================================================
MCP Client Configuration (Streamable HTTP Transport)
Server URL: http://localhost:8000
MCP Endpoint: http://localhost:8000/mcp
Add this to your MCP client configuration:
{
"mcpServers": {
"mitreattack": {
"url": "http://localhost:8000/mcp"
}
}
}
======================================================================
Configure your MCP client:
Add this JSON to your client's configuration file:
{
"mcpServers": {
"mitreattack": {
"url": "http://localhost:8000/mcp"
}
}
}
Configuration file locations:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonCustom host and port:
mitre-mcp --http --host 0.0.0.0 --port 8080
Then use http://your-server-ip:8080/mcp in your client configuration.
Why HTTP mode?
For local-only clients that require stdio transport:
mitre-mcp
Client configuration:
{
"mcpServers": {
"mitreattack": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["-m", "mitre_mcp.mitre_mcp_server"]
}
}
}
Note: Use absolute paths. HTTP mode is recommended for most use cases.
Force a fresh download of MITRE ATT&CK data:
mitre-mcp --http --force-download
VSCode Configuration:

Tool Invocation:

Results:

A modern React-based web interface is available in the frontend/ directory for interactive exploration of MITRE ATT&CK through a chat interface.
Features:
Quick Start:
cd frontend
npm install
npm run dev
Then open http://localhost:5173 in your browser.
Prerequisites:
mitre-mcp --http --port 8000For more details, see the frontend/README.md documentation.
We provide three comprehensive guides tailored to different use cases:
Beginner-Playbook.md - For those new to MITRE ATT&CK or cybersecurity
Ideal for:
Playbook.md - For security professionals using MCP clients
Ideal for:
Includes 10 ready-to-use scenarios:
API-INTEGRATION.md - For developers building automation and custom integrations
Ideal for:
Includes:
Set before starting mitre-mcp to customize behavior:
| Variable | Default | Purpose |
|---|---|---|
MITRE_ENTERPRISE_URL, MITRE_MOBILE_URL, MITRE_ICS_URL | Official MITRE CTI GitHub URLs | Override ATT&CK bundle locations or point to internal mirror |
MITRE_DATA_DIR | mitre_mcp/data | Store cached bundles in custom directory |
MITRE_DOWNLOAD_TIMEOUT | 30 | HTTP timeout in seconds for bundle downloads |
MITRE_CACHE_EXPIRY_DAYS | 1 | Maximum age before cached data is refreshed |
MITRE_REQUIRED_SPACE_MB | 200 | Disk space threshold checked before downloading |
MITRE_DEFAULT_PAGE_SIZE / MITRE_MAX_PAGE_SIZE | 20 / 1000 | Default and maximum records returned by list tools |
MITRE_MAX_DESC_LENGTH | 500 | Trimmed description length in responses |
MITRE_LOG_LEVEL | INFO | Logging verbosity (DEBUG, INFO, WARNING, etc.) |
MITRE_CORS_ORIGINS | * | CORS allowed origins for HTTP mode (* = all, or comma-separated list of domains) |
The server automatically caches MITRE ATT&CK data to improve performance:
data/ folder--force-download to force fresh download| Scenario | Improvement | Notes |
|---|---|---|
| Enterprise technique lookup | 80-95% faster | Pre-built O(1) indices for groups, mitigations, and techniques |
| ATT&CK data downloads | 20-40% faster | HTTP connection pooling with TLS session reuse |
| Warm cache startup | <2s | Cached bundles reused for instant LLM queries |
Benchmarks: macOS 14 / Apple M3 Pro with Python 3.11. Use MITRE_LOG_LEVEL=DEBUG for timing logs.
For automation, custom integrations, and batch processing, see API-INTEGRATION.md.
Quick example (Python):
from clients.python.mini_mcp_client import MitreMCPClient
async def main():
client = MitreMCPClient(host="localhost", port=8000)
# Get all tactics
tactics = await client.call_tool("get_tactics", {"domain": "enterprise-attack"})
# Get techniques for a group
techniques = await client.call_tool(
"get_techniques_used_by_group",
{"group_name": "APT29", "domain": "enterprise-attack"}
)
Available clients:
clients/python/mini-mcp-client.py with full CLIclients/nodejs/mini-mcp-client.js with full CLISee API-INTEGRATION.md for complete documentation.
git clone https://github.com/montimage/mitre-mcp.git
cd mitre-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pre-commit install
This sets up automatic code quality checks before each commit.
pytest # Full test suite with coverage
pre-commit run --all-files # All quality checks
Formatting:
Linting & Type Checking:
Security:
Testing:
Download fails with "Insufficient disk space"
MITRE_DATA_DIR=/path/to/storageData never updates
mitre-mcp --force-download or delete data/ folderTool calls return errors
T#### or T####.### formatMCP client cannot discover server
mitre-mcp and verify server startsurl field is set correctlyModule not found: mcp.server.fastmcp
pip install "mcp[cli]" in your virtual environmentDoes mitre-mcp work offline?
Which Python versions are supported?
pyproject.toml).How often is data refreshed?
MITRE_CACHE_EXPIRY_DAYS or use --force-download.Is HTTP mode safe for production?
MIT License - See LICENSE file for details.
mitre-mcp is developed and maintained by Montimage, a cybersecurity company specializing in network monitoring, security analysis, and AI-driven threat detection solutions. We develop innovative tools that help organizations protect their digital assets and ensure network security.
For questions or support: luong.nguyen@montimage.eu