MCP server for Rust documentation indexing, full-text search, and project diagnostics
Cratedex demonstrates above-average definition quality with strong naming conventions, comprehensive parameter documentation, and clear tool responsibilities. All four tools follow verb_noun patterns (search_docs, index_project, get_diagnostics, list_projects). Parameter schemas are well-defined with types, descriptions, and appropriate enums. However, output schemas are not explicitly documented in the source code, and error handling guidance is minimal. Tool descriptions are solid (140-250 chars) but lack actionable recovery hints for agents.
Get diagnostics for a project including compiler errors/warnings from cargo check, code quality lints from cargo clippy, security vulnerabilities from cargo audit, and outdated dependencies from cargo outdated.
Index a Rust project's documentation, diagnostics, and dependencies. Generates rustdoc JSON for the project and all dependencies, indexes into SQLite, and runs cargo check/clippy for diagnostics.
List all projects currently indexed by the server with their indexing status and metadata.
Search the indexed Rust documentation using full-text search (FTS5) with optional filtering by crate, kind, and parent. Supports multiple query modes: auto (intelligent selection), text (phrase search), symbol (identifier search), and raw FTS5.
Output schemas not documented in source code. While input schemas are comprehensive, return types for all tools are not explicitly visible, forcing LLMs to infer result structure.
Error handling lacks recovery guidance. Descriptions state what tools do but do not explain what to do when they fail (e.g., 'If indexing fails, check Cargo.toml syntax' or 'If search returns 0 results, try search_docs with mode=auto instead of symbol').
search_docs tool accepts multiple query modes (auto, text, symbol, fts5) but description does not provide guidance on when to use each. LLM must guess the semantics of mode=symbol vs mode=text vs mode=fts5.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 82 | 2026-07-28+ | v2 |
index_project is a write operation but description does not explicitly state 'This modifies state' or 'This operation is not idempotent, calling twice with the same project may re-index.' Agent needs to know retry semantics.
list_projects lacks pagination context in description. Accepts limit and offset parameters but description does not explain whether total count is returned or how to detect end of list.