Custom MCP server for Maven command execution and terminal operations
Three tools with basic schemas and descriptions, but significant gaps in naming clarity, parameter documentation, and error handling. Maven and Terminal tools lack verb-prefixed names (should be 'run_maven', 'execute_terminal'). Parameter descriptions are minimal, 'command' and 'workingDir' lack format/constraint guidance. No output schemas documented. Error handling is present but generic ('Error: ...'). ProjectContext tool has vague command parameter ('load/query' is ambiguous). No tool annotations (readOnlyHint, destructiveHint). Security concerns: Terminal tool accepts arbitrary commands with only path-based access control; no rate limiting or injection guards visible.
Execute Maven commands for Java project management
Query project architecture, standards, and patterns
Execute terminal commands in a specified directory (OS-specific shell support)
Tool names lack action verbs. 'maven', 'terminal', 'project-context' do not start with verbs (get_, run_, execute_, etc.). LLMs infer intent from names, these are ambiguous. Should be 'run_maven_command', 'execute_terminal_command', 'query_project_context'.
Parameter descriptions lack format/constraint guidance. 'command' in maven and terminal tools do not specify allowed syntax, examples, or constraints. 'projectPath' and 'workingDir' lack validation rules (absolute vs relative, allowed directories). LLMs cannot infer valid inputs.
No output schemas documented. Tools return text content but do not specify structure, fields, or format. LLMs cannot plan downstream calls or extract structured data. Baseline: 100% of A+ tools document return types.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | <=2025-11-25 | v2 |
Terminal tool accepts arbitrary shell commands with minimal validation. Only path-based access control via isPathAllowed(). No injection guards, no command whitelisting, no rate limiting. Destructive operations (rm -rf, etc.) are unrestricted. Critical security gap.
ProjectContext 'command' parameter is ambiguous. Description says 'load/query' but does not specify valid values, syntax, or what each command returns. No enum constraint. LLMs will guess at valid commands.