用 MCP 让 Claude 朗读任意网页——CastReader MCP 服务器教程

Claude 能写代码,能分析数据,能帮你改简历、解释量子力学、用五种语言骂你的 bug。厉害。

但你让它朗读一篇网页文章试试?

不行。它没有嘴。它连耳朵都没有——不过那是另一回事。关键是:Claude 原生没有任何办法拿到一个 URL、提取正文、转成语音。它做不到。

除非你给它装一个。

MCP 是什么?30 秒讲完

Anthropic 发布了 Model Context Protocol——一个开放标准,让 AI 助手能调用外部工具。你可以把它理解成 AI 的 USB-C 接口。一个协议,接万物。MCP 服务器向 Claude 暴露"工具"。天气服务器给 Claude 一个 get_forecast,数据库服务器给 Claude 一个 run_query。CastReader 给 Claude 三个工具:castreader_extract(提取网页正文)、castreader_generate_audio(生成语音)、castreader_read_aloud(在浏览器里朗读并高亮段落)。

不需要学 SDK。不需要部署 webhook。

配置 Claude Desktop

找到你的 Claude Desktop 配置文件。

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

加上这段:

{
  "mcpServers": {
    "castreader": {
      "command": "npx",
      "args": ["-y", "castreader-mcp-server"]
    }
  }
}

重启 Claude Desktop。

搞定了。npx 在首次运行时自动下载服务器。不用全局安装,不用管依赖冲突,不用在三个 Python 环境里猜哪个是对的。直接能用。

第一次请求

打开 Claude Desktop,输入:

提取这篇文章:https://paulgraham.com/greatwork.html

Claude 在后台调用 castreader_extract。几秒钟后,你拿到结构化的内容:

{
  "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..."
  ],
  "paragraph_count": 186,
  "word_count": 11842
}

干干净净的段落。没有导航栏,没有 cookie 弹窗,没有"关注公众号"浮层。只有正文。

生成语音

接下来才是重点。告诉 Claude:

把这篇文章的前 10 段转成语音

Claude 调用 castreader_generate_audio。CastReader 的 TTS 引擎逐段处理,返回 MP3 音频和逐词时间戳。Claude 可以保存文件、播放、或者给你下载链接。

语音基于 Kokoro 模型——自然、不机械。长句不会卡壳。段落之间有停顿。"Dijkstra"的发音基本正确(大概吧)。

在浏览器里朗读

这个功能有点魔法的味道。输入:

朗读这个页面:https://en.wikipedia.org/wiki/Alan_Turing

Claude 调用 castreader_read_aloud。你的默认浏览器打开维基百科页面。CastReader Chrome 扩展自动启动。音频开始播放。当前段落实时高亮。页面跟随滚动。你往椅背上一靠,听就完了。

前提条件:你得装 CastReader Chrome 扩展。MCP 服务器跟扩展联动。没装扩展的话,浏览器朗读不行——但 castreader_extractcastreader_generate_audio 照常能用。

自定义配置

两个环境变量控制默认值:

{
  "mcpServers": {
    "castreader": {
      "command": "npx",
      "args": ["-y", "castreader-mcp-server"],
      "env": {
        "CASTREADER_VOICE": "af_heart",
        "CASTREADER_SPEED": "1.5"
      }
    }
  }
}

CASTREADER_VOICE 默认 af_heart。其他选项:af_bellaaf_nicoleam_adamam_michael,还有更多

CASTREADER_SPEED 默认 1.5。范围 0.53.0。我自己看博客用 1.8,读论文用 1.2。你的耳朵你做主。

不只是 Claude Desktop

Claude Desktop 是最直接的入口。但 MCP 是协议,不是产品。任何支持 MCP 的客户端都能用 CastReader:

  • Cursor — 把同样的配置加到 Cursor 的 MCP 设置里。写代码的时候让编辑器给你朗读文档。
  • Windsurf — 同理。
  • Cline — 支持 MCP 的 VS Code 扩展。装上 CastReader,让它读 API 文档。
  • 自己的应用 — 如果你在用 MCP SDK 开发,castreader-mcp-server 就是一个普通的 MCP server,接上就行。

配置完全一样。复制,粘贴,重启。

别人搞不定的,它能搞定

大多数"帮你读网页"的工具,碰到稍微复杂一点的页面就歇菜。CastReader 的提取引擎专门处理硬骨头:

Kindle Cloud Reader — 亚马逊用自定义字体子集渲染电子书文本。DOM 里的字符是乱码。CastReader 跑 OCR 校准来解码。市面上没有第二个 TTS 工具能做到这点。

微信读书 — 国内最大的电子书平台,文字画在 Canvas 上。DOM 里一个字都没有。CastReader 在数据到达 Canvas 之前就截获了章节内容。

Notion、Google Docs、语雀、飞书 — 每个都有自己奇葩的 DOM 结构。Notion 把所有东西塞在可拖拽的 block 里。Google Docs 用自己的渲染引擎。CastReader 对每一个都写了专用提取器。

SPA 博客 — React/Next.js/Nuxt 页面,内容在 JavaScript 执行后才加载。CastReader 等 DOM 稳定了再提取。

你不用操心这些。说一句"读这个页面",剩下的它来。

开始使用

三个链接,够了。

  1. MCP 服务器文档 — 完整工具参考、所有参数、高级用法
  2. GitHub — 源代码,欢迎提 issue 和 PR
  3. Chrome 扩展 — 浏览器朗读必装,免费

五分钟配置。然后 Claude 就能把互联网读给你听。那些你收藏了却从没打开的文章,那些你一直说"有空再看"的论文,那些你只读了开头就关掉的万字长文。

通勤路上,全部消化掉。