stellar-cyber-mcp-agents
Version:
Model Context Protocol (MCP) server for Stellar Cyber security operations with specialized multi-agent analysis capabilities
152 lines • 4.5 kB
TypeScript
import { BaseAgent } from '../core/base-agent.js';
import { AgentId, AgentMetadata, AgentRegistry, AgentCommunicationChannel, AgentLogger, AgentMetrics, AgentRequest, AgentContext, AgentHealth } from '../types/agent.js';
export interface CampaignDetectionRequest {
caseId?: string;
timeRange: {
start: string;
end: string;
};
indicators?: {
ips?: string[];
domains?: string[];
hashes?: string[];
emails?: string[];
};
options?: {
minCaseThreshold?: number;
confidenceThreshold?: number;
includeHistorical?: boolean;
correlationDepth?: 'shallow' | 'medium' | 'deep';
};
}
export interface CampaignIndicator {
type: 'ip' | 'domain' | 'hash' | 'email' | 'user_agent' | 'ttps' | 'infrastructure';
value: string;
frequency: number;
firstSeen: string;
lastSeen: string;
confidence: number;
cases: string[];
tags: string[];
sources: string[];
}
export interface CampaignTTP {
id: string;
name: string;
description: string;
mitre: {
tactic: string;
technique: string;
subtechnique?: string;
};
frequency: number;
cases: string[];
confidence: number;
evidence: string[];
}
export interface CampaignCluster {
id: string;
name: string;
description: string;
confidence: number;
cases: Array<{
caseId: string;
similarity: number;
sharedIndicators: number;
timeline: string;
}>;
indicators: CampaignIndicator[];
ttps: CampaignTTP[];
timeline: Array<{
timestamp: string;
event: string;
caseId: string;
details: string;
}>;
attribution?: {
actor?: string;
group?: string;
confidence: number;
evidence: string[];
};
infrastructure: {
domains: Array<{
domain: string;
role: string;
firstSeen: string;
}>;
ips: Array<{
ip: string;
role: string;
firstSeen: string;
}>;
registrationPatterns: string[];
};
}
export interface CampaignDetectionResult {
analysisId: string;
timestamp: string;
summary: {
totalCases: number;
clustersFound: number;
highConfidenceClusters: number;
uniqueIndicators: number;
timespan: string;
status: 'COMPLETED' | 'FAILED' | 'PARTIAL';
};
clusters: CampaignCluster[];
globalIndicators: Array<{
indicator: CampaignIndicator;
prevalence: number;
riskScore: number;
}>;
recommendations: Array<{
id: string;
priority: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
category: string;
description: string;
rationale: string;
actions: string[];
clusterId?: string;
}>;
metadata: {
analysisTime: string;
casesAnalyzed: number;
correlationMethod: string;
algorithmVersion: string;
};
}
export declare class CampaignDetectionAgent extends BaseAgent {
protected readonly agentId: AgentId;
private accessToken;
private tokenExpiresAt;
private readonly config;
constructor(metadata: AgentMetadata, registry: AgentRegistry, channel: AgentCommunicationChannel, logger: AgentLogger, metrics: AgentMetrics, config: any);
private performTokenRefresh;
detectCampaigns(request: CampaignDetectionRequest): Promise<CampaignDetectionResult>;
private gatherCasesForAnalysis;
private extractIndicators;
private mapObservableType;
private calculateIndicatorConfidence;
private performClustering;
private calculateSimilarityMatrix;
private calculateCaseSimilarity;
private buildCluster;
private enrichClustersWithTTPs;
private extractTTPs;
private identifyTechniques;
private buildTimeline;
private analyzeInfrastructure;
private analyzeRegistrationPatterns;
private analyzeGlobalIndicators;
private calculateIndicatorRiskScore;
private generateCampaignRecommendations;
private calculateTimespan;
protected onInitialize(): Promise<void>;
protected onStart(): Promise<void>;
protected onStop(): Promise<void>;
protected onDestroy(): Promise<void>;
protected onHealthCheck(): Promise<AgentHealth>;
protected handleRequest(request: AgentRequest, context: AgentContext): Promise<any>;
}
//# sourceMappingURL=campaign-agent.d.ts.map