Securellm Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Securellm Mcp (MCP Server) and scored it 45/100 (orange). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 3 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 3 flagged
A base64 string of 128+ characters appears in a documentation file. Encoded prompt injection hides the hostile instruction in base64 — invisible to keyword filters — and relies on the agent's ability to decode it at runtime. There is no normal authoring reason to embed a multi-hundred-byte base64 blob in skill docs.
*.sig, SIGNATURES) outside the documentation.Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Enterprise-Grade Model Context Protocol Server for Intelligent Development Workflows
SecureLLM MCP is a production-ready Model Context Protocol (MCP) server that transforms AI assistants into intelligent development partners. Built with enterprise-grade architecture, it combines advanced caching, reasoning systems, and comprehensive tooling to deliver unprecedented productivity for NixOS and systems programming workflows.
┌─────────────────────────────────────────────────────────────────────┐
│ MCP CLIENT (Claude, Cline) │
└────────────────────────────┬────────────────────────────────────────┘
│ stdio/HTTP
▼
┌─────────────────────────────────────────────────────────────────────┐
│ SecureLLM MCP Server Core │
│ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │
│ │ Semantic │ │ Smart Rate │ │ Knowledge │ │
│ │ Cache │ │ Limiter │ │ Database │ │
│ │ (Embeddings) │ │ (Circuit │ │ (SQLite + │ │
│ │ │ │ Breaker) │ │ FTS5) │ │
│ └────────────────┘ └────────────────┘ └────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Reasoning │ │ Development │ │ Infrastructure │
│ Systems │ │ Tools │ │ Management │
│ │ │ │ │ │
│ • Context │ │ • Nix Package │ │ • SSH Remote │
│ Inference │ │ Debugger │ │ Execution │
│ • Multi-Step │ │ • Build Analyzer │ │ • System Health │
│ Planner │ │ • Flake Ops │ │ Monitoring │
│ • Causal │ │ • Web Search │ │ • Emergency │
│ Analysis │ │ • Browser Auto │ │ Framework │
│ • Adaptive │ │ • Research Agent │ │ • Backup Manager │
│ Learning │ │ • Code Analysis │ │ • Log Analysis │
└──────────────┘ └──────────────────┘ └──────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Observability & Security │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
│ │ Prometheus │ │ Structured │ │ OAuth/ │ │ Sandboxed │ │
│ │ Metrics │ │ Logging │ │ GitHub │ │ Execution │ │
│ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │
└─────────────────────────────────────────────────────────────────────┘Semantic Cache - Industry-first embedding-based caching for MCP servers:
// Queries like these hit the same cache:
"What's the current CPU temperature?"
"Check thermal status of the system"
"Show me processor heat levels"Production-grade request management with circuit breaker pattern:
Persistent learning infrastructure with advanced search:
Comprehensive tooling for NixOS ecosystem:
Laptop protection during intensive operations:
Next-generation AI capabilities currently in development:
# Clone repository
git clone https://github.com/marcosfpina/securellm-mcp.git
cd securellm-mcp
# Install dependencies
npm install
# Build
npm run build
# Run server
node build/src/index.jsCreate .env file:
# Core Configuration
PROJECT_ROOT=/path/to/your/project
ENABLE_KNOWLEDGE=true
KNOWLEDGE_DB_PATH=~/.local/share/securellm/knowledge.db
# Semantic Cache (Optional)
ENABLE_SEMANTIC_CACHE=true
SEMANTIC_CACHE_THRESHOLD=0.85
SEMANTIC_CACHE_TTL=3600
LLAMA_CPP_URL=http://localhost:8080
# API Keys (loaded via SOPS in production)
ANTHROPIC_API_KEY=your_key_here
OPENAI_API_KEY=your_key_here
DEEPSEEK_API_KEY=your_key_here
# Observability
METRICS_PORT=9090
LOG_LEVEL=info#### Claude Desktop
// ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"securellm": {
"command": "node",
"args": ["/path/to/securellm-mcp/build/src/index.js"],
"env": {
"PROJECT_ROOT": "/your/project/path"
}
}
}
}#### Cline (VSCodium/VSCode)
// ~/.config/VSCodium/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
{
"mcpServers": {
"securellm": {
"command": "node",
"args": ["/path/to/securellm-mcp/build/src/index.js"],
"env": {
"PROJECT_ROOT": "${workspaceFolder}"
}
}
}
}// Diagnose why a Nix package won't build
await mcp.call("package_diagnose", {
package_path: "./pkgs/custom-app/default.nix",
package_type: "js",
build_test: true
});
// Download package from GitHub with automatic hash calculation
await mcp.call("package_download", {
package_name: "awesome-tool",
package_type: "tar",
source: {
type: "github_release",
github: {
repo: "owner/awesome-tool",
tag: "v1.2.3",
asset_pattern: "*.tar.gz"
}
}
});// Check if it's safe to rebuild
await mcp.call("rebuild_safety_check");
// Monitor thermals during build
await mcp.call("thermal_warroom", {
duration: 120 // Monitor for 2 minutes
});
// Get forensic analysis after thermal event
await mcp.call("thermal_forensics", {
duration: 180,
skip_rebuild: false
});// Create development session
const session = await mcp.call("create_session", {
summary: "Implementing new authentication module"
});
// Save insights during development
await mcp.call("save_knowledge", {
session_id: session.id,
entry_type: "decision",
content: "Using JWT tokens instead of sessions for API auth",
tags: ["auth", "api", "jwt"],
priority: "high"
});
// Search past decisions
const results = await mcp.call("search_knowledge", {
query: "authentication jwt",
entry_type: "decision",
limit: 5
});// Comprehensive health check
await mcp.call("system_health_check", {
detailed: true
});
// Analyze system logs
await mcp.call("system_log_analyzer", {
service: "sshd",
since: "1 hour ago",
level: "error"
});
// Service management
await mcp.call("system_service_manager", {
action: "restart",
service: "nginx"
});// Deep research on technical topics
await mcp.call("research_agent", {
topic: "Rust async runtime comparison",
depth: "comprehensive",
sources: ["github", "reddit", "documentation"]
});
// Analyze codebase complexity
await mcp.call("analyze_complexity", {
directory: "./src",
include_patterns: ["**/*.ts"],
metrics: ["cyclomatic", "cognitive", "maintainability"]
});
// Find potentially dead code
await mcp.call("find_dead_code", {
directory: "./src",
extensions: [".ts", ".js"]
});The server exposes several MCP resources for querying system state:
config://current - Current SecureLLM configurationlogs://audit - Recent audit log entriesmetrics://usage - Provider usage statisticsmetrics://prometheus - Prometheus-format metricsmetrics://semantic-cache - Cache performance statsdocs://api - API documentation// Query cache performance
const stats = await mcp.read("metrics://semantic-cache");
console.log(`Hit rate: ${stats.hitRate}%`);
console.log(`Tokens saved: ${stats.tokensSaved}`);secrets.yamlsecurellm-mcp/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── knowledge/
│ │ └── database.ts # SQLite + FTS5 implementation
│ ├── middleware/
│ │ ├── semantic-cache.ts # Embedding-based caching
│ │ ├── rate-limiter.ts # Smart rate limiting
│ │ ├── circuit-breaker.ts # Failure detection
│ │ ├── retry-strategy.ts # Exponential backoff
│ │ └── metrics-collector.ts # Performance tracking
│ ├── reasoning/
│ │ ├── context-manager.ts # Context inference
│ │ ├── multi-step-planner.ts # Task decomposition
│ │ └── proactive-executor.ts # Pre-action execution
│ ├── tools/
│ │ ├── package-diagnose.ts # Nix package debugging
│ │ ├── emergency/ # Thermal protection
│ │ ├── laptop-defense/ # System safety
│ │ ├── system/ # Health monitoring
│ │ ├── ssh/ # Remote execution
│ │ ├── browser/ # Web automation
│ │ └── nix/ # Nix ecosystem tools
│ ├── types/
│ │ ├── knowledge.ts # Knowledge DB schemas
│ │ ├── semantic-cache.ts # Cache type definitions
│ │ └── middleware/ # Middleware types
│ └── utils/
│ ├── logger.ts # Pino structured logging
│ ├── project-detection.ts # Auto project root detection
│ └── host-detection.ts # NixOS hostname resolution
├── docs/ # Architecture documentation
├── tests/ # Integration tests
└── build/ # Compiled output# Development mode with watch
npm run watch
# Production build
npm run build
# Run tests
npm test
# Type checking
npx tsc --noEmitdocs/HYBRID-REASONING-ARCHITECTURE.mdExpose metrics on HTTP endpoint:
# Start metrics server
export METRICS_PORT=9090
node build/src/index.js
# Query metrics
curl http://localhost:9090/metricsAvailable metrics:
mcp_rate_limiter_requests_total{provider="deepseek"}mcp_rate_limiter_request_duration_seconds{provider="openai"}mcp_circuit_breaker_state{provider="anthropic"}mcp_semantic_cache_hits_totalmcp_semantic_cache_tokens_saved_totalPino-based JSON logging:
{
"level": "info",
"time": 1704196800000,
"msg": "Semantic cache hit",
"similarity": 0.92,
"toolName": "thermal_check",
"tokensSaved": 150
}1. Semantic cache not working
# Verify llama.cpp server is running
curl http://localhost:8080/health
# Check cache database exists
ls -lh ~/.local/share/securellm/semantic_cache.db
# Enable debug logging
export LOG_LEVEL=debug2. Rate limiter throttling requests
# Check current queue status
# (use rate_limiter_status tool via MCP)
# Adjust rate limits in config
# See src/config/rate-limits.ts3. Knowledge DB corruption
# Backup and rebuild
cp ~/.local/share/securellm/knowledge.db{,.backup}
rm ~/.local/share/securellm/knowledge.db
# Restart server (will recreate schema)MIT License - See LICENSE file
Built with:
Inspired by:
Author: marcosfpina Project: github.com/marcosfpina/securellm-mcp Issues: GitHub Issues
Built for developers who demand production-grade tooling.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.