A demonstration MCP server showcasing long-running operations (LRO) with client polling support using HTTP transport
Two tools with basic descriptions and partial schemas. set_delay has clear naming and description (68 chars), but lacks output schema documentation. get_random_number has good description (97 chars) and parameter defaults, but output is undocumented. Both tools have input schemas with typed parameters and descriptions, meeting baseline requirements. However, neither tool documents what they return, and error handling is absent. No tool annotations (readOnlyHint/destructiveHint) despite set_delay being a WRITE operation. Composition is reasonable, tools are single-purpose, but output chaining is not documented.
Generates a random number between the specified minimum and maximum values.
Sets the delay in seconds for simulating long-running operations.
No output schemas documented. LLMs cannot plan downstream tool calls or extract return values without knowing the response structure.
Missing tool annotations. set_delay is marked WRITE but has no destructiveHint annotation; get_random_number has no readOnlyHint. Agents cannot infer idempotency or side effects.
No error handling or recovery guidance. If set_delay receives invalid input (negative delay) or get_random_number fails, the LLM has no actionable error message.
set_delay uses static mutable state (RandomNumberTools.delayInSeconds, retryIntervalInSeconds). This violates idempotency, repeated calls with same input do not produce same result if state was modified by another client.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 70 | <=2025-11-25 | v2 |
Parameter descriptions lack format/constraint details. 'Delay in seconds' does not specify range (0 - 3600?), whether negative is allowed, or timeout behavior.