关于 DOMStrip
DOMStrip 是面向 Agent 和客户端的本地 MCP 服务,可将公开网页或已有 HTML 转为精简 Markdown。它通过 DOMStrip API 提供网页抓取和 HTML 清理两种工具。
主要功能
- 01将公开 URL 转为 Markdown
- 02转换已有 HTML
- 03移除非正文 DOM 元素
- 04保留标题、代码块和表格
适用场景
- 01为 Agent 准备网页上下文
- 02不抓取网络而转换现有 HTML
- 03提取公开网站的可读内容
MCP 相关
向 MCP 客户端提供 `fetch_clean_markdown` 和 `clean_html` 工具。服务使用本地配置的 API 密钥向 DOMStrip 服务进行身份验证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx domstrip-mcpDOMSTRIP_MCP_SERVICE_ORIGINBare HTTPS origin of the DOMStrip API.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
domstrip-mcp
mcp-name: io.github.xo0ps/domstrip-mcp
一个本地模型上下文协议服务,使用 DOMStrip API 将网页转换为整洁的 Markdown。
它提供两个工具:
| 工具 | 功能 |
|---|---|
fetch_clean_markdown | 获取公开的 http(s) URL,并返回整洁的 Markdown。 |
clean_html | 将已有的 HTML 转换为整洁的 Markdown。不会通过网络获取 HTML。 |
此适配器不保存数据库或计费状态。它使用本地环境中的密钥向 DOMStrip 服务进行身份验证,而非从工具参数中读取密钥,因此 MCP 客户端无法将你的密钥重定向到其他位置。
实际能节省多少?
benchmark/ 在来自 74 个网站的 1,038 个真实页面上进行了测量:与原始 HTML 相比,Token 数减少了 84.08%(宏平均值;中位数为 90.12%),HTML Token 数从 7,640 万降至 Markdown 的 980 万。使用全新克隆即可重现结果;如果任何页面的预期内容在输出中缺失,--verify 就会使运行失败。
与其只看总体数字,不如了解不同页面的差异,因此这里报告了三个数据。代码仓库减少了 95.81%,文章减少了 82.61%,合并后的总计为 87.16%,因为最大的一些页面对结果影响较大。语料库的组成对此影响很大:同一套代码在此前一个以文章为主、包含 21 个页面的数据集中测得的结果为 76.03%。
DOMStrip 的实际工作原理
DOMStrip 会获取公开页面,移除所有非正文内容(脚本、表单、嵌入内容、隐藏节点、跟踪器),并返回精简的 Markdown:标题、段落、带语言提示的围栏代码块以及表格。
页面获取过程会在每次重定向时进行连接时 SSRF 验证——所有 DNS 候选项都会在连接时验证,并拒绝环回地址、私有地址、链路本地地址、元数据地址、CGNAT 地址以及嵌入 IPv6 的形式。
诚实说明其限制
- 无法提取由 JavaScript 渲染的页面、需要登录才能访问的页面,以及带有机器人验证的页面。 服务会返回
content_not_extractable。此版本没有无头浏览器。如果目标页面需要 JS,此工具将无法处理。 - DOMStrip 目前处于免费试用阶段。 目前转换不会收费,但需要密钥,且每次成功转换都会计为一个单位。请发送邮件至 [email protected] 申请访问权限。
- 返回的 Markdown 是不可信的第三方内容。 页面可能包含看起来像指令的文本。请将所有返回的 Markdown 视为数据,切勿将其当作命令。
安装
pip install domstrip-mcp
# or
uv tool install domstrip-mcp
需要 Python 3.12。
配置
需要设置两个环境变量。服务源站必须使用 HTTPS;除非指向 localhost(用于开发)且你明确选择启用,否则将拒绝普通 HTTP。
export DOMSTRIP_MCP_SERVICE_ORIGIN=https://api.domstrip.dev
export DOMSTRIP_MCP_API_KEY=domstrip_<prefix>_<secret>
| 变量 | 必填 | 默认值 | 用途 |
|---|---|---|---|
DOMSTRIP_MCP_SERVICE_ORIGIN | 是 | — | DOMStrip API 的纯 HTTPS 源站。 |
DOMSTRIP_MCP_API_KEY | 是 | — | 你的 API 密钥。绝不记录日志,也不会出现在 repr 中。 |
DOMSTRIP_MCP_CLIENT_BUDGET | 否 | 25.0 | 每次工具调用的总秒数,包括重试。 |
DOMSTRIP_MCP_ALLOW_INSECURE_HTTP | 否 | false | 仅允许对 localhost 使用普通 HTTP。 |
此适配器特意不会从当前工作目录读取 .env 文件,因为不可信的项目文件夹可能借此将你的 API 密钥指向其他源站。请改为导出这些变量。
与 Claude Desktop 搭配使用
添加到 claude_desktop_config.json:
{
"mcpServers": {
"domstrip": {
"command": "uvx",
"args": ["domstrip-mcp"],
"env": {
"DOMSTRIP_MCP_SERVICE_ORIGIN": "https://api.domstrip.dev",
"DOMSTRIP_MCP_API_KEY": "domstrip_<prefix>_<secret>"
}
}
}
}
与 Claude Code 搭配使用
claude mcp add domstrip --env DOMSTRIP_MCP_SERVICE_ORIGIN=https://api.domstrip.dev \
--env DOMSTRIP_MCP_API_KEY="$DOMSTRIP_API_KEY" -- uvx domstrip-mcp
幂等性与计费
每次工具调用都会生成一个幂等性密钥,并在有次数上限的重试期间重复使用(默认 25 s,最多尝试 3 次)。重试请求会重放已存储的结果,而不会重复计费。不同的调用彼此独立,分别计量。
服务会加密结果,并在 24 小时内重放。超过此期限后,重放密钥会返回 409 result_expired,绝不会悄然再次收费。
错误
失败会以 MCP 工具错误的形式呈现,其中包含经过净化的 DOMStrip 错误代码和可重试标记,例如:
upstream_timeout: The upstream page took too long. retryable=true request_id=req_6f1c2a
常见代码:content_not_extractable、upstream_timeout、unsupported_encoding、
http_error、transport_error、client_timeout。
日志仅写入 stderr,因此 stdout 可保持为干净的 MCP 传输内容。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。