MCP Connector

Integrate OpenCTI Threat Intelligence

MCP server for querying OpenCTI threat intelligence: reports, malware, indicators, threat actors, and STIX objects.

Works with opencti

84
Spark score
out of 100
Updated 2 months ago
Source checked Sep 24, 2026
Version 1.0.0
Models
universal

Add to Favorites

Why it matters

Seamlessly integrate with OpenCTI to query and retrieve cyber threat intelligence data. Access reports, malware information, indicators of compromise, and threat actors through a standardized interface.

Outcomes

What it gets done

01

Fetch and search threat intelligence reports.

02

Query malware, indicators of compromise, and threat actors.

03

Retrieve user and group information.

04

Access STIX objects and attack patterns.

Source

Get it from source

Spark does not host a copy of it.

Open source

Reports

Agent outcome reports

No reports yet

Capabilities

Tools your agent gets

get_latest_reports

Fetches the most recent threat intelligence reports

get_report_by_id

Retrieves a specific report by its ID

search_malware

Search for malware information in the OpenCTI database

search_indicators

Search for indicators of compromise

search_threat_actors

Search for information about threat actors

get_user_by_id

Retrieves user information by ID

list_users

Lists all users in the system

list_groups

Lists all groups and their members

+7 tools

Overview

OpenCTI MCP Server

OpenCTI MCP Server bridges Claude to an OpenCTI threat intelligence platform, exposing reports, malware search, indicators of compromise, threat actors, and STIX objects like attack patterns and campaigns as MCP tools backed by OpenCTI's GraphQL API. Use it when you already run an OpenCTI instance and want Claude to search or summarize threat intelligence data conversationally. It needs an OpenCTI URL and API token and is not a substitute for deploying OpenCTI itself.

What it does

OpenCTI MCP Server is a Model Context Protocol server that connects Claude to an OpenCTI (Open Cyber Threat Intelligence) platform instance, letting an assistant query and retrieve threat intelligence data - reports, malware, indicators of compromise, threat actors, and STIX objects - through a standardized interface instead of the OpenCTI web UI or raw GraphQL.

When to use - and when NOT to

Use it when you run or have access to an OpenCTI instance and want Claude to pull the latest threat reports, search for malware or indicators of compromise by keyword, look up threat actors or attack patterns by name, or check campaign, connector, file, and label information directly from a conversation. It requires an existing OpenCTI deployment and a valid API token - it does not include or stand up OpenCTI itself, and search and list calls are capped by a first parameter (optional, defaults to 10 results), so it is not meant for bulk data export.

Capabilities

  • Reports: get_latest_reports (takes an optional first, default 10) and get_report_by_id (requires a report id).
  • Search: search_malware, search_indicators (indicators of compromise), and search_threat_actors - each takes a free-text query plus an optional first.
  • User and group management: list_users, get_user_by_id (requires a user id), and list_groups with member listings.
  • STIX objects: list_attack_patterns and get_campaign_by_name (requires a campaign name).
  • System management: list_connectors and list_status_templates.
  • File operations: list_files and get_file_by_id (requires a file id).
  • Reference data: list_marking_definitions and list_labels.
  • Full GraphQL query support underneath, with customizable query limits on list/search tools.

How to install

npx -y @smithery/cli install opencti-server --client claude

That installs the server for Claude Desktop automatically via Smithery. For a manual install: clone the repository, run npm install, then npm run build (requires Node.js 16 or higher). Either way you need access to an OpenCTI instance and an OpenCTI API token: copy .env.example to .env and set OPENCTI_URL and OPENCTI_TOKEN, then point Claude's MCP settings at the built build/index.js entry point, passing OPENCTI_URL and OPENCTI_TOKEN through as environment variables. The .env file is gitignored by default; the documented guidance is to never commit it or the OpenCTI API token to version control and to keep the credentials secure.

It is released under the MIT license.

Who it's for

Threat intelligence analysts and security teams already running OpenCTI as their CTI platform, who want Claude to pull reports, hunt malware and indicators, or trace campaigns and attack patterns by name, instead of writing GraphQL queries against the OpenCTI API by hand.

Source README

OpenCTI MCP Server

smithery badge
Traditional Chinese (繁體中文)

OpenCTI Server MCP server

Overview

OpenCTI MCP Server is a Model Context Protocol (MCP) server that provides seamless integration with OpenCTI (Open Cyber Threat Intelligence) platform. It enables querying and retrieving threat intelligence data through a standardized interface.

Features

  • Fetch and search threat intelligence data
    • Get latest reports and search by ID
    • Search for malware information
    • Query indicators of compromise
    • Search for threat actors
  • User and group management
    • List all users and groups
    • Get user details by ID
  • STIX object operations
    • List attack patterns
    • Get campaign information by name
  • System management
    • List connectors
    • View status templates
  • File operations
    • List all files
    • Get file details by ID
  • Reference data access
    • List marking definitions
    • View available labels
  • Customizable query limits
  • Full GraphQL query support

Prerequisites

  • Node.js 16 or higher
  • Access to an OpenCTI instance
  • OpenCTI API token

Installation

Installing via Smithery

To install OpenCTI Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install opencti-server --client claude

Manual Installation

# Clone the repository
git clone https://github.com/yourusername/opencti-mcp-server.git

# Install dependencies
cd opencti-mcp-server
npm install

# Build the project
npm run build

Configuration

Environment Variables

Copy .env.example to .env and update with your OpenCTI credentials:

cp .env.example .env

Required environment variables:

  • OPENCTI_URL: Your OpenCTI instance URL
  • OPENCTI_TOKEN: Your OpenCTI API token

MCP Settings

Create a configuration file in your MCP settings location:

{
  "mcpServers": {
    "opencti": {
      "command": "node",
      "args": ["path/to/opencti-server/build/index.js"],
      "env": {
        "OPENCTI_URL": "${OPENCTI_URL}",  // Will be loaded from .env
        "OPENCTI_TOKEN": "${OPENCTI_TOKEN}"  // Will be loaded from .env
      }
    }
  }
}

Security Notes

  • Never commit .env file or API tokens to version control
  • Keep your OpenCTI credentials secure
  • The .gitignore file is configured to exclude sensitive files

Available Tools

Available Tools

Reports

get_latest_reports

Retrieves the most recent threat intelligence reports.

{
  "name": "get_latest_reports",
  "arguments": {
    "first": 10  // Optional, defaults to 10
  }
}
get_report_by_id

Retrieves a specific report by its ID.

{
  "name": "get_report_by_id",
  "arguments": {
    "id": "report-uuid"  // Required
  }
}

Search Operations

search_malware

Searches for malware information in the OpenCTI database.

{
  "name": "search_malware",
  "arguments": {
    "query": "ransomware",
    "first": 10  // Optional, defaults to 10
  }
}
search_indicators

Searches for indicators of compromise.

{
  "name": "search_indicators",
  "arguments": {
    "query": "domain",
    "first": 10  // Optional, defaults to 10
  }
}
search_threat_actors

Searches for threat actor information.

{
  "name": "search_threat_actors",
  "arguments": {
    "query": "APT",
    "first": 10  // Optional, defaults to 10
  }
}

User Management

get_user_by_id

Retrieves user information by ID.

{
  "name": "get_user_by_id",
  "arguments": {
    "id": "user-uuid"  // Required
  }
}
list_users

Lists all users in the system.

{
  "name": "list_users",
  "arguments": {}
}
list_groups

Lists all groups with their members.

{
  "name": "list_groups",
  "arguments": {
    "first": 10  // Optional, defaults to 10
  }
}

STIX Objects

list_attack_patterns

Lists all attack patterns in the system.

{
  "name": "list_attack_patterns",
  "arguments": {
    "first": 10  // Optional, defaults to 10
  }
}
get_campaign_by_name

Retrieves campaign information by name.

{
  "name": "get_campaign_by_name",
  "arguments": {
    "name": "campaign-name"  // Required
  }
}

System Management

list_connectors

Lists all system connectors.

{
  "name": "list_connectors",
  "arguments": {}
}
list_status_templates

Lists all status templates.

{
  "name": "list_status_templates",
  "arguments": {}
}

File Operations

get_file_by_id

Retrieves file information by ID.

{
  "name": "get_file_by_id",
  "arguments": {
    "id": "file-uuid"  // Required
  }
}
list_files

Lists all files in the system.

{
  "name": "list_files",
  "arguments": {}
}

Reference Data

list_marking_definitions

Lists all marking definitions.

{
  "name": "list_marking_definitions",
  "arguments": {}
}
list_labels

Lists all available labels.

{
  "name": "list_labels",
  "arguments": {}
}

FAQ

Common questions

Discussion

Questions & comments · 0

Sign In Sign in to leave a comment.