Skip to main content
Glama
wxs-lang

webscout-mcp

by wxs-lang

webscout-mcp

AIエージェント向けのWeb検索・取得ツールを、MCPサーバーとして提供します。検索、取得、クロール、構造化データの抽出を実行できます。APIキー不要、リクエストごとの課金なし、すべての処理はお使いのマシン上で完結します。

インストール

pip install webscout-mcp

Python 3.10以上が必要です。

Related MCP server: Crawl4AI RAG MCP Server

クイックスタート

MCPクライアント設定(Claude Code、Cursor、Codexなど)に追加します:

{
  "mcpServers": {
    "webscout": {
      "command": "webscout-mcp",
      "args": []
    }
  }
}

これだけです。エージェントは6つのツールを利用できます:

  • web_search - Bingで検索し、自動的にDuckDuckGo HTMLにフォールバック。キー不要

  • web_fetch - ページを取得し、メイン記事を抽出(markdown/text/html)

  • web_crawl - 並行BFSクロール。深さとページ数の制限付き、robots.txtを尊重

  • web_extract - CSSセレクタ、属性、正規表現で構造化データを抽出

  • cache_stats - ローカルキャッシュを検査

  • cache_clear - キャッシュを消去

CLIの使い方

MCPサーバーとして実行するだけでなく、webscout-mcpをコマンドラインから直接使用することもできます:

# Search the web (outputs JSON)
webscout-mcp search "python async libraries" --max-results 5

# Fetch a page (raw content)
webscout-mcp fetch https://example.com --extract --format markdown --raw

# Crawl a site
webscout-mcp crawl https://example.com --depth 2 --pages 10

# Start MCP server (default if no command given)
webscout-mcp serve --transport stdio

使用例

検索

web_search(query="best python async libraries", max_results=5)

タイトル、URL、スニペット、およびどのバックエンドがリクエストを処理したか(bing または duckduckgo)を含む構造化された結果を返します。Bingが失敗したりマークアップが変更された場合、エンジンは自動的にDuckDuckGoのHTMLバージョンにフォールバックします。設定は不要です。

ページを取得

web_fetch(url="https://example.com", extract=true, output_format="markdown")

extract=true を指定すると、trafilatura(readability-lxmlにフォールバック)がナビゲーション、広告、サイドバーを除去します。生のHTMLではなく、クリーンな記事コンテンツが得られます。

構造化データを抽出

web_extract(
  url="https://example.com/products",
  rules='[
    {"name": "titles", "selector": ".product h2", "multiple": true},
    {"name": "prices", "selector": ".price", "regex": "\\$([\\d.]+)", "multiple": true},
    {"name": "links", "selector": "a.product", "attribute": "href", "multiple": true}
  ]'
)

各ルールは selectorattributemultipleregexdefault をサポートしています。

サイトをクロール

web_crawl(seed_url="https://example.com", max_depth=2, max_pages=10, concurrency=5)

各深さレベルのページは並行して取得されます(concurrency で制御、デフォルト5)。クローラーはデフォルトで robots.txt を尊重します。許可されていないURLはスキップされ、skipped_robots にカウントされます。同一ドメイン制限はデフォルトで有効です。

Pythonライブラリとして使用

import asyncio
from webscout_mcp import Config, Fetcher, SearchEngine

async def main():
    config = Config.from_env()
    config.ensure_dirs()

    fetcher = Fetcher(config)
    result = await fetcher.fetch("https://example.com", extract=True)
    print(result.title)
    print(result.content[:500])
    await fetcher.close()

    search = SearchEngine(config)
    results = await search.search("python async", max_results=5)
    for r in results:
        print(f"{r.position}. {r.title} - {r.url} ({r.backend})")
    await search.close()

asyncio.run(main())

仕組み

  • 検索 はまずBingを試し、次にDuckDuckGo HTMLを試します。どちらも直接HTTPスクレイピングで、APIキーは不要です。結果はクエリごとにキャッシュされます。

  • 取得 はhttpxを使用し、指数バックオフのリトライ(すべてのhttpxエラー + HTTP 5xx)、ドメインごとのトークンバケットレート制限、5MBのコンテンツ上限を備えています。

  • コンテンツ抽出 はtrafilaturaを優先し、readability-lxmlに自動フォールバックします。これは多くの「後で読む」サービスが使用しているのと同じライブラリです。

  • キャッシュ はTTLとサイズ上限付きのSQLiteで、古いエントリは自動的に削除されます。繰り返しの取得や検索はコストがかかりません。

  • クロール は並行BFSで、深さ、ページ数、並行度、同一ドメイン制限、robots.txt準拠を設定できます。各ページの二重取得を避けるため、最初の取得からの生HTMLを使用します。

  • プロキシサポート すべてのHTTP/HTTPSリクエストを、設定または環境変数でプロキシ経由にルーティングします。

  • ログ は構造化されており、WEBSCOUT_LOG_LEVEL(DEBUG/INFO/WARNING/ERROR)と WEBSCOUT_LOG_JSON=1(JSON出力用)で設定できます。

すべてローカルで実行されます。データがマシンの外に出ることはありません。

設定

すべての設定には適切なデフォルトがあります。環境変数(WEBSCOUT_ プレフィックス)、TOML設定ファイル、またはCLIフラグで上書きできます。

設定ファイル

~/.config/webscout/config.toml(または $XDG_CONFIG_HOME/webscout/config.toml)を作成します:

[cache]
ttl = 7200
max_size_mb = 512

[fetch]
timeout = 15.0
max_retries = 3

[proxy]
http = "http://proxy:8080"
https = "http://proxy:8080"

[search]
max_results = 10
backends = ["bing", "duckduckgo"]

[crawler]
max_depth = 2
max_pages = 20
concurrency = 5
respect_robots = true

[logging]
level = "WARNING"
json = false

環境変数は設定ファイルの値を上書きします。

環境変数

変数

デフォルト

説明

WEBSCOUT_CACHE_DIR

~/.cache/webscout

SQLiteキャッシュの場所

WEBSCOUT_CACHE_TTL

7200

キャッシュエントリの有効期間(秒)

WEBSCOUT_CACHE_MAX_SIZE_MB

512

削除前の最大キャッシュサイズ

WEBSCOUT_REQUEST_TIMEOUT

15.0

HTTPタイムアウト(秒)

WEBSCOUT_MAX_RETRIES

3

リクエストごとのリトライ回数

WEBSCOUT_RATE_LIMIT_PER_SECOND

2.0

ドメインごとの1秒あたりの最大リクエスト数

WEBSCOUT_SEARCH_MAX_RESULTS

10

デフォルトの検索結果数

WEBSCOUT_SEARCH_BACKENDS

bing,duckduckgo

カンマ区切りのバックエンド順

WEBSCOUT_CRAWLER_MAX_DEPTH

2

デフォルトのクロール深さ

WEBSCOUT_CRAWLER_MAX_PAGES

20

クロールごとのデフォルト最大ページ数

WEBSCOUT_CRAWLER_CONCURRENCY

5

深さレベルごとの並行取得数

WEBSCOUT_RESPECT_ROBOTS

true

クローラーがrobots.txtを尊重するか

WEBSCOUT_EXTRACT_OUTPUT_FORMAT

markdown

デフォルトの抽出出力形式

WEBSCOUT_PROXY_HTTP

(空)

HTTPプロキシURL

WEBSCOUT_PROXY_HTTPS

(空)

HTTPSプロキシURL

WEBSCOUT_LOG_LEVEL

WARNING

ログの詳細度

WEBSCOUT_LOG_JSON

0

1 に設定するとJSON形式のログ

CLIフラグは環境変数を上書きします:

webscout-mcp --cache-ttl 3600 --cache-dir /tmp/webscout serve

トランスポート

# stdio (default - works with Claude Code, Cursor, etc.)
webscout-mcp

# SSE (for remote or browser-based clients)
webscout-mcp serve --transport sse --host 0.0.0.0 --port 8000

変更履歴

0.3.0

  • TOML設定ファイルのサポート: 環境変数に加えて ~/.config/webscout/config.toml で設定可能

  • HTTP/HTTPSプロキシサポート: すべてのリクエストをプロキシ経由でルーティング

  • 二重コンテンツ抽出: trafilaturaを優先し、readability-lxmlに自動フォールバック

  • 検索結果の重複排除: 重複URLを削除し、位置を再番号付け

  • リージョン対応検索: region パラメータが実際にBingとDuckDuckGoに渡されるようになった

  • クローラーのパフォーマンス向上: ページごとの二重取得を排除 - 約2倍高速なクロール

  • リトライロジックの改善: すべてのhttpxエラーとHTTP 5xxでリトライ

  • コンテンツタイプ検出の修正: 適切なHTML/XML検出

0.2.0

  • マルチバックエンド検索: Bing + DuckDuckGo HTML、自動フェイルオーバー

  • 並行クローラー、並列度を設定可能

  • robots.txt準拠(設定可能、デフォルトでオン)

  • CLIサブコマンド: searchfetchcrawlserve

  • コンソールとJSONフォーマッタによる構造化ログ

  • エラーハンドリング改善のためのカスタム例外階層

  • 新しい設定: WEBSCOUT_SEARCH_BACKENDSWEBSCOUT_CRAWLER_CONCURRENCYWEBSCOUT_RESPECT_ROBOTS

0.1.0

  • 初回リリース: web_search、web_fetch、web_crawl、web_extract、cache_stats、cache_clear

  • TTLとサイズベースの削除を備えたSQLiteキャッシュ

  • ドメインごとのトークンバケットレート制限

  • 指数バックオフリトライ

  • trafilaturaによるコンテンツ抽出

開発

git clone https://github.com/wxs-lang/webscout-mcp.git
cd webscout-mcp
pip install -e ".[dev]"
pytest

ライセンス

MIT

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.

  • Web search for AI agents — one tool across 6 engines, routed to the cheapest + cached.

  • Live web search for AI agents. $0.001/call, x402 on Base, no API key.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wxs-lang/webscout-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server