Network reconnaissance and AI/ML service detection MCP server with ping sweep, port scanning, DNS resolution, and AI service probing capabilities
Agrus Scanner demonstrates solid foundational quality with all 4 tools properly named with action verbs (scan_, probe_, export_, list_), complete input schemas with types and descriptions, and clear docstrings. Tool names follow verb_noun convention (scan_network, probe_host, export_results, list_presets) which aids LLM comprehension. All parameters include type definitions and descriptions. However, several gaps prevent a higher score: output schemas are not formally documented (only implied via code comments), error handling lacks recovery guidance (e.g., invalid IP formats, permission denied for file exports), no parameter validation feedback, and missing context about when to use scan_network vs probe_host. The export_results tool includes thoughtful path traversal protection and CSV injection prevention, showing security awareness. Tool descriptions are adequate (40-120 chars, within baseline 34-392), but could better explain prerequisites and dependencies between tools.
Export the last scan_network or probe_host results to a file. Supports JSON and CSV formats.
List available scan presets with their port counts and port numbers.
Deep-scan a single IP address: port scan and AI/ML service detection. Returns JSON object with full host detail.
Scan an IP range: ping sweep, port scan, DNS resolution, and optional AI/ML service detection. Returns JSON array of host results.
Output schemas not formally documented. Code shows JSON serialization but no explicit schema definitions for return types. LLMs cannot predict result structure to chain tools effectively.
Error handling lacks recovery guidance. Invalid IP formats, malformed CIDR notation, and permission errors return generic exceptions rather than actionable messages. E.g., 'Invalid CIDR format. Expected: 192.168.1.0/24 or 10.0.0.1-254' would guide LLM self-correction.
Missing tool interdependency documentation. Description does not explain that list_presets should be called first to understand available scan presets, or that scan_network results must precede probe_host for deeper analysis.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Parameter constraints not fully described. probe_host 'ports' parameter accepts both presets and comma-separated integers, but the description does not clearly specify parsing rules or validation (e.g., port range 1-65535, max count).
scan_network result volume not bounded. No limit parameter and no documentation of result cap. Returning thousands of hosts could exhaust context windows; recommend hardcoded cap of 50-100 or explicit limit parameter.
No explicit timeout documentation. Network scans can hang; tools need declared timeouts and retry guidance for agents.
export_results path handling partially documented. Code restricts to Documents folder for bare filenames but raises errors for absolute paths outside Documents. Description does not explain this behavior, forcing LLMs to guess.