We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jx888-max/cyber-sentinel-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
"""
Configuration management for Cyber Sentinel MCP Server
"""
import os
from typing import Optional
from pydantic import Field
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
"""Application settings with environment variable support"""
# API Keys for threat intelligence sources
virustotal_api_key: Optional[str] = Field(
default=None, description="VirusTotal API key"
)
abuseipdb_api_key: Optional[str] = Field(
default=None, description="AbuseIPDB API key"
)
urlhaus_api_key: Optional[str] = Field(
default=None, description="URLhaus API key (optional)"
)
shodan_api_key: Optional[str] = Field(default=None, description="Shodan API key")
otx_api_key: Optional[str] = Field(
default=None, description="AlienVault OTX API key"
)
# Rate limiting settings
max_requests_per_minute: int = Field(
default=60, description="Maximum requests per minute across all APIs"
)
request_timeout: int = Field(default=30, description="Request timeout in seconds")
# Cache settings
cache_ttl: int = Field(
default=3600, description="Cache TTL in seconds (1 hour default)"
)
# Logging
log_level: str = Field(default="INFO", description="Logging level")
# Development settings
debug: bool = Field(default=False, description="Enable debug mode")
class Config:
# 直接从环境变量读取,不依赖.env文件
case_sensitive = False
# Global settings instance
settings = Settings()
def get_settings() -> Settings:
"""Get application settings"""
return settings
def validate_api_keys() -> dict[str, bool]:
"""Validate which API keys are available"""
return {
"virustotal": bool(settings.virustotal_api_key),
"abuseipdb": bool(settings.abuseipdb_api_key),
"urlhaus": bool(settings.urlhaus_api_key),
"shodan": bool(settings.shodan_api_key),
"otx": bool(settings.otx_api_key),
}