A TypeScript client for interacting with Model Context Protocol (MCP) servers using a local LLM
Three tools with basic schemas and minimal descriptions. All tools have input schemas with proper JSON Schema structure (type, properties, required), but descriptions are extremely brief (10-20 chars) and lack context for LLM selection. No output schemas documented. No error recovery guidance. Critically, run_command exposes a DESTRUCTIVE capability without confirmation, dry-run, or permission gates. read_file and write_file lack path validation or sanitization against traversal attacks. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk profiles.
Read the contents of a file
Run a shell command
Write content to a file
Destructive tool (run_command) lacks confirmation, dry-run, or permission gates. No tool annotations (destructiveHint) to signal risk to LLM.
All tool descriptions are under 20 characters and lack context for LLM selection. No WHEN to use, no prerequisites, no output structure documented.
No input validation or sanitization. Path parameters in read_file and write_file are unconstrained strings, vulnerable to directory traversal attacks. run_command accepts arbitrary shell commands with no escaping.
No output schemas documented. LLM cannot predict response structure or plan downstream tool calls. Error handling returns plain text with no recovery guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Tool annotations missing. No readOnlyHint on read_file, no destructiveHint on write_file/run_command, no idempotentHint. LLM cannot reason about retry safety or side effects.