无需 KYC — 无身份证、无自拍、无证件。加密货币支付:BTC, USDT, USDC, ETH, SOL, LTC
语言: 简体中文
获取 API 密钥

文档 · MCP

面向 Claude、Cursor 及其他 MCP 客户端的网页读取 MCP server

为任意 MCP 客户端提供一个 read_url 工具,把链接转成干净的 Markdown。该 server 是一个简短的 Python 文件,在你自己的机器上运行;你的 API 密钥保存在它的环境中。

最后更新:

快速回答

如何通过 MCP 为 Claude Desktop 或 Cursor 添加网页读取工具?

运行一个小型 MCP server,暴露一个调用 WebReaderAPI 的 read_url 工具,然后在客户端的 MCP 设置中注册它,并把密钥放在 env 中。之后模型就能把任意公开网页读取为干净的 Markdown。每次网页读取消耗 1 积分,使用浏览器时为 2 积分,截至 2026 年 10 月,起步价为 US$0.07/千页。无需 KYC;使用加密货币支付。

MCP server 概览

语言Python 3.10+,使用 mcp 和 httpx 包
传输方式stdio:客户端以本地进程方式启动该 server
工具read_url(url, max_chars) → 标题、来源 URL,然后是页面的 Markdown
为什么不用 web_fetchClaude Code 和 OpenClaw 已内置一个同名工具
密钥在 server 的环境变量中从 WEBREADER_API_KEY 读取
计费1 积分 = 读取 1 个页面且无需浏览器;当页面需要浏览器渲染 JavaScript 时为 2 积分。失败的请求,或被网站 robots.txt 拒绝的请求,不扣费

为什么用 read_url 工具而不是 web_fetch?

因为两个同名工具会让客户端和模型都混淆。Claude Code 和 OpenClaw 已内置一个名为 web_fetch 的工具。一个不同的名字 read_url 和清晰的描述,能让模型在需要网页正文(包括 JavaScript 页面和 PDF)时选择我们的工具。

该工具返回文本,而不是 JSON。模型处理简短的头部和 Markdown 比处理嵌套字段更好,而且头部会让来源 URL 始终可见,以便答案引用。

webreader_mcp.py
import os

import httpx
from mcp.server.fastmcp import FastMCP

API = "https://webreaderapi.com/api/v1/read"
KEY = os.environ["WEBREADER_API_KEY"]
mcp = FastMCP("webreaderapi")


@mcp.tool()
def read_url(url: str, max_chars: int = 20000) -> str:
    """Read a public web page and return its main content as Markdown.

    Use it when the user gives a link or when a page must be read to answer.
    max_chars caps the length of the returned text (1,000 to 500,000).
    """
    params = {"url": url, "max_chars": max(1000, min(int(max_chars), 500000))}
    try:
        resp = httpx.get(API, params=params, headers={"Authorization": "Bearer " + KEY}, timeout=75)
    except httpx.HTTPError as exc:
        return "Network error while reading the page: " + str(exc)
    body = resp.json()
    if resp.status_code != 200:
        err = body.get("error", {})
        return "Could not read the page: " + err.get("code", str(resp.status_code)) + ". " + err.get("message", "")
    title = body.get("title") or url
    return "# " + title + "\nSource: " + body.get("final_url", url) + "\n\n" + body.get("markdown", "")


if __name__ == "__main__":
    mcp.run()

如何安装和测试该 server?

创建一个虚拟环境,安装 mcp 和 httpx,并保存上面的文件。mcp 包是 Model Context Protocol 的官方 Python SDK;FastMCP 会把带类型标注的 Python 函数转成工具,并以 docstring 作为其描述。

在接入客户端之前,先在终端中设置好密钥并运行一次该文件。它会静默地在 stdin 上等待客户端,这意味着它已正确启动;按 Ctrl+C 停止它。

安装
python -m venv .venv
. .venv/bin/activate
pip install "mcp[cli]" httpx
WEBREADER_API_KEY="your-key" python webreader_mcp.py

如何在 Claude Desktop 中注册?

打开 Claude Desktop 的开发者设置,编辑 claude_desktop_config.json,并在 mcpServers 下添加一个条目。使用绝对路径:虚拟环境中的 Python 和 server 文件。把密钥放在 env 中,这样它永远不会出现在工具参数或对话里。重启 Claude Desktop,read_url 就会出现在工具列表中。

Cursor 从它自己的 MCP 配置文件中读取相同的 mcpServers 结构,Claude Code 可以用它的 claude mcp add 命令注册同一条命令。关于 OpenClaw,请参阅 OpenClaw 页面。

claude_desktop_config.json
{
  "mcpServers": {
    "webreaderapi": {
      "command": "/home/you/webreader/.venv/bin/python",
      "args": ["/home/you/webreader/webreader_mcp.py"],
      "env": { "WEBREADER_API_KEY": "your-key" }
    }
  }
}

如何让页面保持在模型的上下文中?

降低 max_chars。默认的 20,000 字符对大多数文章来说足够了,并能防止长页面占满上下文。模型在一个回答中读取多个页面时,每页 8,000 到 12,000 字符效果更好。

让模型只读取它需要的页面,而不是它看到的每一个链接。在项目说明中加入一句简短的话,例如“每个问题最多读取三个页面”,就能同时控制成本和上下文。

当站点拒绝读取时会发生什么?

工具会返回一条带有错误代码的简短消息,例如 blocked_by_robots 或 target_refused,并且不会计费。我们遵守 robots.txt:我们的爬虫以 WebReaderAPI 标识自身,遵循专为其或为所有爬虫编写的规则,不读取网站禁止的页面。被拒绝的页面不扣费。如果网站拒绝我们的请求,我们会返回其答复:我们从不破解 CAPTCHA、不登录账户,也不试图绕过封锁或付费墙。然后模型可以说该页面无法供自动化读取器使用,并改用其他来源。

MCP server:常见问题

WebReaderAPI 有官方 MCP 包吗?

没有。本页面上的文件就是集成:40 行代码,你可以自己阅读、修改和运行。无需从我们这里安装任何东西,你的密钥除了在调用我们的 API 时,永远不会离开你的机器。

模型能用这个 server 搜索网页吗?

不能。read_url 读取的是你或模型已经拥有地址的页面。将其与你客户端提供的任意搜索工具配合使用;模型先搜索,然后读取重要的页面。

用这个运行一个助手需要多少费用?

每次网页读取消耗 1 积分,需要浏览器时为 2 积分。一个每天读取 50 个页面的助手每月大约消耗 1,500 积分,而 10,000 个网页(US$3.75)大约能覆盖六个月。

该 server 能离线工作吗?

不能。它每次读取页面都会调用 https://webreaderapi.com/api/v1/read,因此需要互联网访问和有效的密钥。

低至 US$0.07/千页 · 无需 KYC

获取 API 密钥