MCP server for advanced text analysis, optimized for Claude Desktop.
Writing Tools MCP provides 5 well-intentioned text analysis tools with mostly complete descriptions and input schemas. However, there are significant gaps in parameter documentation, output schema clarity, and error handling guidance. Tool naming follows good verb-noun conventions (e.g., character_count, spellcheck, readability_score), but several parameter descriptions lack specificity about valid ranges, formats, and expected behavior. The readability_score tool's 'level' parameter includes an enum, which is good; however, other parameters lack similar constraints. Output schemas are not explicitly documented anywhere in the provided source, forcing LLMs to infer structure. Error handling is absent, no guidance on what to do if spellcheck fails, if text is empty, or if readability analysis encounters malformed markdown. The server lacks tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only operations.
Calculates the total number of characters in the provided text.
Lists the names of all available tools provided by this server. Names are derived from the live FastMCP registry, so registering or removing a tool is reflected here without a second place to edit.
Calculates various readability scores (Flesch Reading Ease, Flesch-Kincaid Grade Level, Gunning Fog Index) for the input text. The analysis can be performed on the full text, individual markdown sections, or individual paragraphs.
Identifies potentially misspelled words in the input text using pyspellchecker. Note: This function preprocesses the text to check individual words, excluding stopwords and punctuation by default (based on the current `preprocess_text` settings used).
Calculates the total number of words in the provided text, splitting by whitespace.
No output schemas documented for any tool. LLMs cannot determine what fields to expect or plan downstream tool calls. This violates the pattern:tool requirement that 'Document the output schema.' All 5 tools are affected.
No error handling guidance in any tool description. Tools lack recovery hints (pattern:recovery-guide). For example, spellcheck does not document what happens if text is empty, if language detection fails, or if spacy model fails to load. character_count lacks guidance on null/empty input handling.
Parameter descriptions lack specificity. The 'text' parameter in all tools is described generically as 'The input string to...' but provides no constraints on length, encoding, or valid content. Rubric requires format and constraint hints in descriptions. Should include min/max length, character set expectations, and language assumptions.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 58 | - | v1 |
No tool annotations present. All tools are read-only operations that never modify state, but none declare this via readOnlyHint. The MCP spec (2026-07-28) supports tool annotations for security and agent planning. Adding these is a quick win.
spellcheck description references 'preprocess_text settings' as if configurable, but no parameter exists to control preprocessing. This creates confusion, either expose a preprocessing_level parameter or remove the vague reference.