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)

安装步骤:

  1. 克隆仓库:

    git clone https://github.com/Spathodea-Network/opencti-mcp.git
    cd opencti-mcp
  2. 安装依赖:

    npm install
  3. 构建项目:

    npm run build
  4. 配置环境变量: 复制 '.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 提供的威胁情报数据。

信息

分类

商业系统