OpenCTI MCP Server 使用说明
项目简介
OpenCTI MCP Server 是一个 MCP (Model Context Protocol) 服务器,旨在为大型语言模型 (LLM) 提供访问 OpenCTI (开放网络威胁情报平台) 的能力。通过此服务器,LLM 可以利用预定义的工具,以标准化的方式查询和检索 OpenCTI 平台上的威胁情报信息,例如最新的威胁报告、恶意软件信息、威胁行动者等。
主要功能点
- 威胁情报数据查询: 提供多种工具,支持查询最新的威胁情报报告,根据ID检索特定报告,以及搜索恶意软件、威胁行动者和入侵指标 (IOCs) 等信息。
- 用户和群组管理: 允许列出和检索 OpenCTI 中的用户和群组信息。
- STIX 对象操作: 支持列出攻击模式,并根据名称获取活动 (Campaign) 信息。
- 系统管理信息: 可以获取 OpenCTI 连接器和状态模板列表。
- 文件操作: 支持列出和根据ID获取 OpenCTI 中存储的文件信息。
- 参考数据访问: 提供访问标记定义和可用标签的功能。
总而言之,该服务器将 OpenCTI 的强大威胁情报数据以 MCP 标准化的工具形式暴露给 LLM,使得 LLM 能够方便地利用这些信息进行安全分析、决策支持等任务。
安装步骤
前提条件:
- Node.js 16 或更高版本
- 可以访问运行中的 OpenCTI 实例
- OpenCTI API 令牌 (Token)
安装步骤:
-
克隆仓库:
git clone https://github.com/Spathodea-Network/opencti-mcp.git cd opencti-mcp -
安装依赖:
npm install -
构建项目:
npm run build -
配置环境变量: 复制 '.env.example' 文件并重命名为 '.env',然后根据你的 OpenCTI 环境修改以下变量:
cp .env.example .env编辑 '.env' 文件,填入你的 OpenCTI URL 和 API Token:
OPENCTI_URL=你的_OpenCTI_实例_URL # 例如: http://localhost:8080 OPENCTI_TOKEN=你的_OpenCTI_API_令牌请务必妥善保管你的 OpenCTI API 令牌,不要将其泄露或提交到版本控制系统。
服务器配置
MCP 客户端需要配置 MCP 服务器的启动命令和参数,才能连接到 OpenCTI MCP Server。以下是典型的 MCP 服务器配置信息(JSON 格式):
{ "mcpServers": { "opencti": { "command": "node", "args": ["/path/to/opencti-mcp/build/index.js"], "env": { "OPENCTI_URL": "${OPENCTI_URL}", // 从 .env 文件加载 OpenCTI URL "OPENCTI_TOKEN": "${OPENCTI_TOKEN}" // 从 .env 文件加载 OpenCTI API 令牌 } } } }
配置参数说明:
- '"opencti"': 服务器名称,可以自定义,用于在 MCP 客户端中标识该服务器。
- '"command": "node"': 启动服务器的命令,这里使用 Node.js 运行时环境。
- '"args": ["/path/to/opencti-mcp/build/index.js"]': 命令参数,指向构建后的 'index.js' 文件路径。请将 '/path/to/opencti-mcp' 替换为你实际的 'opencti-mcp' 项目的绝对路径。 例如,如果你的项目放在用户根目录下的 'projects' 文件夹中,则路径可能类似于 '/Users/你的用户名/projects/opencti-mcp/build/index.js'。
- '"env"': 环境变量配置。
- '"OPENCTI_URL": "${OPENCTI_URL}"': 指定 OpenCTI 实例的 URL,'${OPENCTI_URL}' 表示引用在 '.env' 文件中配置的 'OPENCTI_URL' 环境变量。
- '"OPENCTI_TOKEN": "${OPENCTI_TOKEN}"': 指定 OpenCTI API 令牌,'${OPENCTI_TOKEN}' 表示引用在 '.env' 文件中配置的 'OPENCTI_TOKEN' 环境变量。
重要提示: MCP 客户端(例如支持 MCP 协议的 LLM 应用)会读取上述 JSON 配置信息,并根据 '"command"' 和 '"args"' 启动 OpenCTI MCP Server 进程。环境变量 '"OPENCTI_URL"' 和 '"OPENCTI_TOKEN"' 将在服务器启动时自动加载,用于服务器连接到你的 OpenCTI 实例。
基本使用方法
配置完成后,当 MCP 客户端连接到 OpenCTI MCP Server 时,客户端可以调用服务器提供的工具来查询 OpenCTI 数据。
工具调用示例 (JSON 格式):
以下是一些工具调用的示例,客户端需要发送类似以下的 JSON-RPC 请求来调用相应的工具。请参考仓库 'README.md' 文件中 "Available Tools" 章节获取完整的工具列表和参数说明。
1. 获取最新的威胁情报报告:
{ "name": "get_latest_reports", "arguments": { "first": 5 // 可选参数,指定返回报告的数量,默认为 10 } }
2. 搜索恶意软件信息:
{ "name": "search_malware", "arguments": { "query": "勒索软件", // 搜索关键词 "first": 10 // 可选参数,指定返回结果数量,默认为 10 } }
3. 获取用户信息 (根据 ID):
{ "name": "get_user_by_id", "arguments": { "id": "user-uuid" // 替换为实际的用户 UUID } }
客户端接收到服务器的响应后,会解析 JSON 格式的 'content' 字段,其中包含了工具执行的结果数据。 例如,调用 'get_latest_reports' 工具后,响应的 'content' 字段会是一个 JSON 数组,包含最新的威胁情报报告列表。
请根据你的 LLM 客户端的具体使用方式,配置 MCP 服务器并调用相应的工具来利用 OpenCTI 提供的威胁情报数据。
信息
分类
商业系统