Skip to main content
Glama
VRIL-LABS

AlienSec MCP Server

by VRIL-LABS

AlienSec MCP Server

OpenSSF Scorecard

本番環境対応の AlienVault OTX エンドポイントセキュリティスキャン MCP サーバー(VirusTotal 統合付き)

License: MIT Node.js TypeScript MCP

// セキュリティコミュニティのために制作 — 資金提供により維持されています

GitHub Sponsors Open Collective Ko-fi Buy Me a Coffee thanks.dev


概要

AlienSec MCP Server は、AlienVault OTX とオプションの VirusTotal 統合を使用して、包括的なエンドポイントセキュリティスキャン機能を提供する本番グレードの Model Context Protocol (MCP) サーバーです。

このサーバーにより、AI エージェントやアプリケーションは、さまざまなエンドポイントタイプ(macOS PKG、Windows PowerShell、Debian APT、Redhat RPM)に対してセキュリティスキャンを実行し、AlienVault OTX および VirusTotal API から脅威インテリジェンスを取得できます。


Related MCP server: Velociraptor MCP Server

機能

コア機能

  • マルチプラットフォームエンドポイントスキャン

    • PKG インストーラーフレーバーを使用した macOS システムのスキャン

    • PowerShell を使用した Windows エンドポイントのスキャン

    • APT を使用した Debian/Ubuntu システムのスキャン

    • RPM を使用した Redhat/CentOS システムのスキャン

  • VirusTotal 統合

    • VirusTotal API を使用したファイルと URL のスキャン

    • 既存の分析結果の取得

    • 自動レート制限とサーキットブレーカー保護

    • 複数の API キーサポート(VirusTotal ToS を遵守)

  • 脅威インテリジェンス

    • AlienVault OTX パルスの検索

    • パルスの詳細とイベントの取得

    • 侵害インジケーター(IoC)へのアクセス

  • データ永続化

    • オプションの暗号化を備えた SQLite データベース

    • タイムスタンプ付きのスキャン結果の保存

    • API リクエストのログ記録

    • サーキットブレーカーイベントの追跡

  • 本番対応機能

    • 包括的なエラーハンドリング

    • Pino を使用した構造化ロギング

    • Zod を使用した環境変数の検証

    • 型安全な API スキーマ

    • グレースフルシャットダウン処理


前提条件

システム要件

  • Node.js: >= 22.0.0

  • npm: >= 8.0.0

  • オペレーティングシステム: macOS、Linux、または Windows

  • ディスク容量: 依存関係に最低 100MB

必要な API キー

  1. AlienVault OTX API キー(必須)

  2. VirusTotal API キー(オプション、機能拡張用)

    • https://www.virustotal.com でサインアップ

    • API コンソール に移動

    • API キーを生成

    • 注: 無料プランでは 1 日 500 リクエスト、1 分あたり 4 リクエストが可能


インストール

1. リポジトリのクローン

git clone https://github.com/VRIL-LABS/aliensec-mcp-server.git
cd aliensec-mcp-server

2. 依存関係のインストール

npm install

これにより、すべての本番依存関係と開発依存関係がインストールされます。

3. 環境変数の設定

サンプル環境ファイルをコピーし、API キーで更新します:

cp .env.example .env

.env を API キーで編集します:

# Server Configuration
NAME=aliensec-mcp-server
VERSION=1.0.0
DEBUG=false
LOG_LEVEL=info

# AlienVault OTX Configuration (Required)
ALIENVAULT_API_KEY=your_alienvault_api_key_here
ALIENVAULT_BASE_URL=https://api.agent.otxb.io
ALIENVAULT_DEFAULT_REGION=us-east-1

# VirusTotal Configuration (Optional)
VIRUSTOTAL_API_KEYS=key1,key2,key3
VIRUSTOTAL_BASE_URL=https://www.virustotal.com/api/v3
VIRUSTOTAL_RATE_LIMIT_PER_MINUTE=4
VIRUSTOTAL_DAILY_LIMIT=500
VIRUSTOTAL_CIRCUIT_BREAKER_TIMEOUT=300

# Database Configuration
DATABASE_PATH=./data/aliensec.db
DATABASE_ENCRYPTION_KEY=your_encryption_key_here
DATABASE_TIMEOUT=5000

: VirusTotal ToS は、レート制限を回避するための複数 API キーの使用を禁止しています。この実装はこれらの制限を尊重し、冗長性の目的でのみ複数のキーを使用します。

4.(オプション)SQLite 暗号化依存関係のインストール

Linux/macOS での暗号化データベースサポート用:

# Ubuntu/Debian
sudo apt-get install build-essential

# macOS
xcode-select --install

使用方法

開発モード

自動リロード付きでサーバーを開発モードで実行:

npm run dev

本番モード

サーバーをビルドして実行:

npm run build
npm start

MCP クライアントでの使用

サーバーは stdio(標準入出力)を介して通信します。MCP クライアントで使用するには:

# Direct execution
node dist/index.js

# Or using the npm script
npm start

MCP クライアント統合の例

import { Client } from '@modelcontextprotocol/client';
import { StdioClientTransport } from '@modelcontextprotocol/client/stdio';

const client = new Client({ name: 'my-client', version: '1.0.0' });
const transport = new StdioClientTransport({
  command: 'node',
  args: ['dist/index.js'],
});

await client.connect(transport);

// Call a scan tool
const result = await client.callTool({
  name: 'scan_macos_pkg',
  arguments: {
    target: '192.168.1.100',
    useVirusTotal: true,
  },
});

console.log(result.content);

利用可能なツール

スキャンツール(5)

ツール

説明

パラメーター

scan_endpoint

汎用エンドポイントスキャナー

flavortargetuseVirusTotalapiKeyIndex

scan_macos_pkg

macOS PKG インストーラーのスキャン

targetuseVirusTotal

scan_windows

Windows エンドポイントのスキャン

targetuseVirusTotal

scan_debian_apt

Debian/APT エンドポイントのスキャン

targetuseVirusTotal

scan_redhat_rpm

Redhat/RPM エンドポイントのスキャン

targetuseVirusTotal

VirusTotal ツール(2)

ツール

説明

パラメーター

use_virustotal

VirusTotal でリソースをスキャン

resourceapiKeyIndexwait

get_virustotal_analysis

既存の VirusTotal 分析を取得

hashapiKeyIndex

AlienVault OTX ツール(3)

ツール

説明

パラメーター

get_bootstrap_command

フレーバー用のブートストラップコマンドを取得

flavortarget

get_bootstrap_urls

すべてのブートストラップ URL を取得

-

search_pulses

AlienVault OTX パルスを検索

querylimitoffset

データベースツール(4)

ツール

説明

パラメーター

get_scan_stats

スキャン統計を取得

-

get_recent_scans

最近のスキャンを取得

limit

get_circuit_breaker_stats

サーキットブレーカー統計を取得

-

get_api_stats

API 統計を取得

-

システムツール(1)

ツール

説明

パラメーター

get_health

サーバーのヘルスステータスを取得

-


ブートストラップコマンド

サーバーは、各エンドポイントフレーバー用に事前設定されたブートストラップコマンドを提供します。以下の <api-key> は解決済みの ALIENVAULT_API_KEY 値であり、TARGET=<target>target が指定された場合にのみ含まれます。

macOS PKG インストーラー

API_KEY=<api-key> [TARGET=<target>] bash -c "$(curl -s https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=pkg)"

Windows PowerShell

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; API_KEY=<api-key> (new-object Net.WebClient).DownloadString("https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=powershell") | iex; install_agent -apikey <api-key> [-target <target>]

Debian APT

API_KEY=<api-key> [TARGET=<target>] bash -c "$(curl -s https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=apt)"

Redhat RPM

API_KEY=<api-key> [TARGET=<target>] bash -c "$(curl -s https://api.agent.otxb.io/osquery-api-otx/bootstrap?flavor=rpm)"

プロジェクト構造

aliensec-mcp-server/
├── src/
│   ├── config/
│   │   └── index.ts           # Environment configuration & validation
│   ├── core/
│   │   ├── alienVault.ts      # AlienVault OTX API client
│   │   └── virusTotal.ts      # VirusTotal API client
│   ├── database/
│   │   └── index.ts           # SQLite database with repositories
│   ├── types/
│   │   └── index.ts           # TypeScript type definitions
│   └── index.ts               # Main MCP server entry point
├── package.json
├── tsconfig.json
├── .env.example
├── .gitignore
├── eslint.config.js
├── .prettierrc
└── README.md

アーキテクチャ

レイヤード設計

┌─────────────────────────────────────┐
│           MCP Server Layer           │  ← src/index.ts
├─────────────────────────────────────┤
│         Core Service Layer           │  ← src/core/
├─────────────────────────────────────┤
│         Data Access Layer            │  ← src/database/
├─────────────────────────────────────┤
│        Configuration Layer           │  ← src/config/
├─────────────────────────────────────┤
│           Type Definitions           │  ← src/types/
└─────────────────────────────────────┘

主要な設計パターン

  1. シングルトンパターン: データベース、AlienVault クライアント、VirusTotal クライアント

  2. リポジトリパターン: ScanRepository、CircuitBreakerRepository、APILogRepository

  3. サーキットブレーカーパターン: 障害発生時の自動 API キーローテーション

  4. トークンバケットレートリミッター: VirusTotal API のレート制限

  5. ファクトリーパターン: 依存性注入による MCP サーバー作成

  6. ストラテジーパターン: 共通インターフェースを持つさまざまなスキャンフレーバー


データベーススキーマ

サーバーは SQLite を使用し、以下のテーブルを持ちます:

scan_records

検出結果、VirusTotal データ、タイムスタンプを含むすべてのスキャン結果を保存します。

circuit_breaker_events

API キーのサーキットブレーカー状態変更を追跡します。

api_logs

応答時間、ステータスコード、エラーを含むすべての API リクエストをログ記録します。

schema_version

マイグレーション用のデータベーススキーマバージョンを追跡します。


エラーハンドリング

カスタムエラークラス

  • AlienSecError: コードと statusCode を持つ基本エラークラス

  • AlienVaultAPIError: AlienVault 固有のエラー

  • VirusTotalAPIError: レート制限検出付きの VirusTotal 固有のエラー

  • DatabaseError: データベース関連のエラー

  • ConfigurationError: 設定検証エラー

エラー応答形式

ツールエラーは、isError: true を持つ標準の MCP 結果形状を返します。人間が読めるメッセージは最初のコンテンツブロックであり、error は失敗を引き起こしたコンテキストデータ(スキャン ID、フレーバー、ターゲットなど)の JSON 文字列化されたものを保持します:

{
  "content": [
    { "type": "text", "text": "Scan failed: <error message>" }
  ],
  "isError": true,
  "error": "{\n  \"scanId\": \"...\",\n  \"flavor\": \"pkg\",\n  \"target\": \"...\",\n  \"error\": \"<error message>\"\n}"
}

ロギング

サーバーは構造化ロギングに Pino を使用し、以下のレベルがあります:

  • error: 重大な障害

  • warn: 警告と潜在的な問題

  • info: 通常の操作とステータス更新

  • debug: 詳細なデバッグ情報

  • trace: 開発用の非常に詳細なロギング

ログは機密データ(API キー)が記録されないように自動的に編集されます。


レート制限とサーキットブレーカー

VirusTotal レート制限

  • トークンバケットアルゴリズム: スムーズなレート制限

  • 設定可能な制限: 環境変数で設定

  • 自動待機: レート制限時の待機オプション

  • サーキットブレーカー: 繰り返し失敗する API キーを自動的にブロック

サーキットブレーカー設定

  • 失敗しきい値: 連続 5 回の失敗

  • リセットタイムアウト: 300 秒(5 分)

  • ハーフオープン状態: 完全に再開する前に 1 リクエストでテスト

ToS コンプライアンス

この実装は VirusTotal の利用規約を尊重 します:

  • 複数の API キーは 冗長性 のためであり、制限の回避のためではありません

  • 各 API キーは個別のレート制限を尊重します

  • サーキットブレーカーは失敗時の迅速な再試行を防止します

  • 1 日のリクエストカウントによりクォータの枯渇を防止します


開発

テストの実行

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Run with coverage
npx vitest run --coverage

リンティングとフォーマット

# Run linting
npm run lint

# Auto-fix linting issues
npm run lint:fix

# Format code
npm run format

型チェック

npm run typecheck

ビルド検証

# Clean build
npm run clean
npm run build

# Check build output
ls -la dist/

環境変数

変数

必須

デフォルト

説明

ALIENVAULT_API_KEY

はい

-

AlienVault OTX APIキー

ALIENVAULT_BASE_URL

いいえ

https://api.agent.otxb.io

AlienVault APIベースURL

ALIENVAULT_DEFAULT_REGION

いいえ

us-east-1

エージェントのデフォルトリージョン

VIRUSTOTAL_API_KEYS

いいえ

``

カンマ区切りのVirusTotal APIキー

VIRUSTOTAL_BASE_URL

いいえ

https://www.virustotal.com/api/v3

VirusTotal APIベースURL

VIRUSTOTAL_RATE_LIMIT_PER_MINUTE

いいえ

4

1分あたりのレート制限

VIRUSTOTAL_DAILY_LIMIT

いいえ

500

1日のリクエスト上限

VIRUSTOTAL_CIRCUIT_BREAKER_TIMEOUT

いいえ

300

サーキットブレーカーのタイムアウト(秒)

DATABASE_PATH

いいえ

./data/aliensec.db

SQLiteデータベースのパス

DATABASE_ENCRYPTION_KEY

いいえ

-

データベース暗号化キー

DATABASE_TIMEOUT

いいえ

5000

データベース接続タイムアウト

NAME

いいえ

aliensec-mcp-server

サーバー名

VERSION

いいえ

1.0.0

サーバーバージョン

DEBUG

いいえ

false

デバッグモードを有効にする

LOG_LEVEL

いいえ

info

ログレベル(error、warn、info、debug、trace)


セキュリティに関する考慮事項

データ保護

  1. データベース暗号化: 保存時の機密データの暗号化にはDATABASE_ENCRYPTION_KEYを使用します

  2. APIキーのセキュリティ: APIキーがログに記録されることはありません。環境変数または安全なボールトを使用してください

  3. メモリの安全性: 機密文字列は、サーキットブレーカーおよびAPIログテーブルに保存する前にPBKDF2(120,000回の反復)でハッシュ化されます

ネットワークセキュリティ

  1. HTTPSのみ: すべてのAPI通信はHTTPSを使用します

  2. 証明書の検証: TLS証明書の検証はデフォルトで有効です

  3. ユーザーエージェント: カスタムユーザーエージェントがサーバーバージョンを識別します

レート制限

  1. クライアント側レート制限: 外部APIへの過剰なリクエストを防ぎます

  2. サーキットブレーカー: 連鎖的な障害を防ぎます

  3. バックプレッシャー: レート制限時に自動的に待機します


パフォーマンス

最適化

  • コネクションプーリング: データベース接続が再利用されます

  • 遅延ロード: リポジトリはオンデマンドで作成されます

  • インデックス付きクエリ: データベーステーブルには適切なインデックスがあります

  • キャッシング: APIキーのハッシュはサーキットブレーカーチェック用にキャッシュされます

  • Async/Await: ノンブロッキングI/O操作

ベンチマーク

  • スキャンリクエスト: ~100〜500ms(シミュレーション)

  • VirusTotalリクエスト: ~200〜1000ms(ネットワーク依存)

  • データベース操作: <10ms(ローカルSQLite)


トラブルシューティング

一般的な問題

データベース接続に失敗しました

Error: Failed to connect to database

解決策: データディレクトリが存在し、書き込み権限があることを確認してください:

mkdir -p data
chmod 755 data

ALIENVAULT_API_KEYが見つかりません

Missing required environment variables:
  - ALIENVAULT_API_KEY

解決策: 環境変数を設定してください:

export ALIENVAULT_API_KEY=your_api_key_here
# or add to .env file

VirusTotalのレート制限を超えました

Error: Rate limit exceeded for API key 0

解決策:

  • レート制限がリセットされるまで待機します(デフォルト: 4リクエスト/分)

  • APIキーを追加します(VIRUSTOTAL_API_KEYSにカンマ区切りで指定)

  • wait: trueパラメータを使用して自動待機します

サーキットブレーカーが開いています

Error: API key 0 is blocked by circuit breaker

解決策: サーキットブレーカーのタイムアウトが期限切れになるまで待機します(デフォルト: 5分)。タイムアウト後、サーキットは自動的に再開します。

デバッグモード

詳細なトラブルシューティングのためにデバッグログを有効にします:

DEBUG=true LOG_LEVEL=debug npm run dev

コントリビューション

プルリクエスト

  1. リポジトリをフォークします

  2. フィーチャーブランチを作成します(git checkout -b feature/amazing-feature

  3. 変更をコミットします(git commit -m 'Add amazing feature'

  4. ブランチにプッシュします(git push origin feature/amazing-feature

  5. プルリクエストを開きます

コミットメッセージのガイドライン

  • Conventional Commits形式を使用します

  • タイプをプレフィックスとして付けます: feat:fix:docs:style:refactor:test:chore:

  • 件名は72文字未満に保ちます

  • 必要に応じて本文に詳細な説明を記載します

コードレビュー

  • すべてのPRは少なくとも1人のメンテナーによる承認が必要です

  • CI/CDパイプラインが成功する必要があります(lint、型チェック、テスト)

  • コードは既存のパターンとスタイルに従う必要があります


ライセンス

このプロジェクトはMITライセンスの下でライセンスされています。詳細はLICENSEファイルを参照してください。


謝辞


参考


セキュリティコミュニティのために❤️を込めて作られました

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
1dRelease cycle
4Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides AI agents with 37 OSINT tools and 12 data sources to perform unified reconnaissance, domain analysis, and attack surface mapping. It enables agents to query, correlate, and reason across platforms like Shodan, VirusTotal, and Censys in parallel.
    37
    681
    44
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interface with Velociraptor for digital forensics and incident response tasks, including file/memory scans, remediation actions, and artifact collection across multiple operating systems.
    1
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to scan code for security vulnerabilities using multiple static analysis tools, with support for filtering, deduplication, and CI/CD integration.
    27
    2
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/VRIL-LABS/aliensec-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server