项目简介

'mitre-mcp' 是一个基于Model Context Protocol (MCP) 构建的服务器,旨在以结构化、可编程的方式向大型语言模型(LLM)客户端(如Claude、Windsurf、Cursor等)提供MITRE ATT&CK® 威胁情报框架的数据。它利用官方MCP Python SDK和'mitreattack-python'库,实现了对攻击战术、技术、威胁组织、恶意软件和防御措施的安全、高性能访问。

主要功能点

  • 全面的MITRE ATT&CK覆盖:支持企业(Enterprise)、移动(Mobile)和工业控制系统(ICS)三大ATT&CK域中的所有技术、战术、威胁组织、软件和防御措施。
  • LLM原生体验:通过标准化的JSON-RPC协议和多种传输方式,与任何兼容MCP的LLM客户端无缝集成。
  • 高性能数据访问:利用预构建的索引实现O(1)复杂度的技术查找,比传统扫描快80-95%,并支持智能缓存机制(默认24小时刷新)。
  • 灵活的部署模式:支持'stdio'模式用于本地客户端集成,或'HTTP'模式用于基于Web的集成,并提供CORS支持和异步通知。
  • 安全与质量保障:具备输入验证、结构化错误处理、TLS验证、磁盘空间检查、以及全面的测试和代码质量检查。
  • 丰富的工具集:提供以下工具供LLM调用:
    • 'get_techniques':列出所有ATT&CK技术,支持过滤和分页。
    • '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. 创建并激活Python虚拟环境

    python3 -m venv .venv
    source .venv/bin/activate  # 在Windows上使用: .venv\Scripts\activate.bat
  2. 从PyPI安装

    pip install mitre-mcp
  3. 验证安装

    mitre-mcp --help

服务器配置

MCP服务器启动后,您的MCP客户端需要进行配置才能连接。以下是两种常见模式的配置方式:

HTTP 模式 (推荐)

在命令行启动服务器:

mitre-mcp --http

您可以选择自定义主机和端口:

mitre-mcp --http --host 0.0.0.0 --port 8080

首次启动时,服务器会自动下载MITRE ATT&CK数据并进行缓存。您也可以通过添加'--force-download'参数强制更新数据:

mitre-mcp --http --force-download

MCP客户端配置: 请将以下JSON片段添加到您的MCP客户端配置文件中(例如Claude Desktop的'claude_desktop_config.json',或VSCode的MCP扩展设置):

{
  "mcpServers": {
    "mitreattack": {
      "url": "http://localhost:8000/mcp"
    }
  }
}
  • 'mitreattack':这是您为该MCP服务器实例自定义的名称,在客户端中将使用此名称来引用它。
  • 'url':指定MCP服务器的HTTP访问地址。默认情况下,服务器运行在'http://localhost:8000/mcp'。如果自定义了主机和端口,请相应修改此URL。

为什么推荐HTTP模式?

  • 允许多个客户端同时连接。
  • 更好的并发和异步支持。
  • 更易于使用HTTP工具进行调试。
  • 支持Web客户端的CORS(跨域资源共享)。
  • 客户端无需配置服务器的绝对路径。

Stdio 模式 (备选)

在命令行启动服务器:

mitre-mcp

MCP客户端配置: 对于需要stdio传输的本地客户端,请将以下JSON片段添加到您的MCP客户端配置文件中:

{
  "mcpServers": {
    "mitreattack": {
      "command": "/absolute/path/to/.venv/bin/python",
      "args": ["-m", "mitre_mcp.mitre_mcp_server"]
    }
  }
}
  • 'mitreattack':您为该MCP服务器实例自定义的名称。
  • 'command':指定您的Python虚拟环境中Python解释器的绝对路径。例如,如果您的虚拟环境在'~/.venv/',则路径可能是'/home/youruser/.venv/bin/python'或'C:\Users\YourUser.venv\Scripts\python.exe'。
  • 'args':启动'mitre-mcp'服务器模块所需的命令行参数。

基本使用方法

一旦MCP服务器运行并成功配置到您的LLM客户端,您就可以通过自然语言向LLM提问,LLM将自动调用'mitre-mcp'服务器提供的工具来获取信息。

示例对话

  • 用户:什么是T1055技术?
    • LLM(自动调用):'get_technique_by_id(technique_id="T1055")'
    • LLM(返回):会返回T1055(进程注入)技术的详细描述。
  • 用户:APT29组织使用了哪些技术?
    • LLM(自动调用):'get_techniques_used_by_group(group_name="APT29")'
    • LLM(返回):列出APT29使用的所有相关技术。
  • 用户:告诉我所有与“初始访问”战术相关的技术。
    • LLM(自动调用):'get_techniques_by_tactic(tactic_shortname="initial-access")'
    • LLM(返回):提供“初始访问”战术下的所有技术列表。
  • 用户:有哪些用于缓解权限提升的技术?
    • LLM(自动调用):'get_mitigations()' -> 'get_techniques_mitigated_by_mitigation(mitigation_name="Privileged Account Management")' (假设LLM先找到相关缓解措施)
    • LLM(返回):提供相关的防御措施及其缓解的技术。

您可以查阅项目仓库中的'Beginner-Playbook.md''Playbook.md'获取更多使用示例和高级场景。

信息

分类

开发者工具