safe-url-reader-mcp
Provides tools for reading public Xiaohongshu (小红书) notes and pages, extracting titles, content, authors, images, public attachment metadata, and optional first-screen comments via anonymous SSR parsing without login or cookies.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@safe-url-reader-mcpCan you fetch https://example.com/article and summarize it?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Safe URL Reader MCP
一个部署在 Cloudflare Workers 上的只读远程 MCP,用于读取公开 URL,并对特定高风控站点使用更保守的专用策略。
当前策略:
小红书
xiaohongshu.com/xhslink.com/xhslink.cn:走专用匿名 SSR 解析,不登录、不使用 Cookie,不自动重试。其他公网 HTTP(S) URL:默认走轻量直接 GET + 正文提取,不执行 JavaScript,不发送 Cookie 或 Authorization。
read_url永远不会自动升级到 Jina。只有用户明确要求使用 Jina / Jina Reader / Jina MCP 时,才使用
read_url_with_jina。read_url_with_jina会在服务端请求第三方 Jina 之前硬性拒绝xiaohongshu.com、xhslink.com、xhslink.cn及其所有子域名。诊断工具:
debug_url(连接/超时)与debug_xhs_note(小红书页面结构)。
MCP 工具
read_url
默认读取入口。服务端自动按域名分流。
参数:
url:公开 HTTP(S) URLcomments:仅小红书生效,默认 0,最多 5 条公开页首屏评论max_chars:仅普通网页生效,默认 20000,最大 50000
普通读取失败时不会自动调用 Jina。
read_url_with_jina
仅显式调用的 Jina Reader fallback。
只有当用户明确要求“使用 Jina”“用 Jina Reader / Jina MCP”或直接点名 read_url_with_jina 时才应调用。
特性:
不作为
read_url的自动 fallback目标 URL 会发送给第三方 Jina Reader 服务
不发送用户 Cookie 或登录态
使用
DNT: 1小红书域名及其所有子域名在服务端请求 Jina 前直接拒绝
默认最多返回 20000 字,最大 50000 字
read_xhs_note
保留的兼容工具。普通情况下优先使用 read_url。
debug_url
仅在用户明确要求诊断连接、超时、HTTP 状态或重定向时使用。
对于小红书采用保守诊断策略:
不自动 retry
不尝试切换 UA
不自动切换 HTTP/HTTPS
每个重定向节点只请求一次
只记录请求链与响应头信息,不额外抓取正文
debug_xhs_note
仅在用户明确要求诊断小红书页面结构时使用,用于排查正文、图片、附件等 SSR 字段变化。
Related MCP server: mcp-jina-reader
安全策略
通用 URL Reader 包含以下限制:
只允许 HTTP / HTTPS
拒绝 localhost、常见私网 IP、link-local、云 metadata、保留地址
每次重定向都重新校验目标 URL
最多 5 次重定向
普通网页请求默认 15 秒超时
最大响应体 5 MB,并在流式读取过程中执行上限
仅读取 HTML、XHTML、纯文本和 JSON
不支持 POST / PUT / DELETE
不发送 Cookie
不发送 Authorization
不执行页面 JavaScript
小红书额外采用低频、匿名、无 Cookie 的专用解析路径。
Jina fallback 额外遵循:
绝不自动调用
小红书域名硬禁止
不携带用户登录态
只在用户明确指定时把目标 URL 交给第三方 Jina Reader
自动化测试与 CI
运行:
npm test
npm run typecheck当前自动化测试覆盖:
通用 HTML 正文读取与小红书域名/子域名识别
localhost、私网、link-local、IPv6 loopback 等 SSRF 拦截
重定向目标重新校验,避免跳转到受限地址
5 MB 响应上限与不支持的 Content-Type 拒绝
Jina fallback 正常读取、正文截断
Jina 对小红书主域名及子域名在发出第三方请求前硬拒绝
debug_url只检查响应信息、不读取最终正文debug_url重定向逐跳单次请求小红书
debug_url不 retry、不切换 UA/协议小红书 SSR 数据、图片等原有解析能力
MCP 工具列表与 Worker
/mcp边界行为
GitHub Actions 会在 main push 和 Pull Request 时自动执行:
npm ci
npm test
npm run typecheckCloudflare Worker 与命名兼容
GitHub 仓库及 npm package 已统一为 safe-url-reader-mcp / safe-url-reader-mcp-worker。
wrangler.jsonc 中当前线上 Worker 名仍有意保留为:
xhs-read-mcp这是为了保持现有 workers.dev 地址和已配置的 MCP 客户端兼容。只改 GitHub 仓库名不需要修改 ChatGPT 中现有的服务器 URL。
package-lock.json 应与 package.json 的 package 名称和版本保持同步;它不决定 Cloudflare Worker 地址。
MCP 端点固定为:
/mcp本地开发
npm install
npm test
npm run typecheck
npm run dev部署:
npm run deploy设计原则
这个项目的重点不是最大化抓取能力,而是:
默认只读
尽量少请求
不携带登录态
对高风控站点使用单独策略
对通用 URL 做必要 SSRF 与资源限制
页面无法安全、稳定读取时宁可失败,不自动升级到 Jina、Playwright、登录态或高频重试
如确实需要更强抓取能力,由用户显式选择 Jina fallback
小红书支持范围
当前小红书解析会从公开页面 SSR 状态中提取:
标题
正文
作者
图片
公开页面可见附件元数据
可选少量首屏评论
不会:
登录
使用或保存 Cookie
发布、点赞、收藏、评论
自动抓评论分页
使用 Playwright
为了绕过限制进行高频重试
将小红书 URL 发送给 Jina Reader
项目来源说明
小红书解析思路参考了 usubamayoi/xhs-read-mcp 对公开 HTML / __INITIAL_STATE__ 的处理方式,但当前 Cloudflare Worker 版本为独立实现,并已扩展为通用 Safe URL Reader。
This server cannot be deployed
Maintenance
Related MCP Connectors
Jina AI Reader/Search MCP — turn any URL into clean LLM-ready markdown, plus web search.
Screenshot, PDF, OG-image, and page extraction (markdown/JSON) over MCP. Bearer key or x402.
Turn any public website into an MCP server for agents to search, read and navigate.
Read any web page as clean Markdown for AI agents: fetch, search, metadata, links. SSRF-safe.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server that fetches web pages and extracts clean, AI-friendly Markdown content using Mozilla Readability. It provides secure web access for LLMs with built-in SSRF protection and automated content cleaning for improved context retrieval and summarization.178 npmMIT
- AlicenseNot gradedqualityBmaintenanceJina AI Reader/Search MCP that turns any URL into clean LLM-ready markdown and provides web search.351 npmMIT
- AlicenseAqualityBmaintenanceEnables web fetching, web search, and Metis verification for AI agents via a single MCP endpoint.347 PyPI1MIT
- FlicenseNot gradedqualityCmaintenanceA read-only MCP server that fetches hard-to-scrape web pages via an anti-detection browser and returns clean, token-efficient markdown. It exposes a single fetch tool that converts pages to markdown without requiring approval prompts.-