readability-claude
Enables Claude to analyze and improve readability of text using local deterministic metrics like Flesch Reading Ease and lexical diversity, without sending data to external services.
README
Readability for Claude
Keep Claude's prose clear without sending the draft to another service. Readability adds a local, deterministic readability check to Claude Code and Claude Desktop. Claude can score a draft, rewrite it, and check the result again.
- Flesch Reading Ease: 0-100, higher is easier
- MTLD and type-token ratio for lexical diversity
- Sentence, paragraph, and word statistics
- Local processing with no telemetry or network requests
- Pure-JavaScript analyzer with no runtime dependencies
“Rewrite this release note in plain English. Keep every fact and aim for a Reading Ease score of at least 60.”
Install
Claude Code plugin
Run these commands inside Claude Code:
/plugin marketplace add alesdrobysh/readability-claude
/plugin install readability@readability-marketplace
Then invoke /readability, or ask Claude to check or simplify substantial
English prose.
Requires Node.js 18 or newer on PATH.
Claude Desktop MCP Bundle
Download readability.mcpb from the
latest release,
open it, and approve the installation in Claude Desktop. The
analyze_readability MCP tool will then be available.
The bundle contains its Node dependencies and needs no API key or setup. Its bundled server requires a host with Node.js 20 or newer.
Command line
From a checkout:
printf '%s\n' 'Your draft goes here.' | node src/check.js
printf '%s\n' 'Your draft goes here.' | node src/check.js --threshold 60
The threshold command exits 1 when the draft misses the target. Invalid input or options exit 2.
Example output
{
"word_count": 174,
"sentence_count": 12,
"paragraph_count": 4,
"avg_sentence_length": 14.5,
"avg_word_length": 4.8,
"ttr": 0.61,
"mtld": 74.2,
"flesch_reading_ease": 64.3,
"complexity_label": "Moderate"
}
| Field | Meaning |
|---|---|
flesch_reading_ease |
0-100. 70+ simple, 50-69 moderate, below 50 complex. |
complexity_label |
Bucket derived from Reading Ease. |
mtld |
Lexical diversity; null below 50 words. |
ttr |
Unique tokens divided by all tokens. |
avg_sentence_length |
Words per sentence. |
avg_word_length |
Characters per word. |
word_count, sentence_count, paragraph_count |
Surface statistics. |
Markdown code blocks and inline code are removed. Formatting markers are stripped while prose content, headings, links, and list text are retained. This is intentionally a small Markdown heuristic, not a complete parser.
What this score can and cannot do
This project currently supports English prose. Its syllable counter is a small English heuristic, not a dictionary. Flesch Reading Ease rewards short sentences and short words; it does not understand meaning, accuracy, tone, or style. Use the score as a guardrail against bloat, not a target to game.
Do not use it on source code, logs, command output, non-English prose, or tiny samples.
Privacy and security
Analysis happens in the local Node process. The analyzer:
- makes no network requests;
- does not persist text (the Claude host may retain conversation data);
- starts no network listener;
- uses no API keys or telemetry.
The MCP Bundle uses stdio to communicate with its host. See SECURITY.md to report a vulnerability.
Development
npm install
npm test
npm run validate:mcpb
npm run build:mcpb
# -> readability.mcpb and readability.mcpb.sha256
src/analyzer.js and src/check.js are canonical. The build copies them into
the Claude Code plugin and MCP Bundle before packaging, and the test suite
checks that all copies remain identical.
Project layout:
src/ analyzer and CLI source
plugin/ Claude Code plugin
mcpb/ Claude Desktop MCP Bundle source
test/smoke.js dependency-free smoke tests
scripts/build-mcpb.sh validated, lockfile-based bundle build
.claude-plugin/ self-hosted Claude Code marketplace
.github/workflows/ CI and release automation
See CONTRIBUTING.md for development and release checks.
License
MIT. See LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.