Better Fetch について
Better Fetchは、Webページの抽出やドキュメントサイトのクロールを行う開発者・研究者向けMCPサーバーです。リンクの絞り込みと本文の整理を行い、目次付きのMarkdownにまとめます。
主な機能
- 01深度とページ数を指定したクロール
- 02単一ページの抽出
- 03ドメインとURLパターンによる絞り込み
- 04本文のクリーニングとセクション検出
- 05リンクとコードを保持したMarkdown出力
- 06目次とメタデータの生成
活用シーン
- 01複数ページの技術ドキュメント収集
- 02リンクをたどらないページ抽出
- 03RAGや要約向けのWebコンテンツ準備
MCP 対応
MCPクライアント向けに fetch_website_nested と fetch_website_single ツールを提供し、サイトのクロールや単一ページの抽出を行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細

Better Fetch - 高度なウェブコンテンツ MCP サーバー
ネストされた URL のクロール機能を備え、ウェブコンテンツをインテリジェントに取得・処理する強力な Model Context Protocol(MCP)サーバーです。あらゆるドキュメントサイトやウェブリソースを、AI による利用や分析に最適な、クリーンで構造化された Markdown ファイルに変換します。
🚀 主な機能
🕸️ スマートなウェブクロール
- ネストされた URL の取得:リンク先のページを自動的に検出し、設定可能な深さまでクロールします
- 単一ページモード:シンプルな単一ページのコンテンツ抽出にも対応します
- ドメインフィルタリング:同じドメイン内に限定するか、ドメインをまたいだクロールを許可します
- パターンマッチング:正規表現パターンに基づいて URL を含める、または除外します
🧠 インテリジェントなコンテンツ処理
- コンテンツのクリーンアップ:広告、ナビゲーション、スクリプトなどのノイズを自動的に除去します
- スマートなセクション検出:主要なコンテンツ領域(
<main>、<article>、.content)を特定します - タイトルの自動生成:ページタイトルと URL の構造に基づいて、適切なセクション見出しを生成します
- 目次:適切な階層構造を持つ整理された目次を作成します
📝 高度な Markdown 生成
- クリーンな書式設定:HTML を適切に構造化された Markdown に変換します
- コードブロックの保持:コードスニペットや技術コンテンツの書式を維持します
- リンクの保持:重要なリンクをすべて適切な Markdown 構文で維持します
- メタデータの統合:ソース URL、生成日時、サイト情報を含めます
⚙️ 高い設定自由度
- クロール深度の制御:クロールする階層の最大数を設定します(デフォルト:2)
- ページ数の上限:処理するページ数の上限を設定します(デフォルト:50)
- タイムアウト設定:リクエストのタイムアウトを設定できます
- 節度あるクロール:リクエスト間に組み込みの待機時間を設けます
- エラー処理:リクエストの失敗や無効な URL を適切に処理します
📋 利用可能なツール
1. fetch_website_nested
ネストされた URL を処理する、包括的なウェブクロールです。
パラメーター:
url(必須):クロールを開始する URLmaxDepth(任意、デフォルト:2):クロール深度の上限maxPages(任意、デフォルト:50):処理するページ数の上限sameDomainOnly(任意、デフォルト:true):同じドメイン内に制限するかどうかexcludePatterns(任意):除外する正規表現パターンの配列includePatterns(任意):含める正規表現パターンの配列timeout(任意、デフォルト:10000):リクエストのタイムアウト(ミリ秒)
2. fetch_website_single
シンプルな単一ページのコンテンツ抽出です。
パラメーター:
url(必須):取得する URLtimeout(任意、デフォルト:10000):リクエストのタイムアウト(ミリ秒)
💡 使用例
📚 ドキュメントの処理
- API ドキュメント:REST API ドキュメント、SDK ガイド、技術リファレンスを変換します
- フレームワークのドキュメント:React、Vue、Angular など、あらゆるフレームワークのドキュメントを処理します
- ライブラリガイド:ライブラリのドキュメントサイトから包括的なガイドを抽出します
- チュートリアルシリーズ:複数のパートに分かれたチュートリアルを、整理された単一のドキュメントにまとめます
🔍 コンテンツ分析とリサーチ
- 競合分析:競合他社のドキュメントや機能の説明を収集します
- 市場調査:関連する複数のページから製品情報を抽出します
- 学術研究:ウェブ上の研究資料を収集して整理します
- ナレッジベースの作成:ウェブ上に散在するコンテンツを構造化されたナレッジベースに変換します
🤖 AI トレーニングとコンテキスト
- LLM コンテキストの準備:AI モデルのトレーニング用に、整然と構造化されたコンテンツを作成します
- RAG システムへの入力:検索拡張生成に使用する高品質なドキュメントを生成します
- チャットボットのナレッジ:カスタマーサービスボット向けに包括的なナレッジベースを構築します
- コンテンツの要約:自動要約タスク用にウェブコンテンツを準備します
🛠️ インストールとセットアップ
npm からのクイックインストール(推奨)
Better Fetch を使う最も簡単な方法は npx を使用することです。MCP クライアントの設定に以下を追加するだけです。
Claude Desktop の場合 - claude_desktop_config.json に追加します:
{
"mcpServers": {
"better-fetch": {
"command": "npx",
"args": ["-y", "@infero.mcp/better-fetch"]
}
}
}
VS Code MCP Extension の場合:
{
"better-fetch": {
"command": "npx",
"args": ["-y", "@infero.mcp/better-fetch"]
}
}
これにより、手動でのインストールやビルド手順なしで、最新バージョンが自動的にダウンロードされて実行されます。
Smithery 経由でのインストール
Smithery 経由で Claude Desktop に Better Fetch を自動的にインストールするには:
npx -y @smithery/cli install @infero.mcp/better-fetch --client claude
前提条件
- Node.js 18+
- npm または yarn
- MCP 互換クライアント(Claude Desktop、MCP 拡張機能を備えた VS Code など)
ステップ 1:クローンしてインストール
git clone https://github.com/flutterninja9/better-fetch.git
cd better-fetch
npm install
ステップ 2:プロジェクトをビルド
npm run build
ステップ 3:サーバーをテスト(任意)
# Quick test
npm run dev
# Or run comprehensive tests
node test-mcp.js
ステップ 4:MCP クライアントを設定
Claude Desktop の場合(推奨 - npm 経由):
claude_desktop_config.json に追加します:
{
"mcpServers": {
"better-fetch": {
"command": "npx",
"args": ["-y", "@infero.mcp/better-fetch"]
}
}
}
VS Code MCP Extension の場合(推奨 - npm 経由):
{
"better-fetch": {
"command": "npx",
"args": ["-y", "@infero.mcp/better-fetch"]
}
}
カスタム MCP クライアントの場合(npm 経由):
{
"name": "better-fetch",
"command": "npx",
"args": ["-y", "@infero.mcp/better-fetch"]
}
手動インストール(代替方法)
ローカルでインストールしてビルドする場合:
Claude Desktop の場合:
{
"mcpServers": {
"better-fetch": {
"command": "node",
"args": ["/absolute/path/to/better-fetch/dist/server.js"],
"env": {
"NODE_ENV": "production"
}
}
}
}
VS Code MCP Extension の場合:
{
"better-fetch": {
"command": "node",
"args": ["/absolute/path/to/better-fetch/dist/server.js"]
}
}
📖 使用例
基本的なドキュメントのクロール
Fetch all the web contents from this Flutter Shadcn UI documentation site:
https://flutter-shadcn-ui.mariuti.com/
Use nested fetching with a maximum depth of 3 levels and process up to 100 pages.
高度な設定
Fetch content from the React documentation but exclude any URLs containing 'api' or 'reference' and only process pages containing 'tutorial' or 'guide':
URL: https://react.dev
Max Depth: 2
Exclude Patterns: ["/api/", "/reference/"]
Include Patterns: ["/tutorial/", "/guide/"]
Max Pages: 30
単一ページの抽出
Extract the content from this specific page only:
https://nextjs.org/docs/getting-started/installation
Use single page mode to avoid crawling related links.
📄 出力例
サーバーは、以下の構造で包括的な Markdown ファイルを生成します。
# Site Name Documentation
*Scraped from: https://example.com*
*Generated on: 2024-01-15T10:30:00.000Z*
## Table of Contents
- [Getting Started](#getting-started)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [API Reference](#api-reference)
- [Core Functions](#core-functions)
---
## Getting Started
*Source: [https://example.com/getting-started](https://example.com/getting-started)*
[Clean markdown content here...]
---
## Installation
*Source: [https://example.com/installation](https://example.com/installation)*
[Installation instructions in markdown...]
完全な例については、output.md を参照してください。実際のドキュメントサイトを処理したときのサーバーの出力例が記載されています。
🔧 開発
プロジェクト構成
better-fetch/
├── src/
│ └── server.ts # Main server implementation
├── dist/ # Compiled JavaScript
├── test-mcp.js # Testing utilities
├── output.md # Sample output file
├── package.json
├── tsconfig.json
└── README.md
利用可能なスクリプト
npm run dev # Run in development mode with hot reload
npm run build # Compile TypeScript to JavaScript
npm run start # Run the compiled server
npm run clean # Clean dist directory
npm test # Run test suite
変更内容のテスト
# Interactive testing
node interactive-test.js
# Automated test suite
node test-mcp.js
# Manual JSON-RPC testing
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.js
🚦 パフォーマンスと制限
デフォルトの制限
- 最大深度:2 レベル(設定可能)
- 最大ページ数:50 ページ(設定可能)
- リクエストのタイムアウト:10 秒(設定可能)
- クロール間隔:リクエスト間で 500ms(負荷に配慮したクロール)
パフォーマンスのヒント
- 大規模なサイトでは、適切な
maxPagesの上限を設定します includePatternsを使用して、関連するコンテンツに対象を絞りますsameDomainOnlyを有効にして、外部リンクのクロールを避けます- 対象サイトの応答時間に合わせて
timeoutを調整します
🤝 貢献
貢献を歓迎します。詳しくは貢献ガイドをご覧ください。
開発環境のセットアップ
- リポジトリをフォークします
- フィーチャーブランチを作成します:
git checkout -b feature/amazing-feature - 変更を加えてテストを追加します
- 変更をコミットします:
git commit -m 'Add amazing feature' - ブランチにプッシュします:
git push origin feature/amazing-feature - プルリクエストを作成します
📜 ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については、LICENSE ファイルをご覧ください。
🆘 サポートと問題の報告
- バグの報告:GitHub Issues
- 機能リクエスト:GitHub Discussions
- ドキュメント:Wikiをご確認ください
- npm パッケージ:@infero.mcp/better-fetch
🙏 謝辞
- Model Context Protocol SDK を使用して構築されています
- HTML の解析には Cheerio を使用しています
- Markdown への変換には Turndown を使用しています
AI と開発者コミュニティのために ❤️ を込めて作られました
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
