返回市场
米特尔-MCP

米特尔-MCP

作者:Montimage5 星标更新:2025-11-20

项目介绍

<!-- mcp-name: io.github.luongnv89/mitre-mcp -->

mitre-mcp: MITRE ATT&CK MCP 服务器

MCP 注册 <a href="https://pepy.tech/projects/mitre-mcp"><img src="https://static.pepy.tech/badge/mitre-mcp" alt="PyPI 下载量"></a>

PyPI 版本 Python 版本 测试状态 许可证 覆盖率 代码风格:black 预提交

生产就绪的模型上下文协议(MCP)服务器,它将MITRE ATT&CK®框架暴露给LLMs、AI助手和自动化工作流。使用官方的MCP Python SDK和mitreattack-python库构建,以安全、高性能的方式访问对手战术、技术、群体、软件和缓解措施。

**可在MCP注册表**中找到(搜索io.github.luongnv89/mitre-mcp)。

高亮

  • LLM原生体验 – 无缝集成到Claude、Windsurf、Cursor以及任何兼容MCP的客户端
  • 默认安全 – 验证输入、TLS验证、磁盘空间检查和结构化错误处理
  • 高性能 – 使用预建索引进行O(1)技术查找(比扫描快80-95%)
  • 灵活部署 – 标准输入输出用于本地客户端或HTTP服务器用于基于网络的集成

目录

特性

  • 全面覆盖MITRE ATT&CK – 所有技术、战术、群体、软件和缓解措施
  • 多领域支持 – 企业、移动和ICS ATT&CK领域
  • 智能缓存 – 自动缓存并可配置过期时间(默认:24小时)
  • 性能优化 – 使用预建索引进行O(1)查找(比扫描快80-95%)
  • 双传输模式 – 标准输入输出用于本地客户端,HTTP用于网络集成
  • 启用CORS的HTTP服务器 – 异步通知和支持跨域请求
  • 全面测试 – 114个测试,代码覆盖率66%
  • 预提交质量检查 – 自动格式化、linting、类型检查和安全扫描
  • 输入验证 – 默认安全,验证输入和清理响应
  • 程序化API – Python和Node.js客户端(参见API-INTEGRATION.md

可用的MCP工具

工具名称描述
get_techniques列出所有技术,并提供过滤选项
get_technique_by_id通过ID查找特定技术(例如,T1055)
get_techniques_by_tactic获取特定战术的技术(例如,持久性)
get_tactics列出所有战术类别
get_groups列出所有威胁行为者群体
get_techniques_used_by_group获取特定群体使用的技术(例如,APT29)
get_software列出恶意软件和工具,并提供过滤
get_mitigations列出所有安全缓解措施
get_techniques_mitigated_by_mitigation获取由特定缓解措施解决的技术

快速开始

安装

  1. 创建并激活虚拟环境:
python3 -m venv .venv
source .venv/bin/activate  # 在Windows上:.venv\Scripts\activate.bat
  1. 从PyPI安装:
pip install mitre-mcp
  1. 验证安装:
mitre-mcp --help

HTTP模式(推荐)

启动服务器:

mitre-mcp --http

预期输出:

2025-11-17 22:40:10,991 - mitre_mcp.mitre_mcp_server - INFO - 正在启动MITRE ATT&CK MCP服务器(HTTP模式,本地主机:8000)
======================================================================
MCP客户端配置(流式HTTP传输)
服务器URL:http://localhost:8000
MCP端点:http://localhost:8000/mcp

将以下内容添加到您的MCP客户端配置中:
{
  "mcpServers": {
    "mitreattack": {
      "url": "http://localhost:8000/mcp"
    }
  }
}
======================================================================

配置您的MCP客户端:

将以下JSON添加到您的客户端配置文件中:

{
  "mcpServers": {
    "mitreattack": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

配置文件位置:

  • macOS(Claude桌面)~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows(Claude桌面):%APPDATA%\Claude\claude_desktop_config.json
  • Linux(Claude桌面)~/.config/Claude/claude_desktop_config.json
  • VSCode:在您的MCP扩展设置中配置

自定义主机和端口:

mitre-mcp --http --host 0.0.0.0 --port 10000

然后在您的客户端配置中使用http://your-server-ip:10000/mcp

为什么选择HTTP模式?

  • 多个客户端可以同时连接
  • 更好的并发性和异步支持
  • 使用HTTP工具更容易调试
  • 支持CORS,适用于基于网络的客户端
  • 不需要路径配置

标准输入输出模式(替代方案)

对于仅需标准输入输出传输的本地客户端:

mitre-mcp

客户端配置:

{
  "mcpServers": {
    "mitreattack": {
      "command": "/绝对路径/to/.venv/bin/python",
      "args": ["-m", "mitre_mcp.mitre_mcp_server"]
    }
  }
}

注意:使用绝对路径。推荐大多数情况下使用HTTP模式。

强制数据下载

强制重新下载MITRE ATT&CK数据:

mitre-mcp --http --force-download

示例截图

VSCode配置:

配置

工具调用:

工具调用

结果:

结果

Web前端

frontend/目录中提供了一个现代的基于React的Web界面,用于通过聊天界面交互式地探索MITRE ATT&CK。

特点:

  • 清晰简洁的设计,采用黑白灰美学
  • 由LangGraphJS驱动的互动聊天框
  • 预建场景剧本,适用于常见的安全工作流程
  • 实时查询处理与MCP服务器

快速开始:

cd frontend
npm install
npm run dev

然后在浏览器中打开http://localhost:5173

前提条件:

  • 安装Node.js 18+
  • 运行MCP服务器:mitre-mcp --http --port 8000

更多详情,请参阅frontend/README.md文档。

文档

我们提供了三个详尽的指南,针对不同的使用场景:

1. 初学者指南

Beginner-Playbook.md – 适合刚接触MITRE ATT&CK或网络安全的新手

适用对象:

  • 非技术人员
  • 安全意识培训
  • 基础威胁情报
  • 通用网络安全教育

2. 高级剧本

Playbook.md – 适合使用MCP客户端的安全专业人员

适用对象:

  • 安全分析师
  • 威胁猎人
  • 事件响应者
  • 安全工程师

包括10个现成的场景:

  • 威胁情报
  • 检测工程
  • 威胁狩猎
  • 红队行动
  • 安全评估
  • 事件响应
  • 安全运营
  • 安全培训
  • 供应商评估
  • 风险管理

3. API集成指南

API-INTEGRATION.md – 适合构建自动化和定制集成的开发者

适用对象:

  • 后端开发者
  • 自动化工程师
  • 数据管道开发者
  • 定制工具项目

包括:

  • 完整的Python和Node.js客户端实现
  • 协议要求和示例
  • 测试和调试工具
  • 常见集成模式

配置

环境变量

在启动mitre-mcp之前设置,以自定义行为:

变量默认值目的
MITRE_ENTERPRISE_URL, MITRE_MOBILE_URL, MITRE_ICS_URL官方MITRE CTI GitHub URL覆盖ATT&CK捆绑包的位置或指向内部镜像
MITRE_DATA_DIRmitre_mcp/data将缓存捆绑包存储在自定义目录中
MITRE_DOWNLOAD_TIMEOUT30捆绑包下载的HTTP超时时间(秒)
MITRE_CACHE_EXPIRY_DAYS1缓存数据刷新的最大年龄
MITRE_REQUIRED_SPACE_MB200下载前检查的磁盘空间阈值
MITRE_DEFAULT_PAGE_SIZE / MITRE_MAX_PAGE_SIZE20 / 1000列表工具返回的默认和最大记录数
MITRE_MAX_DESC_LENGTH500响应中的描述长度被修剪至该长度
MITRE_LOG_LEVELINFO日志详细程度(DEBUG、INFO、WARNING等)

数据缓存

服务器自动缓存MITRE ATT&CK数据以提高性能:

  1. 第一次运行时,下载并存储数据到data/文件夹
  2. 后续运行时,如果缓存数据少于1天,则使用缓存数据
  3. 自动刷新超过1天的数据
  4. 使用--force-download强制重新下载

性能

场景提升备注
企业技术查找80-95%更快预建O(1)索引用于群体、缓解措施和技术查找
ATT&CK数据下载20-40%更快HTTP连接池和TLS会话重用
暖启动缓存<2秒缓存捆绑包复用,即时LLM查询

基准测试:macOS 14 / Apple M3 Pro,使用Python 3.11。使用MITRE_LOG_LEVEL=DEBUG获取计时日志。

程序化API

为了自动化、定制集成和批处理,请参阅**API-INTEGRATION.md**。

快速示例(Python):

from clients.python.mini_mcp_client import MitreMCPClient

async def main():
    client = MitreMCPClient(host="localhost", port=8000)

    # 获取所有战术
    tactics = await client.call_tool("get_tactics", {"domain": "enterprise-attack"})

    # 获取特定群体的技术
    techniques = await client.call_tool(
        "get_techniques_used_by_group",
        {"group_name": "APT29", "domain": "enterprise-attack"}
    )

可用客户端:

  • Pythonclients/python/mini-mcp-client.py,带有完整的CLI
  • Node.jsclients/nodejs/mini-mcp-client.js,带有完整的CLI

请参阅API-INTEGRATION.md以获取完整文档。

开发

克隆并安装

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

这设置了每次提交前的自动代码质量检查。

运行测试

pytest                      # 完整测试套件,带覆盖率
pre-commit run --all-files  # 所有质量检查

代码质量工具

格式化:

  • black – Python代码格式化器
  • isort – 导入组织器
  • prettier – YAML/JSON/Markdown格式化器

Linting & 类型检查:

  • flake8 – Python linter
  • mypy – 静态类型检查器
  • pydocstyle – 文档字符串检查器

安全性:

  • bandit – 安全漏洞扫描器
  • 文件验证器 – YAML、JSON、TOML、私钥检测

测试:

  • pytest – 提交前114个测试
  • 安装测试 – 包验证
  • 导入验证 – 模块导入性
  • CLI测试 – 入口点验证

故障排除

下载失败,提示“磁盘空间不足”

  • 在数据目录中释放至少200MB的空间,或者设置MITRE_DATA_DIR=/path/to/storage

数据从未更新

  • 缓存捆绑包会在1天后自动刷新
  • 强制刷新:mitre-mcp --force-download 或删除data/文件夹

工具调用返回错误

  • 确保技术ID遵循T####T####.###格式
  • 保持名称/战术在100字符以内

MCP客户端无法发现服务器

  • 确保客户端配置指向正确的Python路径
  • 手动测试: