mcpField
O
Open Websearch

Open Websearch

ローカル
github.com/Aas-ee検索1.9k3 週間前に更新

Open Websearch について

Open Websearch は、MCP サーバー、コマンドライン、ローカルデーモンとして動作し、API キーなしで複数の検索エンジンの結果を取得します。記事や Web ページの内容も取得できます。リアルタイムの Web 検索を必要とするエージェントや開発者に向いています。

主な機能

  1. 01API キー不要の複数エンジン検索
  2. 02Bing、Baidu、DuckDuckGo、Brave などに対応
  3. 03タイトル、URL、説明を含む構造化された結果
  4. 04記事と Web ページの Markdown 内容の取得
  5. 05プロキシと既定の検索エンジンの設定

活用シーン

  1. 01MCP クライアントへのリアルタイム Web 検索の提供
  2. 02コマンドラインやスクリプトからの単発検索
  3. 03ローカルデーモン経由での繰り返し検索

MCP 対応

MCP サーバーとして動作し、検索とコンテンツ取得のツールを MCP クライアントに公開します。ツール名は環境変数で変更または無効化できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"open-webSearch": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ENABLE_CORS",
"-e",
"CORS_ORIGIN",
"ghcr.io/aas-ee/open-web-search:latest"
],
"env": {
"ENABLE_CORS": "<ENABLE_CORS>",
"CORS_ORIGIN": "<CORS_ORIGIN>"
}
}
}
}
起動コマンドdocker run -i --rm -e ENABLE_CORS -e CORS_ORIGIN ghcr.io/aas-ee/open-web-search:latest
設定が必要な環境変数
ENABLE_CORS
CORS_ORIGIN

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/aas-ee/open-web-search:latest

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Open-WebSearch

ModelScope smithery badge Version License Issues

🇨🇳 中文 | 🇺🇸 English

open-websearch は、MCP サーバー、CLI、ローカルデーモンを提供します。また、スキルに基づくエージェントのワークフローと組み合わせて、API キーなしでリアルタイムのウェブ検索やコンテンツ取得を行えます。

スポンサー

Swiftproxy は、マルチアカウント管理、自動化、ウェブスクレイピング、安全なオンライン操作向けに、安定した IP を備えた高品質な静的レジデンシャルプロキシを提供します。クリーンな IP と信頼性の高いプロキシインフラストラクチャでアカウントを保護できます。静的プロキシの通信量は、使用量無制限で30日間有効です。コード PROXY90 を使用すると 10% 割引になります。

機能

  • 複数の検索エンジンによるウェブ検索
    • bing
    • baidu
    • linux.do 一時的に未対応
    • csdn
    • duckduckgo
    • exa
    • brave
    • juejin
    • startpage
    • sogou
    • hackernews
  • 制限されたリソースにアクセスするための HTTP プロキシ設定に対応
  • API キーや認証は不要
  • タイトル、URL、説明を含む構造化された結果を返します
  • 検索ごとの結果数を設定可能
  • デフォルトの検索エンジンをカスタマイズ可能
  • 個別の記事コンテンツの取得に対応
    • csdn
    • github(README ファイル)
    • 一般的な HTTP(S) ページ/Markdown コンテンツ

適切な方法を選ぶ

  • MCP
    • open-websearch を Claude Desktop、Cherry Studio、Cursor、またはその他の MCP クライアントに接続する場合に最適です。
  • CLI
    • 一度限りのローカルコマンド、シェルスクリプト、ターミナルからの直接利用に最適です。
  • Local daemon
    • status、GET /health、POST /search、POST /fetch-* を提供する、再利用可能な長時間稼働のローカル HTTP サービスが必要な場合に最適です。open-websearch serve で明示的に起動し、open-websearch status で確認します。
  • Skill
    • セットアップと使い方を案内する、エージェント向けのガイダンス層として最適です。スキルは MCP、CLI、ローカルデーモンの代わりになるものではありません。通常は CLI やローカルデーモンと連携し、エージェントが最小限の動作経路を見つけ、有効化して利用できるようにします。

スキルを使う

まず、エージェントに open-websearch スキルをインストールしてください。

npx skills add https://github.com/Aas-ee/open-webSearch --skill open-websearch

初回の使用では通常、次の手順に沿って進みます。利用可能な open-websearch のパスがすでにあるかを確認し、ない場合はセットアップと有効化を案内し、機能が有効になっていることを検証してから、最小限の動作する手順で検索または取得を行います。

現在の環境でセットアップや有効化を自動で完了できない場合は、エージェントにローカルデーモンを先に起動するよう明示的に指示できます。

open-websearch serve
open-websearch status

インストール時のプロキシ設定と実行時のプロキシ設定は分けてください。

  • インストール用プロキシ/ミラー
    • スキルまたはエージェントが open-websearch、playwright、その他の npm パッケージをインストールする際に使用します。
    • ネットワークが制限されている場合は、一般的なシェルのプロキシ環境変数よりも、npm 固有のフラグや npm の設定がうまく機能することがあります。例:
npm --proxy http://127.0.0.1:7890 --https-proxy http://127.0.0.1:7890 install -g open-websearch
  • 実行時プロキシ
    • デーモンがすでにインストールされており、ライブの search/fetch を実行する際に使用します。
    • これは serve の起動後に発生する open-websearch のネットワーク通信に影響します。例:
USE_PROXY=true PROXY_URL=http://127.0.0.1:7890 open-websearch serve

パッケージのインストールには npm のプロキシ設定が必要で、起動後のライブ検索/取得にもプロキシが必要な場合、この2つは別々の設定手順として個別に扱ってください。

CLI とローカルデーモン

CLI は単発の実行に使用します。ローカルデーモンは、起動時の手間を抑えて繰り返し呼び出すための、長時間稼働するローカル HTTP サービスです。デーモンの明示的な起動コマンドには open-websearch serve を、状態の明示的な確認コマンドには open-websearch status を使用してください。

search や fetch-web などのアクションコマンドは、利用可能な場合、まずデフォルトのローカルデーモンを試します。--daemon-url を指定すると、そのデーモンの使用が明示され、直接実行へのサイレントフォールバックは無効になります。

まずビルドします。

npm run build

ローカルデーモンを起動します。

npm run serve
# globally installed: open-websearch serve

状態を確認します。

npm run status -- --json
# globally installed: open-websearch status --json

ローカル CLI で単発の検索を実行します。

npm run search:cli -- "open web search" --json

注意:

  • 裸の open-websearch は MCP サーバーとの互換性を保つためのエントリーポイントであり、エージェントの自動化で推奨されるデーモンの起動コマンドではありません。
  • コンテンツを抽出する場合は、まず検索してから、より具体的な結果ページを取得してください。ホームページや JavaScript を多用するランディングページでは、fetch-web で読み取り可能な記事本文を取得できない場合があります。

ローカルデーモンの HTTP API(serve、status、GET /health、POST /search、POST /fetch-*)については、docs/http-api.md を参照してください。

TODO

  • Bing(対応済み)、DuckDuckGo(対応済み)、Exa(対応済み)、Brave(対応済み)、Sogou(対応済み)、Hacker News(対応済み)、Google などの検索エンジンへの対応
  • より多くのブログ、フォーラム、ソーシャルプラットフォームへの対応
  • 記事コンテンツ抽出の最適化、およびより多くのサイトへの対応
  • GitHub README の取得への対応(対応済み)

インストールガイド

open-websearch を MCP サーバーとして使用する場合は、以下の MCP 向けセットアップに進んでください。

NPX クイックスタート(推奨)

最も手早く始める方法:

# Basic usage
npx open-websearch@latest

# With environment variables (Linux/macOS)
DEFAULT_SEARCH_ENGINE=duckduckgo ENABLE_CORS=true npx open-websearch@latest

# Windows PowerShell
$env:DEFAULT_SEARCH_ENGINE="duckduckgo"; $env:ENABLE_CORS="true"; npx open-websearch@latest

# Windows CMD
set MODE=stdio && set DEFAULT_SEARCH_ENGINE=duckduckgo && npx open-websearch@latest

# Cross-platform (requires cross-env, Used for local development)
npm install -g open-websearch
npx cross-env DEFAULT_SEARCH_ENGINE=duckduckgo ENABLE_CORS=true open-websearch

環境変数:

変数デフォルト値選択肢説明
ENABLE_CORSfalsetrue、falseCORS を有効にします
CORS_ORIGIN*有効なオリジンCORS のオリジン設定
DEFAULT_SEARCH_ENGINEbingbing、duckduckgo、exa、brave、baidu、csdn、linuxdo、juejin、startpage、sogou、hackernewsデフォルトの検索エンジン
USE_PROXYfalsetrue、falseHTTP プロキシを有効にします
PROXY_URLhttp://127.0.0.1:7890有効な URLプロキシサーバーの URL
FAKE_IP_CIDRSemptyカンマ区切りの CIDR リストこれらの CIDR 内の DNS 応答を合成された fake-IP の結果として扱い、プライベートネットワークの DNS 応答としてブロックしません。リテラルのプライベート/ローカル宛先と、その他のプライベートネットワークの DNS 応答は引き続きブロックされます
FETCH_WEB_INSECURE_TLSfalsetrue、falsefetchWebContent のリクエスト部分に限り、TLS 検証を無効にします。Playwright のブラウザナビゲーションには影響しません。証明書チェーンに問題がある場合にのみ使用してください
MODEbothboth、http、stdioサーバーモード:HTTP と STDIO の両方、HTTP のみ、または STDIO のみ
PORT30001~65535サーバーのポート
ALLOWED_SEARCH_ENGINESempty (all available)カンマ区切りのエンジン名使用可能な検索エンジンを制限します。デフォルトのエンジンがこのリストに含まれていない場合、最初の許可されたエンジンがデフォルトになります
SEARCH_MODEautorequest、auto、playwright検索方法です。現在は Bing のみに影響します。HTTP リクエストモード(request)または Playwright モード(playwright)を強制するか、エージェントに選択させます(デフォルトの auto)。強制モードでは、エージェントに searchMode の上書き設定を公開しません。auto モードでは、サーバーは Playwright が実際に使用可能かどうかを確認します(クライアントモジュールを実際に読み込めること、ローカル起動の場合は実際のブラウザバイナリが存在すること:明示的に指定された PLAYWRIGHT_EXECUTABLE_PATH、バンドルされたブラウザ、またはシステムの Chrome/Edge)。使用可能な場合、検索ツールは searchMode パラメーターを公開し、エージェントにデフォルトの auto を維持し、リクエストの結果が失敗する、空になる、またはブロックされているように見える場合に限り playwright で再試行するよう指示します。使用できない場合は、強制されたリクエストモードと同様に動作します。playwright が強制されているものの使用できない場合、検索は browser_unavailable エラーで失敗します
PLAYWRIGHT_PACKAGEautoauto、playwright、playwright-coreブラウザモードが有効な場合に解決する Playwright クライアントパッケージ
PLAYWRIGHT_MODULE_PATHempty絶対パスまたはプロジェクト相対パスこのプロジェクト外にある既存の Playwright クライアントパッケージを再利用します
PLAYWRIGHT_EXECUTABLE_PATHempty有効なブラウザバイナリのパスバンドルされたブラウザをインストールせずに、既存の Chromium/Chrome 実行ファイルを起動します
PLAYWRIGHT_WS_ENDPOINTempty有効な Playwright ws:// / wss:// エンドポイント既存のリモート Playwright ブラウザサーバーに接続します
PLAYWRIGHT_CDP_ENDPOINTempty有効な Chromium CDP エンドポイントCDP 経由で既存の Chromium インスタンスに接続します
PLAYWRIGHT_HEADLESStruetrue、falsePlaywright Chromium をヘッドレスモードで実行するかどうか
PLAYWRIGHT_NAVIGATION_TIMEOUT_MS20000正の整数Playwright のナビゲーションと Bing の検索結果待機のタイムアウト
OPEN_WEBSEARCH_PROFILE_DIR<tmpdir>/open-websearch-browser-profiles書き込み可能な任意のディレクトリ永続的なローカルブラウザープロファイルのベースディレクトリ(下記のブラウザー状態に関する注記を参照)
MCP_TOOL_SEARCH_NAMEsearch有効な MCP ツール名検索ツールのカスタム名です。ツールを無効にするには <disabled> を設定します(bash/zsh では '<disabled>'、Windows cmd では "<disabled>" と引用符で囲みます)。無効な名前の場合、警告を表示してデフォルトにフォールバックします
MCP_TOOL_FETCH_LINUXDO_NAMEfetchLinuxDoArticle有効な MCP ツール名Linux.do 記事取得ツールのカスタム名です。ツールを無効にするには <disabled> を設定します(bash/zsh では '<disabled>'、Windows cmd では "<disabled>" と引用符で囲みます)。無効な名前の場合、警告を表示してデフォルトにフォールバックします
MCP_TOOL_FETCH_CSDN_NAMEfetchCsdnArticle有効な MCP ツール名CSDN 記事取得ツールのカスタム名です。ツールを無効にするには <disabled> を設定します(bash/zsh では '<disabled>'、Windows cmd では "<disabled>" と引用符で囲みます)。無効な名前の場合、警告を表示してデフォルトにフォールバックします
MCP_TOOL_FETCH_GITHUB_NAMEfetchGithubReadme有効な MCP ツール名GitHub README 取得ツールのカスタム名です。ツールを無効にするには <disabled> を設定します(bash/zsh では '<disabled>'、Windows cmd では "<disabled>" と引用符で囲みます)。無効な名前の場合、警告を表示してデフォルトにフォールバックします
MCP_TOOL_FETCH_JUEJIN_NAMEfetchJuejinArticle有効な MCP ツール名Juejin 記事取得ツールのカスタム名です。ツールを無効にするには <disabled> を設定します(bash/zsh では '<disabled>'、Windows cmd では "<disabled>" と引用符で囲みます)。無効な名前の場合、警告を表示してデフォルトにフォールバックします
MCP_TOOL_FETCH_WEB_NAMEfetchWebContent有効な MCP ツール名汎用ウェブ/Markdown 取得ツールのカスタム名です。ツールを無効にするには <disabled> を設定します(bash/zsh では '<disabled>'、Windows cmd では "<disabled>" と引用符で囲みます)。無効な名前の場合、警告を表示してデフォルトにフォールバックします
一般的な設定:
# Enable proxy for restricted regions
USE_PROXY=true PROXY_URL=http://127.0.0.1:7890 npx open-websearch@latest

# Only if a target website has a broken certificate chain
FETCH_WEB_INSECURE_TLS=true npx open-websearch@latest

# Request first, then fallback to Playwright if available
SEARCH_MODE=auto npx open-websearch@latest

# Force request-only Bing search
SEARCH_MODE=request npx open-websearch@latest

# Rename search tool to webSearch
MCP_TOOL_SEARCH_NAME=webSearch npx open-websearch@latest

# Disable search tool
MCP_TOOL_SEARCH_NAME='<disabled>' npx open-websearch@latest

# Full configuration
DEFAULT_SEARCH_ENGINE=duckduckgo ENABLE_CORS=true USE_PROXY=true PROXY_URL=http://127.0.0.1:7890 PORT=8080 npx open-websearch@latest

注: <disabled> センチネルにはシェルで特別な意味を持つ文字が含まれています。bash/zsh では '<disabled>' のように引用符で囲み、Windows cmd では二重引用符 "<disabled>" を使用してください。

ブラウザーを活用した Bing フォールバックはオプトインです。公開パッケージには Playwright がバンドルされなくなりました。次のいずれかの構成で手動で有効にしてください。

  1. Playwright を完全にローカルインストールする:
npm install playwright
npx playwright install chromium
SEARCH_MODE=auto npx open-websearch@latest
  1. 既存のブラウザーバイナリをスリムクライアントで再利用する:
npm install playwright-core
PLAYWRIGHT_PACKAGE=playwright-core PLAYWRIGHT_EXECUTABLE_PATH=/path/to/chromium SEARCH_MODE=auto npx open-websearch@latest
  1. マシン上の別の場所にすでにある Playwright パッケージを再利用する:
PLAYWRIGHT_MODULE_PATH=/absolute/path/to/node_modules/playwright SEARCH_MODE=playwright npx open-websearch@latest
  1. 既存のリモートブラウザーに接続する:
npm install playwright-core
PLAYWRIGHT_PACKAGE=playwright-core PLAYWRIGHT_WS_ENDPOINT=ws://127.0.0.1:3000/ SEARCH_MODE=auto npx open-websearch@latest
  1. CDP 経由でローカルの Chrome/Chromium セッションを再利用する:
npm install playwright-core

# Start Chrome/Chromium with a debugging port first
chrome --remote-debugging-port=9222 --user-data-dir=/tmp/open-websearch-chrome

# Then connect through CDP
PLAYWRIGHT_PACKAGE=playwright-core PLAYWRIGHT_CDP_ENDPOINT=http://127.0.0.1:9222 SEARCH_MODE=auto npx open-websearch@latest

ログイン済み、または事前に認証を済ませた自分のブラウザーセッションを再利用したい場合は、これが最も実用的な構成です。

Windows PowerShell の例:

npm install playwright-core

& "$env:LOCALAPPDATA\Google\Chrome\Application\chrome.exe" `
  --remote-debugging-port=9222 `
  --user-data-dir="$env:TEMP\open-websearch-chrome"

$env:PLAYWRIGHT_PACKAGE="playwright-core"
$env:PLAYWRIGHT_CDP_ENDPOINT="http://127.0.0.1:9222"
$env:SEARCH_MODE="auto"
npx open-websearch@latest

モードの動作:

  • request:リクエストベースの Bing スクレイピングのみを使用します。検索ツールには searchMode パラメーターもモードに関するガイダンスもありません
  • playwright:Playwright を強制的に使用します。検索ツールには searchMode パラメーターもモードに関するガイダンスもありません。起動時に Playwright が利用可能か確認し、設定が無効な場合は警告をログに記録します。その後の検索は、明確な browser_unavailable エラーで失敗します
  • auto:Playwright が実際に使用可能か確認します(クライアントモジュールが実際に読み込まれること。ローカルで起動する場合は実際のブラウザーバイナリが存在すること)。使用可能な場合、検索ツールには searchMode パラメーター(request / auto / playwright)が公開され、エージェントにはデフォルトの auto を維持し、リクエストの結果が失敗する、空になる、またはブロックされているように見える場合に限り playwright で再試行するよう指示します。それ以外の場合、サーバーは request モードとして動作します

注:

  • PLAYWRIGHT_MODULE_PATH は PLAYWRIGHT_PACKAGE より優先されます
  • PLAYWRIGHT_WS_ENDPOINT は PLAYWRIGHT_CDP_ENDPOINT より優先されます
  • リモートエンドポイントでは PLAYWRIGHT_EXECUTABLE_PATH とローカルプロキシの起動フラグは無視されます
  • Playwright が使用可能な場合、ブロックされた CSDN/Zhihu の記事取得や一般的なウェブページの取得も、ブラウザーから取得した Cookie を使って再試行できます
  • Playwright がない場合、fetchWebContent はリクエストのみの経路を使用します。公開ページは引き続き利用できる場合がありますが、ブラウザー Cookie またはブラウザーでレンダリングされた HTML を必要とするページは失敗することがあります。

ブラウザー状態に関する注記(ローカルの共有プロファイル):

  • ローカルブラウザーモードでは、取得処理間およびプロセスの再起動後も、永続コンテキスト/ページが再利用されます。そのため、同じオリジンの Cookie、ストレージ、キャッシュ、Service Worker の状態は、ブラウザーモードでの取得間に保持されます。
  • これは、単一ユーザーによる状態を維持するスクレイピングを意図した動作です(ボット対策の状態を維持し、ブラウザーの起動を繰り返さないようにします)。相互に信頼していない呼び出し元でデーモンを共有する場合は、ローカルの共有プロファイルに頼らず、PLAYWRIGHT_WS_ENDPOINT/PLAYWRIGHT_CDP_ENDPOINT を介して各呼び出し元を分離されたブラウザーに接続するか、それぞれの呼び出し元に独自の OPEN_WEBSEARCH_PROFILE_DIR を指定してください。
  • この共有状態はサービスレベルのものであり、公開ウェブページへの匿名アクセスのみを想定しています。サービス自体がサイトにログインすることはないため、個人の認証情報が保持されることはありません。ログイン済みまたはパーソナライズされたセッションの保存を前提にしないでください。リモートエンドポイント(PLAYWRIGHT_WS_ENDPOINT/PLAYWRIGHT_CDP_ENDPOINT)は接続先ブラウザーの状態を引き継ぐため、個人のログイン済みブラウザーを指定すると、そのブラウザーのログイン状態やパーソナライズ状態もこのサービスと共有されます。
  • プロファイルの状態を消去するには、ローカルブラウザーが起動していない状態で、OPEN_WEBSEARCH_PROFILE_DIR(デフォルト:<tmpdir>/open-websearch-browser-profiles)配下のブラウザープロファイルディレクトリを削除してください。
ローカルインストール
  1. このリポジトリをクローンまたはダウンロードします
  2. 依存関係をインストールします:
npm install

これにより、コア MCP サーバーのみがインストールされます。Playwright クライアントを自分でインストールまたは接続するまでは、ブラウザーのフォールバックは任意です。 3. サーバーをビルドします:

npm run build
  1. MCP 設定にサーバーを追加します:

Cherry Studio:

{
  "mcpServers": {
    "web-search": {
      "name": "Web Search MCP",
      "type": "streamableHttp",
      "description": "Multi-engine web search with article fetching",
      "isActive": true,
      "baseUrl": "http://localhost:3000/mcp"
    }
  }
}

VSCode(Claude Dev Extension):

{
  "mcpServers": {
    "web-search": {
      "transport": {
        "type": "streamableHttp",
        "url": "http://localhost:3000/mcp"
      }
    },
    "web-search-sse": {
      "transport": {
        "type": "sse",
        "url": "http://localhost:3000/sse"
      }
    }
  }
}

Claude Desktop:

{
  "mcpServers": {
    "web-search": {
      "type": "http",
      "url": "http://localhost:3000/mcp"
    },
    "web-search-sse": {
      "type": "sse",
      "url": "http://localhost:3000/sse"
    }
  }
}

NPX コマンドライン設定:

{
  "mcpServers": {
    "web-search": {
      "args": [
        "open-websearch@latest"
      ],
      "command": "npx",
      "env": {
        "MODE": "stdio",
        "DEFAULT_SEARCH_ENGINE": "duckduckgo",
        "ALLOWED_SEARCH_ENGINES": "duckduckgo,bing,exa"
      }
    }
  }
}

Windows の NPX 設定:

{
  "mcpServers": {
    "web-search": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "open-websearch@latest"
      ],
      "env": {
        "MODE": "stdio",
        "DEFAULT_SEARCH_ENGINE": "duckduckgo",
        "SYSTEMROOT": "C:/Windows"
      }
    }
  }
}

プロキシと TLS に関する注意事項:

  • open-websearch は、Axios の環境プロキシの自動検出を内部的に無効にし、明示的な USE_PROXY + PROXY_URL の経路のみを使用するようになりました。
  • USE_PROXY=true の場合、Axios ベースのすべてのネットワークリクエストは、直接リクエストと環境プロキシの動作を混在させず、設定された PROXY_URL の経路に従います。
  • PROXY_URL がローカルのルールベースのプロキシクライアントを指している場合、接続先を DIRECT にするかプロキシ経由にするかは、そのクライアントが引き続き判断できます。
  • PROXY_URL が固定の上流プロキシまたは海外へのエグレスを指している場合、Baidu、CSDN、Juejin、Linux.do、GitHub など、地域によって動作が異なるサイトの挙動が以前と変わることがあります。
  • ホストマシンに HTTP_PROXY または HTTPS_PROXY が設定されていても、サーバー内部のリクエストの動作を上書きしなくなります。
  • サイトで中間 CA が不足している場合は、Windows で NODE_EXTRA_CA_CERTS を設定することをおすすめします。
  • FETCH_WEB_INSECURE_TLS=true は、fetchWebContent のリクエスト処理に対する最終手段としてのみ使用してください。TLS 検証が弱まり、Playwright のブラウザーナビゲーションには影響しません。

Cherry Studio のローカル STDIO 設定(Windows):

{
  "mcpServers": {
    "open-websearch-local": {
      "command": "node",
      "args": ["C:/path/to/your/project/build/index.js"],
      "env": {
        "MODE": "stdio",
        "DEFAULT_SEARCH_ENGINE": "duckduckgo",
        "ALLOWED_SEARCH_ENGINES": "duckduckgo,bing,exa"
      }
    }
  }
}
Docker でのデプロイ

Docker Compose を使ったクイックデプロイ:

docker-compose up -d

または Docker を直接使用します:

docker run -d --name web-search -p 3000:3000 -e ENABLE_CORS=true -e CORS_ORIGIN=* ghcr.io/aas-ee/open-web-search:latest

環境変数の設定:

変数デフォルト値オプション説明
ENABLE_CORSfalsetrue、falseCORS を有効にします
CORS_ORIGIN*任意の有効なオリジンCORS オリジンの設定
DEFAULT_SEARCH_ENGINEbingbing、duckduckgo、exa、brave、baidu、csdn、linuxdo、juejin、startpage、sogou、hackernewsデフォルトの検索エンジン
USE_PROXYfalsetrue、falseHTTP プロキシを有効にします
PROXY_URLhttp://127.0.0.1:7890任意の有効な URLプロキシサーバーの URL
FAKE_IP_CIDRSemptyカンマ区切りの CIDR リストこれらの CIDR 内の DNS 応答を合成された fake-IP の結果として扱い、プライベートネットワークの DNS 応答としてブロックしません。リテラルのプライベート/ローカル宛先や、その他のプライベートネットワークの DNS 応答は引き続きブロックされます
PORT30001-65535サーバーのポート

次に、MCP クライアントで設定します:

{
  "mcpServers": {
    "web-search": {
      "name": "Web Search MCP",
      "type": "streamableHttp",
      "description": "Multi-engine web search with article fetching",
      "isActive": true,
      "baseUrl": "http://localhost:3000/mcp"
    },
    "web-search-sse": {
      "transport": {
        "name": "Web Search MCP",
        "type": "sse",
        "description": "Multi-engine web search with article fetching",
        "isActive": true,
        "url": "http://localhost:3000/sse"
      }
    }
  }
}

使用ガイド

このサーバーは、search、fetchLinuxDoArticle、fetchCsdnArticle、fetchGithubReadme、fetchJuejinArticle、fetchWebContent の 6 つのツールを提供します。

ローカルデーモンの HTTP API(serve、status、GET /health、POST /search、POST /fetch-*)については、docs/http-api.md を参照してください。

search ツールの使用方法
{
  "query": string,        // Search query
  "limit": number,        // Optional: Number of results to return (default: 10)
  "engines": string[],    // Optional: Engines to use (bing,baidu,linuxdo,csdn,duckduckgo,exa,brave,juejin,startpage,sogou,hackernews) default runtime-configured engine
  "searchMode": string    // Optional: request, auto, or playwright (currently only affects Bing)
}

使用例:

use_mcp_tool({
  server_name: "web-search",
  tool_name: "search",
  arguments: {
    query: "search content",
    limit: 3,  // Optional parameter
    engines: ["bing", "csdn", "duckduckgo", "exa", "brave", "juejin", "sogou"] // Optional parameter, supports multi-engine combined search
  }
})

応答例:

[
  {
    "title": "Example Search Result",
    "url": "https://example.com",
    "description": "Description text of the search result...",
    "source": "Source",
    "engine": "Engine used"
  }
]
fetchCsdnArticle ツールの使用方法

CSDN ブログ記事の全コンテンツを取得するために使用します。

{
  "url": string    // URL from CSDN search results using the search tool
}

使用例:

use_mcp_tool({
  server_name: "web-search",
  tool_name: "fetchCsdnArticle",
  arguments: {
    url: "https://blog.csdn.net/xxx/article/details/xxx"
  }
})

応答例:

[
  {
    "content": "Example search result"
  }
]
fetchLinuxDoArticle ツールの使用方法

Linux.do フォーラム記事の全コンテンツを取得するために使用します。

{
  "url": string    // URL from linuxdo search results using the search tool
}

使用例:

use_mcp_tool({
  server_name: "web-search",
  tool_name: "fetchLinuxDoArticle",
  arguments: {
    url: "https://xxxx.json"
  }
})

応答例:

[
  {
    "content": "Example search result"
  }
]
fetchGithubReadme ツールの使用方法

GitHub リポジトリから README のコンテンツを取得するために使用します。

{
  "url": string    // GitHub repository URL (supports HTTPS, SSH formats)
}

使用例:

use_mcp_tool({
  server_name: "web-search",
  tool_name: "fetchGithubReadme",
  arguments: {
    url: "https://github.com/Aas-ee/open-webSearch"
  }
})

対応する URL 形式:

  • HTTPS:https://github.com/owner/repo
  • .git 付き HTTPS:https://github.com/owner/repo.git
  • SSH:[email protected]:owner/repo.git
  • パラメーター付き URL:https://github.com/owner/repo?tab=readme

応答例:

[
  {
    "content": "<div align=\"center\">\n\n# Open-WebSearch MCP Server..."
  }
]
fetchWebContent ツールの使用方法

Markdown ファイル(.md)、通常のページ、Playwright が設定されている場合の JavaScript でレンダリングされたページなど、公開 HTTP(S) リンクからコンテンツを直接取得します。

{
  "url": string,          // Public HTTP(S) URL
  "maxChars": number,     // Optional: max returned content length (1000-200000, default 30000)
  "renderMode": string,   // Optional: request, auto (default), or browser
  "readability": boolean, // Optional: use Mozilla Readability for HTML
  "includeLinks": boolean // Optional: preserve links from Readability output
}

request はブラウザーを起動せず、ブラウザーの Cookie も使用しません。auto は既存のリクエスト優先の動作を維持し、必要な場合にのみブラウザーによる補助を使用します。browser はページを直接レンダリングし、Playwright またはそのブラウザーターゲットを利用できない場合は、明確なエラーを返します。初期 URL と最終 URL は、いずれも公開ネットワークの安全性チェックの対象です。

ブラウザーリクエストは処理を続行する前に再検証されますが、このプロセスでは、Chromium が最終的に使用するソケットに DNS の応答を固定しません。そのため、リモートの Playwright/CDP エンドポイントでは、信頼できる DNS と送信トラフィックのポリシーを独自に適用する必要があります。

使用例:

use_mcp_tool({
  server_name: "web-search",
  tool_name: "fetchWebContent",
  arguments: {
    url: "https://raw.githubusercontent.com/Aas-ee/open-webSearch/main/README.md",
    maxChars: 12000,
    renderMode: "auto"
  }
})

レスポンス例:

{
  "url": "https://raw.githubusercontent.com/Aas-ee/open-webSearch/main/README.md",
  "finalUrl": "https://raw.githubusercontent.com/Aas-ee/open-webSearch/main/README.md",
  "contentType": "text/plain; charset=utf-8",
  "title": "",
  "retrievalMethod": "request",
  "truncated": false,
  "content": "# Open-WebSearch MCP Server ..."
}
fetchJuejinArticle ツールの使用方法

Juejin の記事のコンテンツ全体を取得します。

{
  "url": string    // Juejin article URL from search results
}

使用例:

use_mcp_tool({
  server_name: "web-search",
  tool_name: "fetchJuejinArticle",
  arguments: {
    url: "https://juejin.cn/post/7520959840199360563"
  }
})

対応する URL 形式:

  • https://juejin.cn/post/{article_id}

レスポンス例:

[
  {
    "content": "🚀 开源 AI 联网搜索工具:Open-WebSearch MCP 全新升级,支持多引擎 + 流式响应..."
  }
]

使用上の制限事項

このツールは複数の検索エンジンの検索結果をスクレイピングする仕組みのため、以下の重要な制限事項にご注意ください。

  1. レート制限:

    • 短時間に検索しすぎると、使用中の検索エンジンから一時的にリクエストをブロックされることがあります
    • 推奨事項:
      • 適切な検索頻度を保ってください
      • limit パラメーターを適切に使用してください
      • 必要に応じて、検索の間隔を空けてください
  2. 結果の正確性:

    • 対応する検索エンジンの HTML 構造に依存するため、検索エンジンの更新後に失敗することがあります
    • 一部の結果には、説明などのメタデータが含まれない場合があります
    • 複雑な検索演算子は、想定どおりに機能しない場合があります
  3. 法的条件:

    • このツールは個人利用のみを目的としています
    • 対応する検索エンジンの利用規約を遵守してください
    • 実際の使用状況に応じて、適切なレート制限を設定してください
  4. 検索エンジンの設定:

    • デフォルトの検索エンジンは、DEFAULT_SEARCH_ENGINE 環境変数で設定できます
    • 対応する検索エンジン:bing、duckduckgo、exa、brave、baidu、csdn、linuxdo、juejin、startpage、sogou、hackernews
    • 特定のウェブサイトを検索する場合は、デフォルトの検索エンジンが使用されます
  5. プロキシの設定:

    • 特定の地域で一部の検索エンジンを利用できない場合は、HTTP プロキシを設定できます
    • 環境変数 USE_PROXY=true でプロキシを有効にしてください
    • PROXY_URL でプロキシサーバーのアドレスを設定してください
    • Clash の fake-ip/TUN 設定を使用する場合は、FAKE_IP_CIDRS で合成 DNS 範囲を設定してください(例:198.18.0.0/15)

コントリビューション

イシューの報告や機能改善の提案をお待ちしています!

コントリビューターガイド

このリポジトリをフォークして独自の Docker イメージを公開する場合は、以下の設定が必要です。

GitHub Secrets の設定

Docker イメージのビルドと公開を自動化するには、GitHub リポジトリの設定(Settings → Secrets and variables → Actions)で以下のシークレットを追加してください。

必須のシークレット:

  • GITHUB_TOKEN:GitHub によって自動的に提供されます(設定は不要です)

任意のシークレット(Alibaba Cloud ACR 用):

  • ACR_REGISTRY:Alibaba Cloud Container Registry の URL(例:registry.cn-hangzhou.aliyuncs.com)
  • ACR_USERNAME:Alibaba Cloud ACR のユーザー名
  • ACR_PASSWORD:Alibaba Cloud ACR のパスワード
  • ACR_IMAGE_NAME:ACR 内のイメージ名(例:your-namespace/open-web-search)
CI/CD ワークフロー

このリポジトリには、以下を自動的に実行する GitHub Actions ワークフロー(.github/workflows/docker.yml)が含まれています。

  1. トリガー条件:

    • main ブランチへのプッシュ
    • バージョンタグ(v*)のプッシュ
    • ワークフローの手動実行
  2. ビルドとプッシュ先:

    • GitHub Container Registry(ghcr.io):常に有効
    • Alibaba Cloud Container Registry:ACR のシークレットが設定されている場合のみ有効
  3. イメージタグ:

    • ghcr.io/your-username/open-web-search:latest
    • your-acr-address/your-image-name:latest(ACR が設定されている場合)
フォークして公開する手順:
  1. リポジトリをフォークして、ご自身の GitHub アカウントに追加します
  2. シークレットを設定します(ACR への公開が必要な場合):
    • フォークしたリポジトリで Settings → Secrets and variables → Actions に移動します
    • 上記の ACR 関連シークレットを追加します
  3. main ブランチに変更をプッシュするか、バージョンタグを作成します
  4. GitHub Actions が自動的にビルドしてプッシュします
  5. イメージを使用し、Docker コマンドを更新します:
    docker run -d --name web-search -p 3000:3000 -e ENABLE_CORS=true -e CORS_ORIGIN=* ghcr.io/your-username/open-web-search:latest
    
注意事項:
  • ACR シークレットを設定しない場合、ワークフローは GitHub Container Registry にのみ公開します
  • GitHub リポジトリで Actions が有効になっていることを確認してください
  • ワークフローでは、GitHub のユーザー名(小文字に変換したもの)が GHCR のイメージ名として使用されます

スター履歴

このプロジェクトが役に立った場合は、ぜひ ⭐ Star をお願いします!

スター履歴チャート

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。