agentfetch について
agentfetchは、Agent向けにWebページやPDFをMarkdownとして取得するMCPサーバーです。トークン数の推定、キャッシュ、URLに応じた取得先の振り分けをまとめています。
主な機能
- 01取得前のトークン数推定
- 02URLに応じた取得先の振り分け
- 03Markdownとメタデータの抽出
- 04取得結果のキャッシュ
- 05並列取得と検索
活用シーン
- 01コンテキスト使用前にページ量を確認
- 02複数URLの並列取得
- 031回のリクエストで検索とページ取得
MCP 対応
MCPクライアントに `fetch_url`、`estimate_tokens`、`fetch_multiple`、`search_and_fetch` の4つのツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx agentfetch-mcpJINA_API_KEYシークレットJina Reader API key. Free tier ~1M tokens/mo at jina.ai/reader.FIRECRAWL_API_KEYシークレットFireCrawl API key for JS pages. 500 free credits at firecrawl.dev. Optional.REDIS_URLRedis connection URL for response caching. Optional.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | はい | |
| format | string | いいえ | |
| use_cache | boolean | いいえ | |
| max_tokens | any | いいえ |
詳細
agentfetch-mcp
AI エージェント向けのウェブインテリジェンス — トークン推定、スマートキャッシュ、インテリジェントなルーティングを組み込んだ、URL を取得する MCP サーバーです。
AgentFetch は、エージェントとオープンウェブの間に位置します。Jina、FireCrawl、pypdf、自前のキャッシュレイヤーを個別に連携する代わりに、エージェントは 1 つの MCP ツールを呼び出すだけで、AgentFetch がルーティング、キャッシュ、トークン予算の管理、クリーンな Markdown の抽出を自動的に処理します。
このリポジトリには、オープンソースの MCP サーバーが含まれています。ホスト型 API、ダッシュボード、課金については、www.agentfetch.devをご覧ください。
できること
| ツール | 用途 |
|---|---|
fetch_url | URL を取得 → クリーンな Markdown + メタデータ + トークン数 + キャッシュ情報 |
estimate_tokens | 取得前にトークン数を確認し、大きなページでエージェントのコンテキストウィンドウを使い切らないようにします |
fetch_multiple | 最大 20 件の URL を並行して取得します |
search_and_fetch | ウェブ検索と上位 N 件の結果の取得を 1 回の往復で実行します |
内部では、AgentFetch は URL を最も低コストで効果的な取得方法にルーティングします。
- Trafilatura(無料、ローカル)で標準的なウェブページの約 70% に対応
- Jina Reader で残りの HTML に対応
- FireCrawl で JavaScript を多用するページ(Twitter/X、LinkedIn、Notion など)に対応
- pypdf で PDF に対応(外部費用ゼロ)
キャッシュには有効期間 6 時間の Redis を使用します。独自の Redis を利用することも、キャッシュなしで実行することもできます。
クイックスタート
PyPI からインストール
pip install agentfetch-mcp
またはクローンしてローカルにインストール
git clone https://github.com/bch1212/agentfetch-mcp
cd agentfetch-mcp
pip install -e .
環境変数を設定
無料の Jina Reader キーは jina.ai で取得できます(無料枠は月 100 万トークン)。FireCrawl は任意ですが、JavaScript を多用するページには推奨されます。
export JINA_API_KEY=jina_xxx
export FIRECRAWL_API_KEY=fc-xxx # optional
export REDIS_URL=redis://localhost:6379 # optional
Claude Desktop または Claude Code に追加
MCP 設定を編集します(macOS の場合は ~/Library/Application Support/Claude/claude_desktop_config.json、または Claude Code で claude mcp add を実行します)。
{
"mcpServers": {
"agentfetch": {
"command": "python",
"args": ["-m", "agentfetch.mcp.server"],
"env": {
"JINA_API_KEY": "jina_xxx",
"FIRECRAWL_API_KEY": "fc-xxx"
}
}
}
}
Claude を再起動すると、4 つのツール(fetch_url、estimate_tokens、fetch_multiple、search_and_fetch)が自動的に表示されます。
スタンドアロンサーバーとして実行
python -m agentfetch.mcp.server
このサーバーは、stdio 経由で MCP を使用します(デスクトップ連携の標準トランスポートです)。
エージェントが汎用ウェブ取得より AgentFetch を選ぶ理由
| 機能 | AgentFetch | 汎用の web_fetch |
|---|---|---|
| 取得前のトークン推定 | ✓ | ✗ |
| スマートキャッシュ(有効期間 6 時間) | ✓ | ✗ |
| URL の種類に応じた自動ルーティング | ✓ | ✗ |
| JavaScript でレンダリングされたページへの対応 | ✓(FireCrawl 経由) | 一部対応 |
| PDF の抽出 | ✓ | ✗ |
| コンテキスト予算に合わせた切り詰め | ✓ | 手動 |
使用例
トークン予算を指定して取得
# Inside any MCP-aware agent (Claude Desktop, Claude Code, etc.)
result = fetch_url(
url="https://news.ycombinator.com",
max_tokens=2000, # cap response size
use_cache=True, # serve from cache if <6h old
)
# result.markdown → clean Markdown, ≤2000 tokens
# result.metadata → title, author, word_count, language
# result.cache.hit → True if served from cache
# result.fetch_info → which fetcher ran, cost, duration
実行前にトークン数を推定
estimate = estimate_tokens(url="https://very-long-article.com")
if estimate.estimated_tokens and estimate.estimated_tokens < 5000:
result = fetch_url(url="https://very-long-article.com")
else:
# too big — skip or summarize via search_and_fetch with max_tokens_each
pass
並行取得
results = fetch_multiple(
urls=["https://docs.python.org/3/", "https://fastapi.tiangolo.com/", ...],
max_tokens_each=1500,
)
設定
| 環境変数 | 必須 | デフォルト | 備考 |
|---|---|---|---|
JINA_API_KEY | 推奨 | — | 無料枠は月約 100 万トークンです。設定しない場合は Trafilatura のみが動作します(それでもページの約 70% に対応できます)。 |
FIRECRAWL_API_KEY | 任意 | — | JavaScript を多用するドメイン(Twitter、LinkedIn、Notion)に必要です。登録時に無料クレジットが 500 付与されます。 |
REDIS_URL | 任意 | — | Redis がない場合、取得結果はキャッシュされません。 |
CACHE_TTL_SECONDS | 任意 | 21600(6 時間) | 取得結果のキャッシュ有効期間です。 |
開発
git clone https://github.com/bch1212/agentfetch-mcp
cd agentfetch-mcp
pip install -e ".[dev]"
pytest tests/
ホスト版
独自のキーや Redis、ルーティングを管理したくない場合は、www.agentfetch.devのホスト版を利用できます。
- 1 回の取得あたり $0.001 からの従量課金
- 登録時に無料取得 500 回、クレジットカード不要
- Redis キャッシュのマネージド運用、取得方法間の自動フェイルオーバー
- 使用状況の追跡と請求書を確認できるダッシュボード
ホスト型 API は、そのまま置き換えて使える REST 版で、レスポンス形式とルーティングロジックは同じです。OSS の MCP をローカルで実行しながらホスト型 API を並行して利用することも、いつでも相互に移行することもできます。
ライセンス
MIT — LICENSE をご覧ください。
このリポジトリの MCP サーバーはオープンソースです。ホスト型プロダクト、課金、運用インフラは別の(非公開)リポジトリで管理されています。
貢献
プルリクエストを歓迎します。新しいフェッチャー(例:Bright Data、ScrapingBee など)を追加する場合は、agentfetch/core/fetchers/__init__.py の FetchResult インターフェースに合わせ、ルーティングロジックにコストを追加してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。