MCP Server Starter kit using the StdioServerTransport
This server has 2 tools with minimal documentation. Tool names are short and action-oriented ('add', 'which-app-on-port') but the latter is hyphenated and less conventional. No output schema is documented. Error handling is entirely absent, no recovery guidance, no error classification, no actionable messages. The 'add' tool is trivial; 'which-app-on-port' performs shell operations but provides no context about what fields the response contains or what errors might occur. If parameters lack descriptions, schema score cannot exceed 30.
Missing tool descriptions. Both 'add' and 'which-app-on-port' have null or absent descriptions. LLMs cannot determine when or why to select these tools without explicit docstrings.
Parameter descriptions are null for all inputs. 'a' and 'b' in 'add' lack context (are they integers, floats, unbounded?). 'port' in 'which-app-on-port' has no description of expected range or format.
No documented output schema. The 'which-app-on-port' tool returns a JSON object with 'pid' and 'command' fields, but this structure is not documented in tool metadata. LLMs cannot plan downstream usage without knowing what fields to expect.
No error handling or recovery guidance. 'which-app-on-port' calls execFile() without try-catch boundaries visible in the tool wrapper, and rejects on error with no actionable message for the LLM. If lsof or ps fails, the LLM receives a raw error with no suggestion for next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 33 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 28 | - | v1 |
Tool naming: 'which-app-on-port' uses hyphens, which is atypical in agent tool naming conventions. Consider 'get_process_on_port' or 'find_app_on_port' to align with verb_noun patterns.
No input validation or constraints. The 'add' tool accepts any number without bounds or format specification. The 'which-app-on-port' tool accepts any number for port with no min/max constraints (valid range: 1 - 65535). Unbounded inputs let LLMs pass absurd values.