by Spathodea-Network
OpenCTI MCP Server is a Model Context Protocol (MCP) server that provides seamless integration with the OpenCTI (Open Cyber Threat Intelligence) platform, enabling querying and retrieving threat intelligence data through a standardized interface.
OpenCTI MCP Server is a Model Context Protocol (MCP) server designed to integrate with the OpenCTI (Open Cyber Threat Intelligence) platform. It provides a standardized interface for querying and retrieving threat intelligence data, making it easier to access and utilize this critical information.
To use OpenCTI MCP Server, you need Node.js 16 or higher, access to an OpenCTI instance, and an OpenCTI API token. You can install it via Smithery using npx -y @smithery/cli install opencti-server --client claude
or manually by cloning the repository, installing dependencies (npm install
), and building the project (npm run build
). Configuration involves setting OPENCTI_URL
and OPENCTI_TOKEN
environment variables in a .env
file and configuring MCP settings in a JSON file.
Q: What are the prerequisites for running OpenCTI MCP Server? A: You need Node.js 16 or higher, access to an OpenCTI instance, and an OpenCTI API token.
Q: How do I install OpenCTI MCP Server?
A: You can install it automatically via Smithery or manually by cloning the repository and running npm install
and npm run build
.
Q: How do I configure OpenCTI MCP Server?
A: You need to set OPENCTI_URL
and OPENCTI_TOKEN
in a .env
file and configure the MCP settings in a JSON file.
Q: Is it secure to use OpenCTI MCP Server?
A: Yes, but it is crucial to never commit your .env
file or API tokens to version control and to keep your OpenCTI credentials secure.
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.
To install OpenCTI Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install opencti-server --client claude
# 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
Copy .env.example
to .env
and update with your OpenCTI credentials:
cp .env.example .env
Required environment variables:
OPENCTI_URL
: Your OpenCTI instance URLOPENCTI_TOKEN
: Your OpenCTI API tokenCreate 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
}
}
}
}
.env
file or API tokens to version control.gitignore
file is configured to exclude sensitive filesRetrieves the most recent threat intelligence reports.
{
"name": "get_latest_reports",
"arguments": {
"first": 10 // Optional, defaults to 10
}
}
Retrieves a specific report by its ID.
{
"name": "get_report_by_id",
"arguments": {
"id": "report-uuid" // Required
}
}
Searches for malware information in the OpenCTI database.
{
"name": "search_malware",
"arguments": {
"query": "ransomware",
"first": 10 // Optional, defaults to 10
}
}
Searches for indicators of compromise.
{
"name": "search_indicators",
"arguments": {
"query": "domain",
"first": 10 // Optional, defaults to 10
}
}
Searches for threat actor information.
{
"name": "search_threat_actors",
"arguments": {
"query": "APT",
"first": 10 // Optional, defaults to 10
}
}
Retrieves user information by ID.
{
"name": "get_user_by_id",
"arguments": {
"id": "user-uuid" // Required
}
}
Lists all users in the system.
{
"name": "list_users",
"arguments": {}
}
Lists all groups with their members.
{
"name": "list_groups",
"arguments": {
"first": 10 // Optional, defaults to 10
}
}
Lists all attack patterns in the system.
{
"name": "list_attack_patterns",
"arguments": {
"first": 10 // Optional, defaults to 10
}
}
Retrieves campaign information by name.
{
"name": "get_campaign_by_name",
"arguments": {
"name": "campaign-name" // Required
}
}
Lists all system connectors.
{
"name": "list_connectors",
"arguments": {}
}
Lists all status templates.
{
"name": "list_status_templates",
"arguments": {}
}
Retrieves file information by ID.
{
"name": "get_file_by_id",
"arguments": {
"id": "file-uuid" // Required
}
}
Lists all files in the system.
{
"name": "list_files",
"arguments": {}
}
Lists all marking definitions.
{
"name": "list_marking_definitions",
"arguments": {}
}
Lists all available labels.
{
"name": "list_labels",
"arguments": {}
}
Contributions are welcome! Please feel free to submit pull requests.
MIT License
Reviews feature coming soon
Stay tuned for community discussions and feedback