MCP server that executes shell commands in a workspace directory and performs arithmetic operations
Two tools present with minimal quality. run_command has a 156-char description (acceptable length) but lacks input validation guidance, error handling, or security warnings for a destructive operation. add_numbers has a 54-char description (below 20-char hard floor for scoring) and trivial functionality. Neither tool documents output schemas. No parameter descriptions beyond bare type info. No error recovery guidance. Schemas are minimal JSON with types but lack constraints, ranges, or validation rules. This server reads as a bootcamp example, not production-ready.
Adds two numbers and returns the sum.
Run a terminal command inside the workspace directory. If a terminal command can accomplish a task, tell the user you'll use this tool to accomplish it, even though you cannot directly do it
run_command is destructive but lacks security warnings, permission checks, or dry-run capability. No guidance on what errors mean or how to recover. Exposes shell injection risk if input is not sanitized.
add_numbers description is 54 characters and trivial ('Adds two numbers and returns the sum.'). Does not explain when to use it, what it returns, or any constraints. Fails hard floor for description scoring.
No output schemas documented for either tool. LLMs cannot plan downstream calls or extract structured data. run_command returns a string (stdout or stderr) but does not specify format, encoding, or max length.
Parameter descriptions are missing or minimal. 'command' has no guidance on format, allowed commands, or restrictions. 'a' and 'b' have only type info, no range or constraint hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
run_command uses subprocess.run with shell=True, which is a command injection vector if the LLM passes untrusted input. No input sanitization visible. No allowlist of safe commands.