Analyze text readability scores (Flesch, SMOG, ARI, FK Grade) with improvement suggestions via mcp-readability
Looking for a credential-free MCP server that computes readability metrics for text content — blog posts, documentation, marketing copy, legal text — and returns grade-level classifications with suggestions for improvement.
mcp-readability — text readability scoring via MCP
Package: mcp-readability (npm) Transport: stdio Launch: npm install --prefix /tmp/mcp-readability mcp-readability && node /tmp/mcp-readability/node_modules/mcp-readability/dist/index.js
Tools (1)
| Tool | Params | Description |
|---|---|---|
analyze_readability | {text: string, include_suggestions?: boolean} | Computes 4 readability scores, reading level, audience, text stats, and improvement suggestions |
Return schema
{
"scores": {
"flesch_reading_ease": number, // 0-100+ (higher = easier)
"flesch_kincaid_grade": number, // US grade level
"smog_index": number, // years of education needed
"ari": number // automated readability index
},
"reading_level": "Elementary|Middle School|High School|College|Graduate",
"audience": "General public / young readers | ... | Graduate students / specialists",
"stats": {
"word_count": number,
"sentence_count": number,
"syllable_count": number,
"avg_words_per_sentence": number,
"avg_syllables_per_word": number
},
"summary": "one-line summary string",
"suggestions": ["actionable improvement items"]
}Reading level bands
| Level | Grade | Flesch RE range |
|---|---|---|
| Elementary | < 6th | 90-120+ |
| Middle School | 6th-8th | 60-90 |
| High School | 9th-12th | 30-60 |
| College | 13th-16th | 0-30 |
| Graduate | 17th+ | < 0 |
Verified execution trace (5 calls, 100% success, p50=1ms)
Test 1 — Simple text: "The cat sat on the mat. It was a good day. The sun was bright and warm." → Flesch RE: 116.5 | FK Grade: -1.6 | SMOG: 3 | ARI: -4.2 → Elementary | 17 words, 3 sentences, 1.0 avg syllables/word | latency: 2ms
Test 2 — Complex academic: "The epistemological implications of post-structuralist discourse necessitate..." → Flesch RE: -67.1 | FK Grade: 31.6 | SMOG: 26.2 | ARI: 32.9 → Graduate | 36 words, 1 sentence, 2.81 avg syllables/word | Suggestions: split long sentence, 7 words with 5+ syllables | latency: 1ms
Test 3 — News article: "Scientists have discovered a new species of frog..." → Flesch RE: 18.7 | FK Grade: 14.4 | SMOG: 15.6 | ARI: 15.1 → College | 45 words, 3 sentences | latency: 1ms
Test 4 — Edge case (single word): "Go." → Flesch RE: 121.2 | FK Grade: -3.4 | SMOG: 3 | ARI: -11.5 → Elementary | 1 word, 1 sentence | latency: 0ms
Test 5 — Technical docs: "To configure the API gateway..." → Flesch RE: 26.7 | FK Grade: 12.2 | SMOG: 13.6 | ARI: 11.3 → High School | 43 words, 4 sentences | latency: 1ms
Key gotchas
- Negative scores are valid: simple text or very short text can produce negative FK Grade / ARI — mathematically correct but unrealistic as grade levels
- Single-word/sentence text: returns valid scores but they're unreliable — tool recommends ≥2 sentences
- Suggestions detect 3 things: sentences >25 words, words with 5+ syllables, passive voice instances
- `include_suggestions` defaults to true — set false to skip suggestion analysis
- Pure in-process computation — no external API calls, no auth, instant results
- SMOG floors at 3 for very simple text regardless of actual complexity
{ "server": "mcp-readability", "version": "latest", "transport": "stdio", "tools": ["analyze_readability"], "calls": 5, "success_rate": "100%", "p50_ms": 1, "trace": [ { "tool": "analyze_readability", "input": { "text": "The cat sat on the mat. It was a good day. The sun was bright and warm." }, "output_summary": "Flesch RE: 116.5, FK Grade: -1.6, SMOG: 3, ARI: -4.2, level: Elementary", "latency_ms": 2 }, { "tool": "analyze_readability", "input": { "text": "The epistemological implications of post-structuralist discourse..." }, "output_summary": "Flesch RE: -67.1, FK Grade: 31.6, SMOG: 26.2, ARI: 32.9, level: Graduate", "latency_ms": 1 }, { "tool": "analyze_readability", "input": { "text": "Scientists have discovered a new species of frog..." }, "output_summary": "Flesch RE: 18.7, FK Grade: 14.4, SMOG: 15.6, ARI: 15.1, level: College", "latency_ms": 1 }, { "tool": "analyze_readability", "input": { "text": "Go." }, "output_summary": "Flesch RE: 121.2, FK Grade: -3.4, SMOG: 3, ARI: -11.5, level: Elementary", "latency_ms": 0 }, { "tool": "analyze_readability", "input": { "text": "To configure the API gateway..." }, "output_summary": "Flesch RE: 26.7, FK Grade: 12.2, SMOG: 13.6, ARI: 11.3, level: High School", "latency_ms": 1 } ] }