MCP server for Redis diagnostics — analyze memory usage, slowlog, client connections, and keyspace health with AI-powered recommendations
Server provides 7 well-intentioned diagnostic tools with detailed descriptions (avg 180 chars, within baseline 194). All tools are READ_ONLY and properly scoped. However, critical gaps exist: (1) Most tools have empty input schemas (analyze_memory, analyze_clients, analyze_keyspace, analyze_latency, analyze_config, analyze_replication lack parameters despite being valid candidates for filtering/options); (2) No output schemas documented, LLMs cannot predict response structure for chaining; (3) No error recovery guidance, errors are wrapped but don't guide next steps; (4) Tool descriptions lack WHEN/WHY context for selection disambiguation. Naming is strong (verb_noun pattern, clear intent). Schema completeness is the primary blocker.
Analyze Redis client connections. Detects blocked clients, connection pool saturation, large output buffers, and pub/sub subscriber concentration. Idle connection count excludes replica (S flag) and pub/sub subscriber (P flag) connections, which are expected to be persistent — this prevents false positives when the target Redis instance has replicas or pub/sub consumers attached.
Analyze Redis configuration for security and reliability risks. Flags: no maxmemory limit, unsafe eviction policy (noeviction with maxmemory set), network exposure (bind 0.0.0.0 without authentication), no requirepass, disabled persistence (both AOF and RDB off), idle connection timeout not set, TCP keepalive disabled, server frequency (hz) too low, and latency-monitor-threshold disabled (which silences the analyze_latency tool).
Analyze Redis keyspace distribution. Checks TTL coverage, cache hit/miss rates, database distribution balance, and expiry patterns.
Analyze Redis latency events. Detects fork latency spikes (RDB/AOF), AOF fsync delays, slow command processing, eviction/expiry cycle delays, and active defragmentation impact. Requires latency-monitor-threshold to be set.
Analyze Redis memory usage. Detects high fragmentation, RSS overhead, maxmemory pressure, eviction issues, and swap risk. Provides actionable recommendations for memory optimization.
Missing input schemas for 6 of 7 tools. Tools like analyze_memory, analyze_clients, analyze_keyspace, analyze_latency, analyze_config, analyze_replication register with empty {} schemas, preventing LLMs from understanding what parameters are available.
No output schemas documented. Tool descriptions state what they detect (e.g., 'Detects high fragmentation, RSS overhead') but do not specify the response structure. LLMs cannot plan downstream calls or extract specific fields without knowing the output shape. Baseline: 100% of A+ tools have documented return types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Analyze Redis replication health. For masters: reports connected replica count, per-replica state (online/wait_bgsave/send_bulk) and lag in seconds, backlog size adequacy, and
Analyze Redis SLOWLOG to find slow commands. Detects dangerous O(N) commands (KEYS, SMEMBERS, HGETALL, LRANGE, SORT, FLUSHDB, FLUSHALL), identifies latency hotspots, and recommends safer alternatives (SCAN, SSCAN, HSCAN, bounded ranges, sorted sets).
Error handling lacks recovery guidance. wrapRedisError() returns sanitized error messages but does not tell the LLM what to do next (e.g., 'Check REDIS_URL' is helpful, but 'Try connecting with redis-cli first' or 'Retry in 5 seconds' is missing).
Descriptions lack WHEN/WHY context for tool selection. 'Analyze Redis memory usage' is WHAT; missing is WHEN to call this vs analyze_config or analyze_latency. LLMs need explicit disambiguation hints. Baseline: descriptions should answer 'What does it do? When should the LLM call it instead of a similar tool?'
analyze_slowlog's 'count' parameter lacks validation constraints. Description says 'default: 128' but does not specify min/max bounds. Unbounded numbers let LLMs pass absurd values (e.g., count=999999) that could timeout or exhaust memory. Baseline: 'Specify minimum and maximum for numeric parameters.'