MCP server for interacting with Zabbix monitoring system
Critical failures across naming, descriptions, and schemas. Tool names lack action verbs (health, configureZabbix, handleHighCPUUsage use inconsistent patterns). Descriptions are present but generic (10-50 chars, below 194-char baseline). Parameter descriptions are minimal or absent. Schemas use Zod validation internally but are not properly exposed in tool registration. No output schemas documented. Error handling is minimal, responses are plain text, not structured. The codebase shows incomplete implementation (truncated at scheduleSmartMaintenance). No evidence of pagination, result limits, or chaining IDs in responses. Security concern: credentials passed as parameters (url, user, password in configureZabbix) rather than server-side injection.
Configure Zabbix API connection
Detects and resolves high CPU usage issues
Health check endpoint
Monitors critical services and executes automatic actions
Analyzes and optimizes resource usage
Schedules maintenance based on usage patterns
Performs security audit
Credentials exposed as tool parameters. configureZabbix accepts url, user, password as parameters instead of server-side secret injection via environment variables. Agent traces will log these credentials.
Tool names lack consistent action verbs. 'health' should be 'check_health'; 'configureZabbix' mixes camelCase with unclear intent; 'handleHighCPUUsage' is vague (does it alert, restart, or optimize?). LLMs cannot infer intent from names alone.
Descriptions are too short (10-50 chars vs 194-char baseline). 'Health check endpoint' and 'Monitors critical services and executes automatic actions' lack WHEN to use, WHAT it returns, and prerequisites. LLMs cannot determine tool selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 34 | 2026-07-28+ | v2 |
No output schemas documented. Tools return plain-text JSON strings (e.g., JSON.stringify(results)) instead of structured objects. LLMs cannot parse results reliably or chain to downstream tools.
Parameter descriptions missing or trivial. 'threshold' has description but 'duration' is vague. 'scope' enum in securityAudit lacks explanation of what 'full', 'critical', 'custom' mean. LLMs cannot validate inputs.