Skip to main content
Glama
df4u1t

Security Intelligence MCP Server

by df4u1t
README.md
# Security Intelligence MCP Server

A Model Context Protocol (MCP) server that provides a unified interface for security analysts to gather threat intelligence from VirusTotal, Shodan, NVD, AnyRun, AlienVault OTX, and GitHub.

## Features

This server implements a set of tools that allow an LLM to perform the following operations:

### VirusTotal
- `vt_file_report`: Retrieve analysis reports for file hashes (MD5, SHA1, SHA256).
- `vt_url_report`: Retrieve analysis reports for URLs.
- `vt_domain_report`: Retrieve analysis reports for domains.
- `vt_ip_report`: Retrieve analysis reports for IP addresses.

### Shodan
- `shodan_host_info`: Get detailed host information for a specific IP.
- `shodan_search`: Search for hosts matching a specific query.

### NVD (National Vulnerability Database)
- `nvd_cve_details`: Get detailed information for a specific CVE ID.
- `nvd_search`: Search for CVEs using keywords with optional date range filtering (`daysBack`, `pubStartDate`/`pubEndDate`, `lastModStartDate`/`lastModEndDate`), pagination (`resultsPerPage`, `startIndex`).

### AnyRun
- `anyrun_task_details`: Get details for a specific sandbox task.
- `anyrun_search`: Search for tasks matching a query.
- `anyrun_submit_url`: Submit a URL for analysis.
- `anyrun_submit_file`: Submit a local file for analysis.
- `anyrun_get_report`: Retrieve the final analysis report.

### AlienVault OTX
- `otx_indicator_details`: Get detailed information for an indicator. Returns all available sections (reputation, geo, malware, url_list, passive_dns, analysis) or a specific section if requested. Supports types: IPv4, IPv6, domain, hostname, file, url.
- `otx_indicator_pulses`: Find all OTX Pulses associated with an indicator.
- `otx_pulse_details`: Get full details of a specific threat pulse.
- `otx_search_pulses`: Search for pulses by keyword.
- `otx_subscribed_pulses`: Get your subscribed pulse feed (paginated).
- `otx_recent_activity`: Get recent OTX community activity (paginated).

### GitHub
- `github_search_advisories`: Search GitHub for security advisories and vulnerability discussions.
- `github_search_poc`: Search GitHub for exploit PoC code related to a CVE or vulnerability.

### Sigma Rule Generator
- `generate_sigma_rules`: Generate Sigma detection rules (YAML) from threat indicators. Accepts enriched indicators (IPs, domains, URLs, file hashes, CVEs) with optional descriptions, references, and tags. Supports `single` mode (all indicators in one rule) or `separate` mode (one rule per indicator). Configurable severity level, status, and author.

## Quick Start Guide

### Prerequisites
- [Node.js](https://nodejs.org/) (v18 or higher)
- API Keys for the following services:
  - VirusTotal
  - Shodan
  - NVD
  - AnyRun
  - AlienVault OTX
  - GitHub

### Installation

1. Clone the repository or navigate to the project folder:
   ```bash
   cd kb-mcp
   ```

2. Install dependencies:
   ```bash
   npm install
   ```

3. Configure environment variables:
   Create a `.env` file in the root directory and add your API keys:
   ```env
   VIRUSTOTAL_API_KEY=your_vt_key_here
   SHODAN_API_KEY=your_shodan_key_here
   NVD_API_KEY=your_nvd_key_here
   ANYRUN_API_KEY=your_anyrun_key_here
   ALIENVAULT_OTX_API_KEY=your_otx_key_here
   GITHUB_TOKEN=your_github_token_here
   ```

4. Build the project:
   ```bash
   npm run build
   ```

### Running the Server

You can start the server in stdio mode:
```bash
npm start
```

### Integration with MCP Clients (e.g., Claude Desktop)

Add the following configuration to your MCP settings file:

```json
{
  "mcpServers": {
    "security-intelligence": {
      "command": "node",
      "args": ["FULL_PATH_TO/kb-mcp/dist/index.js"],
      "env": {
        "VIRUSTOTAL_API_KEY": "your_vt_key",
        "SHODAN_API_KEY": "your_shodan_key",
        "NVD_API_KEY": "your_nvd_key",
        "ANYRUN_API_KEY": "your_anyrun_key",
        "ALIENVAULT_OTX_API_KEY": "your_otx_key",
        "GITHUB_TOKEN": "your_github_token"
      }
    }
  }
}
```

Alternatively, if your client uses YAML configuration:

```yaml
mcpServers:
  security-intelligence:
    command: "node"
    args:
      - "FULL_PATH_TO/kb-mcp/dist/index.js"
    env:
      VIRUSTOTAL_API_KEY: "your_vt_key"
      SHODAN_API_KEY: "your_shodan_key"
      NVD_API_KEY: "your_nvd_key"
      ANYRUN_API_KEY: "your_anyrun_key"
      ALIENVAULT_OTX_API_KEY: "your_otx_key"
      GITHUB_TOKEN: "your_github_token"
```

## Architecture

The server uses a provider-based architecture where each security service is encapsulated in its own provider class. This ensures that API-specific logic (authentication, rate limiting, and data formatting) is isolated from the MCP tool definitions.

- `src/index.ts`: Main server entry point and tool routing.
- `src/providers/`: Individual API clients for each service.
- `src/config.ts`: Environment variable management.
- `src/types/`: Shared TypeScript interfaces.