mcpField
D
dompruner-mcp

dompruner-mcp

リモート
github.comブラウザ自動化21 週間前に更新
リポジトリ公式サイト

dompruner-mcp について

dompruner-mcpは、URLからページ本文を抽出し、レイアウト由来のノイズを除去するMCPサーバーです。モデルやAPIキーを必要とせず、任意のBM25セクション絞り込みで、必要なウェブ内容を扱うエージェントのワークフローを支援します。

主な機能

  1. 01ページ本文を抽出してレイアウトノイズを除去
  2. 02クエリによるBM25関連セクション絞り込み
  3. 03サイトマップ内のページ取得
  4. 04全文を返さずトークン削減を分析

活用シーン

  1. 01URLが分かっているページから必要な本文を取得
  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 ツリーの枝刈り

LLM のウェブパイプライン向け DOM AST ミドルウェアです。レイアウトのノイズ(ナビゲーション、スクリプト、サイドバー)を除去し、元のテキストをそのまま渡します。クエリを追加すると、BM25 で関連するセクションに絞り込めます。

LLM がウェブ取得ツールを使うと、生のページ 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 のツールの説明では、WebFetch より dompruner_fetch を優先するよう、すでにクライアントに指示しています。それでもクライアントがフォールバックする場合は、指示ファイルに次の内容を追加してください。

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_fetchURL を取得 → DOM で調整された Markdown を返します。省略可能な query を指定すると、BM25 によるセクション絞り込みが有効になります。
dompruner_sitemapsitemap.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 %p の差は、既知の見出しバイアスの制限範囲内です。

→ ベンチマーク全体 · アーキテクチャ


Crawl4AI との比較

Crawl4AI はクローラーフレームワークです。ブラウザー自動化、JS レンダリング、クリック/スクロール操作、JSON 抽出、ディープクロールに対応します。DomPruner は LLM コンテキストミドルウェアです。エージェントがすでに URL を把握している場合に、トークンコストを削減する単一目的のレイヤーです。

両者は異なる課題を解決します。 ただし、どちらも MCP エージェント内でウェブページを読み取るために使用できるため、比較には意味があります。

セットアップ
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 — サーバー不要
トークンをフィルタリングする設定コードでフィルターオブジェクトを渡します(BM25ContentFilter(user_query=...))不要 — query= を渡すだけです
ホールドアウト検証:DomPruner の調整セットに含まれていない5つのサイト

最も信頼性の高い比較です。DomPruner のパラメータ調整に使用されていない5つのサイト(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 の調整に使われていないサイトでは、同じ精度(96%)でトークン数を1.9分の1に削減します。

参考:調整用10ページセット(MDN、docs.python.org)

DomPruner の調整用ページで Crawl4AI の PruningContentFilter と比較すると、13.2倍小さく、精度が8 pp向上します(90% → 98%)。同じクエリを使用した Crawl4AI の BM25ContentFilter は、10ページ中5ページでほぼ空の出力を返します。これは、しきい値スイープ(0.0~0.10)で0.01に急激な境界があり、中間に最適値が見つからない、<dl>/<dt>/<dd> の定義リストを含むページにおける構造上の問題です。

→ すべての表としきい値スイープデータを含む比較全体


関連項目

  • dompruner-py — Python 移植版。LangChain 用の DomPrunerLoader、DomPrunerSitemapLoader、DomPrunerFetchTool を提供します。pip install dompruner。
  • LangChain integrations — dompruner-py がサードパーティーのウェブローダーとして掲載されています。

Glama Score

dompruner-mcp MCP サーバー


ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。