Web Page Fetcher について
Web Page Fetcher は、ウェブページを取得して読みやすい構造化 Markdown に変換する Go 製 MCP サーバーです。ページ内容を必要とする AI クライアント向けで、SSRF 対策とオプションの JavaScript レンダリングを備えています。
主な機能
- 01読みやすい Markdown の抽出
- 02見出し、リスト、表、コードの保持
- 037 層の SSRF 対策
- 04ドメイン単位のレート制限とキャッシュ
- 05オプションの画像処理と JavaScript レンダリング
活用シーン
- 01AI クライアントで記事やドキュメントを読む
- 02ニュースサイトやフォーラムから構造化データを抽出
- 03レンダリングを有効にして JavaScript の多いページを取得
MCP 対応
この MCP サーバーは、MCP 対応クライアントに URL の取得機能と Markdown コンテンツを提供します。クライアントからコマンドを使ってローカル実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
paimon-mcp-fetch
AI アシスタントがあらゆるウェブページを読めるようにします。
URL を取得し、読みやすく整形された Markdown を返す軽量な MCP サーバーです。Go で構築されており、5ms で起動し、メモリ使用量は約 10MB、実行時の依存関係はありません。
できること
URL を渡すと、整形された Markdown を返します。
おすすめの用途:
- 記事、ブログ投稿、ドキュメントを読む
- ニュースサイト、フォーラム、スケジュールからデータを抽出する
- ウェブコンテンツを AI アシスタント向けに要約する
- 構造化された出力を取得する(見出し、リスト、表、コードブロックを保持)
おすすめできない用途:
- ログインが必要なページのスクレイピング
- ペイウォールの回避
- 本格的なブラウザー自動化ツールの代替
クイックスタート
1. インストール
次のいずれかの方法を選んでください:
# Go (recommended)
go install github.com/paimonchan/paimon-mcp-fetch/cmd/paimon-mcp-fetch@latest
# Homebrew (macOS/Linux)
brew tap paimonchan/tap
brew install paimon-mcp-fetch
# Scoop (Windows)
scoop bucket add paimonchan https://github.com/paimonchan/scoop-bucket
scoop install paimon-mcp-fetch
# Winget (Windows)
winget install paimonchan.paimon-mcp-fetch
# Docker
docker run -i --rm ghcr.io/paimonchan/paimon-mcp-fetch:latest
2. AI アシスタントを設定する
MCP クライアントの設定に以下を追加します:
{
"mcp": {
"paimon-mcp-fetch": {
"type": "local",
"command": ["paimon-mcp-fetch"],
"enabled": true
}
}
}
3. 完了
これで AI が、渡されたあらゆる URL を読めるようになります。
他のフェッチツールより優れている点
| paimon-mcp-fetch | 基本的なテキストフェッチ | |
|---|---|---|
| 出力 | 構造化された Markdown | プレーンテキスト |
| 記事の抽出 | 可読性アルゴリズム(広告、ナビゲーション、サイドバーを除去) | 生の HTML 本文 |
| 画像 | 抽出と処理に対応(オプション) | なし |
| JS レンダリング | 対応(ヘッドレス Chrome、オプション) | 静的コンテンツのみ |
| キャッシュ | LRU キャッシュを内蔵 | なし |
| レート制限 | ドメインごとに設定可能 | なし |
| SSRF 保護 | 7 層の防御 | なし |
| 起動時間 | 約 5ms | 環境による |
| メモリ | 約 10MB | 環境による |
設定
すべて環境変数で制御できます。ほとんどの場合、変更は不要です。デフォルト設定で十分に機能します。
| 変数 | デフォルト | 説明 |
|---|---|---|
PAIMON_MCP_FETCH_TIMEOUT_MS | 12000 | リクエストのタイムアウト(ms) |
PAIMON_MCP_FETCH_MAX_HTML_BYTES | 10485760 | ページの最大サイズ(10MB) |
PAIMON_MCP_FETCH_CACHE_TTL_SECS | 300 | キャッシュの有効期間(5 分) |
PAIMON_MCP_FETCH_RATE_LIMIT_PER_SECOND | 5.0 | ドメインごとのリクエスト数/秒 |
PAIMON_MCP_FETCH_RATE_LIMIT_BURST | 10 | バーストの最大サイズ |
PAIMON_MCP_FETCH_RETRY_MAX_ATTEMPTS | 3 | 一時的なエラー発生時の再試行回数 |
PAIMON_MCP_FETCH_JS_RENDER_ENABLED | false | ヘッドレス Chrome を有効にする |
オプション機能
画像処理
ウェブページから画像を抽出して処理します:
go build -tags image -o paimon-mcp-fetch ./cmd/paimon-mcp-fetch/
JS レンダリング
JavaScript を多用するサイト(SPA、動的コンテンツ)向け:
go build -tags jsrender -o paimon-mcp-fetch ./cmd/paimon-mcp-fetch/
PAIMON_MCP_FETCH_JS_RENDER_ENABLED=true ./paimon-mcp-fetch
注: Chrome または Chromium のインストールが必要です。処理は遅くなります(1 ページあたり約 3~5 秒)が、静的フェッチでは対応できないサイトも扱えます。
対応する AI アシスタント
MCP 互換のクライアントであれば、どれでも使用できます。以下の設定をクライアントの設定ファイルに追加してください。
OpenCode
設定ファイル: ~/.config/opencode/opencode.json
{
"mcp": {
"paimon-mcp-fetch": {
"type": "local",
"command": ["paimon-mcp-fetch"],
"enabled": true
}
}
}
Claude Desktop
設定ファイル: claude_desktop_config.json
{
"mcpServers": {
"paimon-mcp-fetch": {
"command": "paimon-mcp-fetch"
}
}
}
Cursor
設定ファイル: .cursor/mcp.json(プロジェクト)または ~/.cursor/mcp.json(グローバル)
{
"mcpServers": {
"paimon-mcp-fetch": {
"command": "paimon-mcp-fetch",
"env": {}
}
}
}
VS Code(GitHub Copilot)
設定ファイル: .vscode/mcp.json(ワークスペース)またはユーザー設定
{
"servers": {
"paimon-mcp-fetch": {
"type": "stdio",
"command": "paimon-mcp-fetch"
}
}
}
Cline
設定ファイル: .cline/mcp.json
{
"mcpServers": {
"paimon-mcp-fetch": {
"command": "paimon-mcp-fetch"
}
}
}
Windsurf
設定ファイル: .windsurf/mcp.json
{
"mcpServers": {
"paimon-mcp-fetch": {
"command": "paimon-mcp-fetch"
}
}
}
カスタム設定を使用する場合
すべてのクライアントで環境変数を使用できます。タイムアウトとキャッシュをカスタマイズする例:
{
"mcpServers": {
"paimon-mcp-fetch": {
"command": "paimon-mcp-fetch",
"env": {
"PAIMON_MCP_FETCH_TIMEOUT_MS": "30000",
"PAIMON_MCP_FETCH_CACHE_TTL_SECS": "600"
}
}
}
}
セキュリティ
開発当初からセキュリティを重視して構築されています:
- SSRF 保護 — サーバーサイドリクエストフォージェリに対する 7 層の防御
- プライベート IP のブロック — localhost や内部ネットワークへのアクセスを防止
- リダイレクトの検証 — リダイレクトの各段階で安全性を再確認
- サイズ制限 — ストリームベースの読み込みにより、メモリの大量消費を防止
- タイムアウト — すべてのリクエストに期限を設定
- ログにシークレットを記録しない — API キーやトークンはログに記録されません
Windows のウイルス対策
ウイルス対策ソフトによって、署名のない Go バイナリが誤検知される場合があります。これは業界で知られている問題です。解決策:
go installを使用する — ウイルス対策ソフトには署名済みの Go コンパイラーが認識されます- Docker を使用する — ローカルにバイナリを置く必要はありません
- ソースからビルドする — 自分でコードを検証できます
アーキテクチャ
クリーンアーキテクチャの原則に基づいて構築されています:
MCP Server → UseCase → Domain (entities, ports)
↑
Adapters implement interfaces
- ドメイン — ビジネスルール、外部依存なし
- ユースケース — オーケストレーションロジック
- アダプター — HTTP クライアント、コンテンツ抽出機能、キャッシュ、レートリミッター、画像処理、JS レンダラー
詳細はプロジェクト計画をご覧ください。
ライセンス
MIT — ご自由にお使いください。
Go で構築されています。実行時の依存関係はゼロ。単一バイナリ。RAM 使用量は約 10MB。5ms で起動します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。