DOMStrip について
DOMStripは、エージェントやクライアント向けのローカルMCPサーバーで、公開ウェブページや既存のHTMLを簡潔なMarkdownに変換します。DOMStrip APIを利用し、URLの取得とHTMLの変換を別々のツールで提供します。
主な機能
- 01公開URLをMarkdownに変換
- 02既存HTMLを変換
- 03本文以外のDOM要素を除去
- 04見出し、コードブロック、表を保持
活用シーン
- 01エージェント用のウェブページ情報を準備
- 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
Model Context Protocol のローカルサーバーです。DOMStrip API を使用して、Web ページを整った Markdown に変換します。
次の 2 つのツールを公開します。
| ツール | 機能 |
|---|---|
fetch_clean_markdown | 公開されている http(s) URL を取得し、整った Markdown を返します。 |
clean_html | すでにお持ちの HTML を整った Markdown に変換します。HTML のネットワーク取得は行いません。 |
このアダプターはデータベースや課金状態を保持しません。ローカル環境のキーを使用して DOMStrip サービスに認証します。キーをツール引数から受け取ることはないため、MCP クライアントがキーを別の場所に転送することはできません。
実際にどれくらい削減できますか?
benchmark/ では、74 サイトの実際の 1,038 ページで測定しています。
生の HTML と比べてトークン数を 84.08% 削減(マクロ平均。中央値は 90.12%)し、HTML の 7,640 万トークンを Markdown の 980 万トークンに減らします。クリーンなクローンから再現でき、--verify を指定すると、出力に期待されるコンテンツが含まれていないページがあった場合に実行が失敗します。
全体の数値だけでなく、そのばらつきにも注目する価値があります。そのため、3 つの数値を示しています。リポジトリでは 95.81%、記事では 82.61% 削減されます。すべてをまとめた合計では、大きなページの割合が高いため 87.16% となります。コーパスの構成は数値に大きく影響します。同じコードを以前の記事中心の 21 ページのセットで測定した場合、削減率は 76.03% でした。
DOMStrip の実際の処理
DOMStrip は公開ページを取得し、コンテンツ以外のすべて(スクリプト、フォーム、埋め込みコンテンツ、非表示ノード、トラッカー)を除去して、見出し、段落、言語ヒント付きのフェンスコードブロック、表を含む簡潔な Markdown を返します。
ページの取得時には、リダイレクトの各段階で接続時に SSRF を検証します。すべての DNS 候補を接続時に検証し、ループバック、プライベート、リンクローカル、メタデータ、CGNAT、および IPv6 埋め込み形式へのアクセスを拒否します。
正直な制限事項
- JavaScript で描画されるページ、ログインが必要なページ、ボット対策のチャレンジがあるページからは抽出できません。 サービスは
content_not_extractableを返します。このバージョンにはヘッドレスブラウザーがありません。対象のページで JS が必要な場合、このツールは使えません。 - DOMStrip は現在、無料のパイロット運用中です。 変換はまだ課金されませんが、キーが必要で、変換が成功するたびに 1 ユニットとしてカウントされます。[email protected] からアクセスを申請してください。
- 返される Markdown は、信頼できないサードパーティーのコンテンツです。 ページには指示のように見えるテキストが含まれていることがあります。返された Markdown はすべてデータとして扱い、コマンドとして扱わないでください。
インストール
pip install domstrip-mcp
# or
uv tool install domstrip-mcp
Python 3.12 が必要です。
設定
2 つの環境変数が必要です。サービスのオリジンには 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 のみを許可します。 |
信頼できないプロジェクトフォルダーから API キーを別のオリジンに転送される可能性があるため、このアダプターは意図的に、現在の作業ディレクトリにある .env ファイルを読み込みません。代わりに環境変数をエクスポートしてください。
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
冪等性と課金
ツールを呼び出すたびに冪等性キーを 1 つ生成し、上限付きの再試行(デフォルトは 25 秒、3 回)でも同じキーを再利用します。再試行されたリクエストは保存済みの結果を再生するため、二重に課金されません。呼び出しを分けた場合は、それぞれ別個に計測されます。
サービスは結果を暗号化して 24 時間再生できるようにします。それ以降にキーを再生すると 409 result_expired が返され、暗黙に再課金されることはありません。
エラー
失敗は、サニタイズされた DOMStrip エラーコードと再試行可能かどうかを示すフラグを含む MCP ツールエラーとして通知されます。たとえば、次のようになります。
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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。