Personal MCP server running on a Raspberry Pi with file operations, bash execution, and grep search capabilities
Barry provides 4 tools with complete input schemas and descriptions. Naming is clear and action-oriented (bash, read, write, grep). Descriptions are detailed (100-200 chars) and explain truncation behavior, which is good. However, output schemas are not formally documented, responses are inferred from code. Parameter descriptions are present but some lack format constraints (e.g., 'path' doesn't specify absolute vs relative handling). Error handling is basic: tools return structured responses but lack recovery guidance for LLMs. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Composition is sound, each tool has one responsibility.
Execute a bash command on the Raspberry Pi. Returns the last 2000 lines / 200KB of output (tail-truncated — most recent output is preserved). If output is truncated, the full output path on the Pi is included. Optionally provide a timeout in seconds.
Search file contents on the Raspberry Pi using ripgrep. Returns matching lines with file paths and line numbers. Respects .gitignore. Output is truncated to 100 matches or 200KB (whichever is hit first). Long lines are truncated to 500 chars.
Read the contents of a file on the Raspberry Pi. Output is truncated to 2000 lines or 200KB (whichever is hit first). Use offset/limit for large files. When you need the full file, continue reading with offset until complete.
Write content to a file on the Raspberry Pi. Creates the file if it doesn't exist, overwrites if it does. Automatically creates parent directories.
Output schemas not formally documented. Responses are inferred from code (e.g., bash returns {stdout, stderr, exitCode, fullOutputPath}). LLMs cannot plan downstream calls without explicit schema documentation.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. bash is IRREVERSIBLE, read/grep are READ_ONLY, write is WRITE. Annotations help LLMs reason about safety and retry logic.
Error handling lacks recovery guidance. bash/read/write/grep return errors but do not suggest next steps (e.g., 'File not found. Check path with grep() first.'). LLMs cannot self-correct without actionable error messages.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Parameter 'path' in read/write/grep lacks format constraints. Description does not clarify whether absolute paths are required, whether relative paths resolve from cwd, or whether symlinks are followed. This ambiguity forces LLMs to guess.
bash tool lacks idempotency guidance. Repeated calls with the same command may produce different results (e.g., if the command modifies state). LLMs need to know whether retries are safe.