mcpField
D
dompruner-mcp

dompruner-mcp

远程服务
github.com浏览器自动化21 周前更新

关于 dompruner-mcp

dompruner-mcp 是一个 MCP 服务,可从 URL 提取原始页面文本并移除布局杂项。它适用于需要聚焦网页内容的 Agent 工作流,支持可选的 BM25 章节筛选,且无需模型或 API 密钥。

主要功能

  1. 01提取页面文本并移除布局噪声
  2. 02通过查询词使用 BM25 筛选相关章节
  3. 03获取站点地图中的页面
  4. 04分析令牌缩减情况而不返回完整内容

适用场景

  1. 01从已知网页获取聚焦后的文本
  2. 02将抓取内容限制为与问题相关的章节
  3. 03将站点地图页面处理为独立的精简文档

MCP 相关

该 MCP 服务提供 `dompruner_fetch`、`dompruner_sitemap` 和 `dompruner_analyze` 工具。它可通过 stdio 在本地运行,也可通过托管的 streamable HTTP 端点访问。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://dompruner-mcp.vercel.app/api/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmdompruner-mcp0.5.2

工具

2
参数类型必填说明
urlstring否要获取和优化的 URL。
querystring否搜索意图——提供后可启用 BM25+ 章节筛选。

详细介绍

dompruner-mcp

한국어 | English

DomPruner 的 DOM 树剪枝

面向大模型网页工作流的 DOM AST 中间件——剔除布局噪声(导航栏、脚本、侧边栏),并直接传递原始文本。添加查询即可通过 BM25 筛选相关章节。

当大模型使用网页抓取工具时,原始页面 HTML 会被转换为文本并传入模型上下文——其中往往包含数万词元的导航栏、侧边栏和模板内容,而模型并不需要这些内容。DomPruner 在 DOM 层面剔除这些内容,只将原始内容直接传递给模型。

调用行为
dompruner_fetch(url)剔除布局噪声 → 返回提取出的完整内容
dompruner_fetch(url, query)剔除布局噪声 → 使用 BM25 筛选相关章节(未匹配时回退到完整内容)
> [DomPruner] docs.python.org
> | Raw HTML  | 44,316 tokens |
> | DomPruner |  1,328 tokens |
> | Reduction |        97.0%  |
> Fetch: 194ms · Parse: 11.2ms

平均而言,与 WebFetch 相比,上下文词元减少 93.5%,端到端速度提升 45%。 → 完整基准测试


快速开始

无需安装,无需 API 密钥:

npx -y dompruner-mcp
Claude Code
{
  "mcpServers": {
    "dompruner": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "dompruner-mcp"]
    }
  }
}

将配置添加到项目根目录下的 .mcp.json,或添加到全局配置文件 ~/.claude/.mcp.json。运行 /mcp 进行验证。

Claude Desktop

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):

{
  "mcpServers": {
    "dompruner": {
      "command": "npx",
      "args": ["-y", "dompruner-mcp"]
    }
  }
}
Cursor / Windsurf / 其他 MCP 客户端
{
  "mcpServers": {
    "dompruner": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "dompruner-mcp"]
    }
  }
}
远程 HTTP(无需安装,始终保持最新)

适用于支持 HTTP 传输的客户端——无需安装 Node.js,始终运行最新版本:

{
  "mcpServers": {
    "dompruner": {
      "url": "https://dompruner-mcp.vercel.app/api/mcp"
    }
  }
}
LangChain / LangGraph

langchain-mcp-adapters 可自动将任意 MCP stdio 服务封装为 LangChain 工具:

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({
    "dompruner": {
        "command": "npx",
        "args": ["-y", "dompruner-mcp"],
        "transport": "stdio",
    }
})
tools = await client.get_tools()
确保 AI 始终使用 DomPruner

DomPruner 的工具描述已告知客户端优先使用 dompruner_fetch,而非 WebFetch。如果客户端仍会回退,请将以下内容添加到其指令文件中:

When retrieving a URL, always use dompruner_fetch instead of WebFetch.
- URL known → dompruner_fetch(url, query?)
- URL unknown → search for the URL first, then dompruner_fetch(url)
客户端指令文件
Claude CodeCLAUDE.md(项目)或 ~/.claude/CLAUDE.md(全局)
Cursor.cursorrules
Windsurf.windsurfrules
Cline.clinerules
GitHub Copilot.github/copilot-instructions.md

工具

工具描述
dompruner_fetch抓取 URL → 经 DOM 优化的 Markdown。可选的 query 用于启用 BM25+ 章节筛选。
dompruner_sitemap抓取 sitemap.xml 中的所有页面 → 每个页面返回一个优化后的 Document。
dompruner_analyze生成 URL 的词元缩减报告,不包含完整内容。

→ 完整工具参考


基准测试摘要

与 WebFetch 对比(实时比较,Claude Haiku)

在相同条件下(相同模型、系统提示词和工具定义),使用 Anthropic 的 web_fetch_20260209 服务端工具进行测量。→ 完整方法说明

指标web_fetch 工具DomPruner
平均上下文词元数~15,735~1,019(减少 93.5%)
答案质量(10 个查询)9 / 108 / 10
平均响应时间5,811 ms3,168 ms(快 45%)
内容保真度原始页面内容(完整 HTML → 文本)从 DOM 提取的原始文本
额外 API 密钥 / 基础设施否否
BM25 部分准确率(基于快照,确定性)
集合页面数平均缩减率部分保留率
调优集(MDN、docs.python.org)1098.0%98.0%
验证集(留出站点)598.7%96.0%

headingBoost=2.0 是通过在调优集上进行参数扫描(1.0–3.0)选出的。验证集使用了调优集中未出现的 5 个站点(react.dev、typescriptlang.org、expressjs.com、doc.rust-lang.org、nextjs.org),以确认结果不存在过拟合。2 个百分点的差距在已知的标题偏差局限范围内。

→ 完整基准测试 · 架构


与 Crawl4AI 对比

Crawl4AI 是一个爬虫框架,提供浏览器自动化、JS 渲染、点击/滚动交互、JSON 提取和深度爬取。DomPruner 是 LLM 上下文中间件,是一个单一用途的层,可在 Agent 已知 URL 时降低 token 成本。

它们解决的是不同的问题。 但两者都可用于在 MCP Agent 中读取网页,因此比较是有意义的。

设置
Crawl4AIDomPruner
安装pip install crawl4ai && crawl4ai-setup(Chromium 约 300 MB)npx -y dompruner-mcp
是否需要浏览器默认安装包含 Chromium;也可使用仅 HTTP 模式否(SSR;仅在检测到 CSR 时使用 Playwright)
MCP 服务需要运行 Crawl4AI Docker 服务npx -y dompruner-mcp——无需服务
token 过滤配置在代码中传入过滤器对象(BM25ContentFilter(user_query=...))零配置——只需传入 query=
留出验证:DomPruner 调优集中未包含的 5 个站点

最有说服力的比较:这 5 个站点未用于调优 DomPruner 的参数(react.dev、typescriptlang.org、expressjs.com、doc.rust-lang.org、nextjs.org)。两种工具使用相同的查询。

页面C4AI BM25ContentFilterDomPruner
React useEffect4,2751,257
TypeScript narrowing2,7821,214
Express routing1,9381,799
Rust ownership1,832718
Next.js layouts1,5051,379
总计12,3326,367
准确率96%96%

在 DomPruner 未参与调优的站点上:token 数减少至 1.9 倍以下,准确率相同(96%)。

补充参考:10 页调优集(MDN、docs.python.org)

在 DomPruner 自己的调优页面上,与 Crawl4AI PruningContentFilter 相比:内容缩小 13.2 倍,准确率高 8 个百分点(90% → 98%)。Crawl4AI BM25ContentFilter 使用相同查询时,在 10 个页面中的 5 个上几乎返回空结果——这是 <dl>/<dt>/<dd> 定义列表页面的结构性问题;阈值扫描(0.0–0.10)显示,在 0.01 处出现断崖式变化,没有中间最优值。

→ 完整对比,包括所有表格和阈值扫描数据


相关

  • dompruner-py — Python 移植版。为 LangChain 提供 DomPrunerLoader、DomPrunerSitemapLoader、DomPrunerFetchTool。pip install dompruner。
  • LangChain 集成 — dompruner-py 已列为第三方网页加载器。

Glama 评分

dompruner-mcp MCP server


许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。