MCP server that exposes Makefile targets as tools
Single tool with critical definition gaps. Tool name 'dynamic_makefile_targets' is generic and does not follow verb_noun pattern (should be 'run_makefile_target' or similar). Description is vague: 'Dynamically generated tools from Makefile targets...' reads as implementation detail, not user-facing intent. Input schema present but parameters lack descriptions: 'variables' and 'timeout' have no guidance on format, constraints, or when to use them. No output schema documented. No error handling guidance. Tool appears to be a catch-all wrapper rather than discrete, composable operations. The @internal/@skip filtering mechanism is undocumented in the schema.
Dynamically generated tools from Makefile targets. Each target in the Makefile with a '## Description' comment becomes an MCP tool. Targets marked with @internal or @skip are hidden.
Tool name 'dynamic_makefile_targets' is not action-oriented. Does not start with a verb (get_, run_, execute_, etc.). LLMs cannot infer intent from the name alone. Should be 'run_makefile_target' or 'execute_makefile_command'.
Tool description is implementation-focused, not user-intent-focused. Describes how targets are discovered ('@internal/@skip filtering') rather than what the tool does for the user. Should state: 'Execute a Makefile target with optional variables and timeout. Returns command output.'
Input parameters 'variables' and 'timeout' lack descriptions. LLMs cannot determine: What format for variables? (JSON object, KEY=VALUE string?) What does timeout control? (per-target, total, wall-clock?) Minimum/maximum values for timeout not specified.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 30 | <=2025-11-25 | v2 |
No output schema documented. LLMs do not know what fields to expect from execution results. Should document: success (boolean), stdout (string), stderr (string), exit_code (integer), duration_seconds (number).
No error handling guidance. Tool marked as WRITE risk but no documentation of failure modes, recovery steps, or when to retry. Should clarify: Are timeouts retryable? What does a non-zero exit code mean? Should agent retry or escalate?