Skip to main content
Glama
iuiu-py
by iuiu-py

WebSearch Forge MCP

AIエージェント向けの軽量で統合されたWebSearch MCP。

1つのMCPサーバーで公開Webの検索、読み取り、クロール、解析、リサーチを実現します。

クイックスタート · ツール · アーキテクチャ · 検索エンジンの設定 · 中文文档

Python MCP SearXNG Windows

概要

WebSearch Forge MCPは、エージェント駆動のWebリサーチのための自己完結型MCPサービスです:

Question → search sources → fetch pages → extract content → crawl related pages → compile evidence

明確なレイヤーに分割されています:

  • transportsはMCP stdioとオプションのFastAPIアダプターを公開します。

  • coreは設定、キャッシュ、セキュリティチェック、オーケストレーション、リサーチワークフローを処理します。

  • providersは検索、フェッチ、抽出、クロール、メディア機能を実装します。

  • SearXNGは、Bing、Baidu、Brave、DuckDuckGo、その他の設定済みエンジンに対する単一の検索ゲートウェイです。

Related MCP server: myscrape

特長

1つのMCPサーバー、6つの機能

transports/mcp_stdio.pyに一度接続するだけです:

ツール

目的

search_web

SearXNGを通じて候補ソースを検索

fetch_web_content

1つの公開URLをフェッチして抽出

search_and_fetch

検索してから上位結果を読み取る

deep_research

複数検索を実行してレポートをまとめる

crawl_site

制限付きの同一ドメインサイトを再帰的にクロール

youtube_transcript

YouTubeのキャプションを取得

統合検索ゲートウェイ

engines引数はフィルターとしてSearXNGに渡されます。WebSearch Forgeは検索ウェブサイトに独立してファンアウトしません:

WebSearch Forge MCP → SearXNG → Bing / Baidu / Brave / DuckDuckGo

デフォルトで軽量

MCP stdioは公開アプリケーションポートやデータベースサーバーを必要としません。キャッシュはSQLiteです。オプションパッケージは、MCP契約を変更せずにTrafilatura、Readability、ステルスリクエスト、Playwright、Office/PDF解析、Scrapy、YouTubeキャプション、FastAPIを追加します。

制限付きクロール

crawl_siteは依存関係ゼロのネイティブバックエンドとオプションのScrapyバックエンドをサポートします。ページ数と深さの制限を強制し、開始ホストに留まり、相対リンクを解決し、ページ障害を分離します。

クイックスタート

以下のコマンドはWindows PowerShell用です。

インストール

cd D:\my-websearch\my_websearch
py -3.12 -m pip install -r requirements.txt

SearXNGの起動

docker version
cd D:\my-websearch\my_websearch
docker compose up -d searxng
docker compose ps

デフォルトのゲートウェイはhttp://127.0.0.1:8080です。設定はconfig/searxng/settings.ymlにあります。

MCPクライアントの設定

mcp_config.example.jsonを使用し、絶対パスを維持してください:

{
  "mcpServers": {
    "websearch-forge": {
      "command": "py",
      "args": [
        "-3.12",
        "D:\\my-websearch\\my_websearch\\transports\\mcp_stdio.py"
      ],
      "env": {
        "SEARXNG_URL": "http://127.0.0.1:8080",
        "CACHE_TTL": "300"
      }
    }
  }
}

stdioアダプターはWindowsでUTF-8を強制します。ループバックトラフィックはデフォルトでマシン全体のプロキシ変数をバイパスします。必要に応じてPROXY_URLを明示的に設定してください。

ツール

search_web

ページ本文をダウンロードせずにSearXNG経由で検索します。

{
  "name": "search_web",
  "arguments": {
    "query": "Python 3.14 new features",
    "engines": ["bing", "baidu", "brave"],
    "limit": 5,
    "time_range": "month"
  }
}

fetch_web_content

1つの公開URLをフェッチして抽出します。HTML、PDF、DOCX、XLSX、PPTX、CSV、Markdown、プレーンテキストに対応しています。

{
  "name": "fetch_web_content",
  "arguments": {
    "url": "https://www.python.org",
    "max_chars": 10000,
    "stealth_mode": "off",
    "render_mode": "auto",
    "extraction_mode": "auto"
  }
}

レスポンスには、最終URL、HTTPステータス、タイトル、抽出方法、単語数、コンテンツ、検出されたリンクが含まれます。

search_and_fetch

最初に検索し、次に上位結果を個別にフェッチします。失敗したページはその項目に記録され、バッチ全体はキャンセルされません。

{
  "name": "search_and_fetch",
  "arguments": {
    "query": "FastAPI MCP server",
    "limit": 3,
    "max_chars": 12000
  }
}

deep_research

関連クエリを並行して実行し、最も有力な結果をフェッチし、ソースレベルの失敗を含むMarkdownレポートを返します。

{
  "name": "deep_research",
  "arguments": {
    "queries": ["SearXNG engine configuration", "MCP stdio deployment"],
    "breadth": 3,
    "max_chars": 12000
  }
}

crawl_site

ページ数と深さの厳格な制限付きで同一ホストのサイトをクロールします。

{
  "name": "crawl_site",
  "arguments": {
    "url": "https://www.python.org",
    "max_pages": 10,
    "max_depth": 2,
    "backend": "native",
    "stealth_mode": "off"
  }
}

nativeがデフォルトです。Scrapyをインストールし、backendをscrapyに設定するとオプションのバックエンドを使用できます。各ページはURL、深さ、ステータス、フェッチ方法、タイトル、コンテンツ、単語数を報告します。

youtube_transcript

オプションのソース言語と翻訳言語を指定してYouTubeのキャプションを取得します。

レスポンス形式

{
  "query": "OpenAI",
  "provider": "searxng",
  "engines": ["bing", "baidu", "brave"],
  "total_results": 3,
  "results": [
    {
      "title": "OpenAI | Research & Deployment",
      "url": "https://openai.com/",
      "description": "...",
      "source": "openai.com",
      "engine": "bing",
      "score": 1.0
    }
  ],
  "partial_failures": []
}

成功した部分的な結果は保持されます。エンジン、ページ、ドキュメントのエラーは構造化された失敗エントリとして返されます。

アーキテクチャ

flowchart LR
    A[Agent / MCP Client] -->|stdio JSON-RPC| B[transports/mcp_stdio.py]
    B --> C[core/service.py]
    C --> D[providers/search]
    D --> E[SearXNG]
    E --> F[Bing / Baidu / Brave / DDG]
    C --> G[providers/content]
    G --> H[HTTP / stealth / Playwright]
    C --> I[providers/crawl]
    C --> J[providers/media]
    C --> K[(SQLite TTL cache)]
  • transportsはプロトコルを適応させます。MCPとFastAPIは同じサービスを共有します。

  • coreはオーケストレーション、キャッシュポリシー、設定、URLセキュリティを担当します。

  • providers/searchはSearXNGと通信し、エンジン名を検証します。

  • providers/contentはHTTP、ステルストランスポート、レンダリング、抽出を処理します。

  • providers/crawlにはネイティブとScrapyのクローリングバックエンドが含まれます。

  • providers/mediaにはYouTubeトランスクリプトプロバイダーが含まれます。

検索エンジンの設定

プロジェクト所有のSearXNGソースは:

config/searxng/settings.yml

エンジンを呼び出せるかどうかを決定する2つの設定:

  1. settings.ymlがSearXNG内でエンジンを有効にします。

  2. providers/search/registry.pyがSUPPORTED_ENGINESに受け入れ可能な名前をリストします。

変更後は再起動してください:

cd D:\my-websearch\my_websearch
docker compose up -d --force-recreate searxng

SearXNGがまだそのエンジンを提供していない場合は、まずそのSearXNGエンジンを実装してください。

セキュリティと信頼性

  • HTTPとHTTPSのURLのみ受け付けます。

  • localhost、ループバック、プライベートIPv4、リンクローカル、プライベートIPv6のターゲットは拒否されます。

  • リダイレクト先は再度検証されます。

  • 検索とフェッチ操作はSQLite TTLキャッシュを使用し、デフォルトは300秒です。

  • 部分的な失敗は成功した作業を破棄しません。

  • stdoutはMCP JSON-RPC用に予約されています。

オプション機能

機能

有効化方法

Trafilatura / Readability

requirements-api.txtをインストール

ステルスリクエスト

curl-cffiをインストールしstealth_mode=highを使用

JavaScriptレンダリング

Playwrightをインストールしrender_mode=browserを使用

PDF / DOCX / XLSX / PPTX

対応するドキュメントパッケージをインストール

Scrapyクロール

Scrapyをインストールしbackend=scrapyを使用

FastAPI HTTPサービス

py -3.12 -m transports.apiを実行

YouTubeキャプション

youtube-transcript-apiをインストール

プロジェクト構成

my_websearch/
├── assets/                     # Project logo
├── config/searxng/             # SearXNG settings.yml
├── core/                       # Config, cache, security, orchestration
├── providers/
│   ├── search/                 # SearXNG gateway and engine allow-list
│   ├── content/                # Requests, rendering, extraction
│   ├── crawl/                  # Native and Scrapy backends
│   └── media/                  # YouTube transcript provider
├── transports/                 # MCP stdio and FastAPI adapters
├── tests/                      # Dependency-free self-checks
├── docker-compose.yml          # Local SearXNG gateway
├── mcp_config.example.json     # MCP client template
├── requirements.txt            # Dependency entry point
├── README.md                  # English documentation
└── README.zh-CN.md            # 中文文档

開発チェック

cd D:\my-websearch
py -3.12 -m my_websearch.tests.test_server

期待される出力:

my_websearch self-check: ok

オプションのFastAPIサービス:

cd D:\my-websearch\my_websearch
py -3.12 -m transports.api

次にhttp://127.0.0.1:8787/docsを開きます。

ライセンス

ライセンスはまだ設定されていません。公開配布前にルートレベルのLICENSEファイルを追加してください。

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP tool server that gives any AI agent the ability to search, scrape, and analyze content across the internet.
    42
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A self-contained web-research MCP server that lets local LLM agents search, fetch, and synthesize web content using tools like web_search, web_fetch, and web_research.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Multi-purpose research MCP server integrating web search, deep research, web scraping, research methodology routing, and GPT Researcher report generation.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that gives agents a unified search and perception layer across web search, Bilibili, Xiaohongshu, Zhihu, YouTube, academic metadata, recruitment sites, and webpage extraction, plus research planning, health checks, and task status.
    MIT