A collection of MCP servers for Rust (Cargo), Python, and filesystem operations
14 tools with basic schemas and descriptions, but significant gaps in parameter documentation and error handling. Tool names follow verb_noun convention (cargo_*, fs_*, pytest, mypy, flake8) which is good. However, descriptions are minimal (avg ~80 chars, well below the 194-char baseline for A+ tools), and many parameters lack type clarity. No output schemas documented. No error recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Parameter descriptions are sparse, most just restate the parameter name without explaining constraints, formats, or valid ranges. No evidence of idempotency guarantees or permission gates.
Build a Rust project Compiles a package and all of its dependencies.
Run cargo check on a Rust project Checks a package for errors without building it.
Run cargo clippy on a Rust project Executes clippy linter on the specified Rust project path.
Generate documentation for a Rust project Builds documentation for the local package and all dependencies.
Format Rust code using rustfmt Formats Rust code according to style guidelines using rustfmt.
Run a Rust project binary Compiles and runs the main binary or a specified binary.
Run tests for a Rust project Executes all unit and integration tests for a package.
No output schemas documented. LLMs cannot predict what fields to expect from tool responses, forcing them to parse unstructured output or make assumptions about return structure.
Parameter descriptions are minimal and lack constraint documentation. 'clippy_args' and similar params describe themselves as 'Optional list of additional arguments' without explaining valid formats, ranges, or examples of actual constraints. LLMs cannot validate inputs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Run flake8 linter on a Python project Executes flake8 linter on the specified project path.
Search for patterns in a file or directory. Wraps the Unix 'grep' command to search for patterns in files. Supports all options from the grep command through direct argument passthrough.
Display the beginning of a file. Wraps the Unix 'head' command to display the first part of files. Supports all options from the head command through direct argument passthrough.
Perform text transformations on a file. Wraps the Unix 'sed' command to transform text in files and extract content. Can be used for line extraction, text substitution, and other transformations. Supports all options from the sed command through direct argument passthrough.
Display the end of a file. Wraps the Unix 'tail' command to display the last part of files. Supports all options from the tail command through direct argument passthrough.
Run mypy type checker on a Python project Executes mypy type checker on the specified project path.
Run pytest on a Python project Executes pytest test runner on the specified project path.
No error handling or recovery guidance. Tools that execute external commands (cargo, pytest, grep, sed) can fail in many ways (missing binary, invalid args, permission denied, timeout). No error responses guide the LLM on what to do next.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). cargo_build, cargo_fmt, cargo_doc, cargo_run, and fs_sed are marked as WRITE but lack destructiveHint annotation. Agents cannot determine which tools are safe to retry.
fs_* tools (head, tail, grep, sed) accept arbitrary command-line arguments via passthrough. No input validation or sanitization against command injection. An LLM could be tricked into passing shell metacharacters or path traversal sequences.