A MCP Server with utilities and tools for various tasks.
This server exhibits severe definition quality gaps across nearly all dimensions. Of 12 tools, only 2 have complete input schemas with parameter descriptions (calc_time_diff, get_current_time). The remaining 10 tools show empty or missing schema properties, tools like read_lines, read_files, check_connectivity, ping, evaluate, generate_uuid, and sleep all declare `{"type":"object","properties":{},"required":[]}` with no parameters defined, yet the tool descriptions imply they accept parameters (e.g., 'sleep' must accept a duration). This is a critical violation of the schema quality rule: tools with NO or empty input schema must score 0 on schema. Descriptions vary from adequate (calc_time_diff: 122 chars) to bare-bones (ping: 28 chars, check_connectivity: 35 chars, generate_uuid: 35 chars), many falling below the 50-character minimum to guide LLM selection. Parameter naming is inconsistent: some tools use verb_noun convention (calc_time_diff, get_current_time), while others are single verbs (sleep, ping, evaluate) that obscure intent. No tool declares error handling, recovery guidance, or security constraints. No tool specifies output structure, pagination limits, or response field naming. The codebase appears to declare tools but provides no visible implementation of parameter validation or structured output. This server would require substantial refactoring to reach production quality.
Calculates the difference between two times in the specified format.
Checks connectivity to a remote host.
Evaluates a mathematical expression.
Generates one or more UUIDs.
Gets current time with the specified timezone name(optional) and format(optional), defaults to local timezone and %Y-%m-%d %H:%M:%S. Returns the current time in the specified format with timezone name and offset if available.
Gets system information, including system, node name, release, version, machine, processor, CPU count, memory total, and swap total.
Gets system stats, including boot time, CPU count, CPU percent, memory percent, memory total, memory used, memory free, swap percent, swap total, swap used and swap free.
10 of 12 tools have empty or missing input schemas. Tools declare `{"type":"object","properties":{},"required":[]}` yet descriptions reference parameters (e.g., 'sleep' must accept duration, 'evaluate' must accept expression, 'read_lines' must accept filepath).
Descriptions are too short or vague on 8 tools, falling below 50 characters or lacking LLM-actionable context. Examples: 'ping' (28 chars, 'Pings a remote host.'), 'check_connectivity' (35 chars), 'generate_uuid' (35 chars), 'evaluate' (35 chars, 'Evaluates a mathematical expression.'). The rubric baseline is 194 chars average; descriptions under 50 chars cannot guide LLM tool selection or explain when to use this vs. a similar tool.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 35 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 22 | - | v1 |
Gets the current Unix timestamp as seconds since January 1, 1970 UTC (Epoch time).
Pings a remote host.
Reads multiple files with a max bytes limit of 10MB per file. Returns contents as a list of file content objects.
Reads the lines of a file with a max bytes limit of 10MB. Returns it as a list of strings in utf-8 encoding.
Sleeps for a specified duration.
No tool declares error handling, recovery guidance, or status codes. If a ping fails, an LLM has no guidance on whether to retry, ask the user, or try an alternative tool. No tool explains what happens on invalid input (e.g., invalid timezone, invalid expression).
No tool documents output schema or response structure. Descriptions say what tools do but not what fields they return. E.g., 'get_system_info' returns system/node/release/version/machine/processor, but this is not captured in a response schema. LLMs cannot plan downstream tool calls without knowing what data is available.
Parameter naming inconsistency and ambiguity. Tools like 'ping', 'sleep', 'evaluate', and 'check_connectivity' use bare verb names instead of verb_noun convention. The rubric states verb_noun (send_email, get_user) helps LLMs parse intent from the name alone. Also, no parameter suffixes to disambiguate types (e.g., host_name vs host_ip).
read_lines and read_files tools accept no parameters despite the description mentioning a 10MB max bytes limit. There are no filepath, file_paths, max_bytes, or encoding parameters visible in the schema. This makes the tools unusable, an LLM cannot call them because it cannot specify what to read.
ping and check_connectivity tools are ambiguous. Descriptions are near-identical, and there is no clear guidance on when to use one vs. the other. The rubric states: 'When multiple tools operate on the same resource, their names must make the distinction obvious.' Possible intent: check_connectivity is HTTP health check, ping is ICMP probe, but this is never stated.
generate_uuid and sleep tools lack parameter information. 'generate_uuid' description says 'one or more UUIDs' but no count or format parameter is declared. 'sleep' says 'sleeps for a specified duration' but no duration parameter is visible.
No tool declares permissions, scope, or security constraints. Tools like read_files and check_connectivity could pose security risks (path traversal, SSRF), but there are no mentions of permission gates, input validation, or sandboxing.