Claude can write code. It can analyze spreadsheets, debug regex, draft legal contracts, explain quantum mechanics to a five-year-old. Impressive range.
But ask it to read a web article aloud. Go ahead, try.
Nothing happens. Claude doesn't have a mouth. It doesn't have ears either, but that's a separate problem. The point is: there's no built-in way for Claude to take a URL, pull out the article text, and turn it into audio you can listen to. Not natively. Not without help.
So you give it help.
MCP in 30 Seconds
Anthropic released the Model Context Protocol — an open standard for plugging external tools into AI assistants. Think of it as USB-C for AI. One port, many devices. An MCP server exposes "tools" that Claude can call. A weather server gives Claude get_forecast. A database server gives Claude run_query. CastReader gives Claude three tools: castreader_extract, castreader_generate_audio, and castreader_read_aloud. Extract a web page. Generate speech. Read it in your browser with paragraph highlighting.
That's it. No SDK to learn. No webhook to deploy.
Setup: Claude Desktop
Open your Claude Desktop config file.
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Add this:
{
"mcpServers": {
"castreader": {
"command": "npx",
"args": ["-y", "castreader-mcp-server"]
}
}
}Restart Claude Desktop.
That's the entire setup. npx downloads the server on first run. No global install, no dependency hell, no pip install into the wrong Python. It just works.
Your First Request
Open Claude Desktop and type:
Extract the article at https://paulgraham.com/greatwork.htmlClaude calls castreader_extract behind the scenes. A few seconds later, you get back structured content:
{
"title": "How to Do Great Work",
"paragraphs": [
"If you collected lists of techniques for doing great work in a lot of different fields, what would the intersection look like?",
"I decided to find out by making it.",
"Partly my goal was to create a guide that could be used by someone working in any field. But I was also curious about the shape of the intersection..."
],
"paragraph_count": 186,
"word_count": 11842
}Clean paragraphs. No nav bars. No cookie banners. No "Subscribe to my newsletter" popups polluting the text. Just the essay.
Generate Audio
Now the fun part. Tell Claude:
Generate audio for that article, paragraphs 1 through 10Claude calls castreader_generate_audio. The CastReader TTS engine processes each paragraph, returns MP3 audio with word-level timestamps. Claude can save the files, play them back, or hand you download links.
The voice is Kokoro-based — natural, not robotic. It handles Paul Graham's long compound sentences without tripping over itself. It pauses at paragraph breaks. It doesn't mispronounce "Dijkstra" (well, mostly).
Read Aloud in Your Browser
This is the one that feels like magic. Type:
Read this page aloud: https://en.wikipedia.org/wiki/Alan_TuringClaude calls castreader_read_aloud. Your default browser opens the Wikipedia page. The CastReader Chrome extension activates. Audio starts playing. The current paragraph highlights in real time. It scrolls as you go. You sit back and listen.
One requirement: you need the CastReader Chrome extension installed. The MCP server coordinates with it. No extension, no browser playback — but castreader_extract and castreader_generate_audio still work fine standalone.
Customization
Two environment variables control the defaults:
{
"mcpServers": {
"castreader": {
"command": "npx",
"args": ["-y", "castreader-mcp-server"],
"env": {
"CASTREADER_VOICE": "af_heart",
"CASTREADER_SPEED": "1.5"
}
}
}
}CASTREADER_VOICE defaults to af_heart. Other options: af_bella, af_nicole, am_adam, am_michael, and more.
CASTREADER_SPEED defaults to 1.5. Range: 0.5 to 3.0. I personally run at 1.8 for blog posts and 1.2 for dense technical papers. Your ears, your call.
Works with Other MCP Clients
Claude Desktop is the obvious choice. But MCP is a protocol, not a product. Any client that speaks MCP can use CastReader:
- Cursor — add the same config to Cursor's MCP settings. Now your code editor reads documentation aloud while you work.
- Windsurf — same deal.
- Cline — VS Code extension with MCP support. Add CastReader, ask it to read API docs.
- Any custom app — if you're building with the MCP SDK,
castreader-mcp-serveris just another server to connect.
The config is identical everywhere. Copy, paste, restart.
What It Handles That Others Can't
Most "read this page" tools choke on anything beyond basic HTML. CastReader's extraction engine handles the hard cases:
Kindle Cloud Reader — Amazon uses custom font subsets to render ebook text. The characters in the DOM are scrambled nonsense. CastReader runs OCR calibration to decode them. No other TTS tool does this.
WeRead (微信读书) — China's largest ebook platform renders text on Canvas. Zero DOM text. CastReader intercepts the chapter data before it hits the canvas.
Notion, Google Docs, Yuque, Feishu — each one has its own bizarre DOM structure. Notion nests everything in draggable blocks. Google Docs uses its own rendering engine. CastReader has dedicated extractors for all of them.
SPA blogs — React/Next.js/Nuxt pages where content loads after JavaScript execution. CastReader waits for the DOM to stabilize before extracting.
You don't need to think about any of this. You just say "read this page" and it figures out the rest.
Get Started
Three links. That's all you need.
- MCP Server docs — full tool reference, all parameters, advanced usage
- GitHub — source code, issues, contributions welcome
- Chrome Extension — required for browser read-aloud, free
Five minutes of setup. Then Claude can read the internet to you. Every article you bookmarked and forgot. Every paper you meant to get to. Every 8,000-word blog post you skimmed the intro of and closed.
Your commute just got productive.