项目简介
'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':获取特定防御措施所缓解的技术。
安装步骤
-
创建并激活Python虚拟环境:
python3 -m venv .venv source .venv/bin/activate # 在Windows上使用: .venv\Scripts\activate.bat -
从PyPI安装:
pip install mitre-mcp -
验证安装:
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'获取更多使用示例和高级场景。
信息
分类
开发者工具