A Go implementation of the Model Context Protocol (MCP) server with support for tools, resources, and prompts
This MCP server provides 8 bash-related tools with basic definitions but significant quality gaps. All tools have schema definitions visible in the code (pkg/model/tools.go), but the descriptions are extremely brief and lack LLM-optimized context. The schema structure is present but minimal, most parameters lack detailed constraints, ranges, or guidance on valid values. No output schemas are documented. Error handling descriptions are absent. The tools themselves are well-namespaced (bash_*) and follow verb-noun conventions, but descriptions do not explain WHEN to use each tool or what it returns. Critical security risk: bash_execute and bash_script are irreversible operations that lack any confirmation or dry-run support, and the descriptions do not warn about this. Parameter descriptions are generic and under 50 characters, well below the 72-char baseline for A+ tools.
List all aliases
Show environment variables
Execute a Bash command
Get recent command history
List active jobs
Get current working directory
Execute a multi-line Bash script
Locate a command in PATH
Destructive operations (bash_execute, bash_script) lack confirmation, dry-run, or reversibility warnings. Descriptions do not mention that these are irreversible. LLMs will invoke them without understanding consequences.
Descriptions are extremely brief (10-25 characters for most tools) and do not explain WHEN to use each tool, what it returns, or how it differs from similar tools. Below the 194-char baseline for production tools. LLMs cannot reason about tool selection with such sparse descriptions.
No output schemas documented anywhere. LLMs do not know what fields to expect from any tool result. bash_history returns a list, but structure is not declared. bash_which returns a path, but this is not documented.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 42 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 36 | - | v1 |
Parameter descriptions are generic and do not provide constraints, ranges, or valid value guidance. 'Command to execute' tells the LLM nothing about allowed syntax, unsafe patterns, or precedent. 'Optional timeout in seconds (max 600)' lacks minimum and explanation of what happens on timeout.
No error handling guidance. What happens when a command fails? Does bash_execute return exit code + stderr? Is it in the Content response? LLMs cannot handle failures without explicit error schema.
bash_execute and bash_script accept arbitrary commands. No validation, sandboxing, or injection protection mentioned. Dangerous patterns (rm -rf, network calls, credential leaks) are not guarded or warned against. Critical security gap.