Agent Search mcp について
Agent Search MCP は Node.js で実装された MCP サーバーおよびコマンドラインツールで、API キーなしで英語と中国語の Web 検索を行えます。プロバイダーの失敗や予算上の制限を可視化したまま多源の証拠を返し、検索結果を確認したい AI エージェントを対象としています。
主な機能
- 01ゼロキーで使える検索エンジン 8 種
- 02ウォーターフォール方式の段階的検索
- 03提供元ファミリー数を含む多源の証拠
- 04partialFailures での失敗情報の保持
- 05ルーティングポリシーに基づくオプションの有料プロバイダー
活用シーン
- 01API キーなしで AI エージェントが行う簡易的な Web 検索
- 02公式ソースに基づく主張の検証
- 03Sogou や Baidu による中国語 Web コンテンツの検索
MCP 対応
本プロジェクトは MCP サーバーとして動作し、free_search や free_extract などの検索・ページ抽出ツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y agent-search-mcpBRAVE_API_KEYシークレットBrave Search API key (optional, enables Brave engine)TAVILY_API_KEYシークレットTavily Search API key (optional, enables Tavily engine)EXA_API_KEYシークレットExa Search API key (optional, enables Exa engine)YDC_API_KEYシークレットYou.com Search API key (optional, enables You.com engine)TENCENT_WSA_API_KEYシークレットTencent Web Search API key (optional, enables Tencent WSA engine)BOCHA_API_KEYシークレットBocha Web Search API key (optional, enables Bocha engine)SERPER_API_KEYシークレットSerper API key (optional, enables Google SERP search)SEARCH_PROVIDER_MODEProvider policy: free_first, quality_escalation, paid_first, or free_onlyPAID_ENGINE_ORDERComma-separated optional-provider preference orderローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
7掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | 検索クエリ文字列。自然言語を使用してください(例:"latest AI news 2026")。中国語の検索結果を得るには、engines に Sogou または Baidu を含めてください。 |
| limit | integer | いいえ | 返す結果の数(1-50)。デフォルトは10です。値を大きくすると token の使用量が増えます。 |
| engines | array | いいえ | 使用する検索エンジン(デフォルト:duckduckgo + sogou)。無料の検索エンジンは API キーなしで利用できます。オプションの API エンジンには、それぞれに対応する環境変数の認証情報が必要です。中国語の検索結果を得るには、sogou または baidu を含めてください。 |
詳細
Agent Search MCP:検証可能なエビデンスを備えた無料優先のウェブ検索
英語および中国語のウェブ検索に対応する Node.js MCP サーバーと CLI です。
Agent Search MCP は API キーなしで起動します。複数のソースから簡潔なエビデンスを返し、プロバイダーの障害を記録して、リクエストとエビデンスの予算によって処理を制限します。有料プロバイダーは、ポリシーと認証情報が許可する場合にのみ実行されます。
中文文档 · 製品ページ · ベンチマーク · アーキテクチャ · 変更履歴
インストール
npx -y agent-search-mcp
Node.js >= 18.17 が必要です。デフォルトのランタイムでは、ブラウザー、データベース、Python、検索 API アカウントは不要です。
MCP クライアントに接続する
Claude Desktop、Cursor、VS Code、Windsurf など、mcpServers JSON を受け付ける MCP クライアントでは、次の stdio 設定を使用してください。
{
"mcpServers": {
"agent-search": {
"command": "npx",
"args": ["-y", "agent-search-mcp"]
}
}
}
Claude Code と Codex では、MCP 設定から同じ npx -y agent-search-mcp stdio コマンドを登録できます。
オプションの Agent Skill を追加する
MCP サーバーに接続した後、Agent Skills に対応するクライアントでは、リポジトリに含まれるルーティングガイドをインストールできます。
npx skills add lennney/agent-search-mcp --skill agent-search
Use $agent-search to verify this claim with official sources. のようなリクエストで呼び出します。Agent Search Skill は、制限付きの4つの経路(簡易検索、より厳密な検証、中国語ソースの検索、選択した URL の抽出)から1つを選びます。必要な MCP ツールが存在することを確認し、インストールや設定変更の前には確認を求めます。Skill をインストールしても、MCP サーバーは起動も設定もされません。
例:制限付き検索結果を確認する
ローカルパッケージをビルドした後、プロバイダーキーを追加せずに CLI でクエリを実行します。
npm run build
fasm search "MCP server without an API key" --json
レスポンスの仕様では、検索結果のエビデンス、meta.execution、partialFailures はそれぞれ分けて扱われます。プロバイダーのタイムアウトやチャレンジは、説明のない空の結果に変換されず、エージェントから確認できます。これは仕様の例であり、現在の可用性や検索品質を示すベンチマークではありません。
グローバルインストール後、検索リクエストを送信せずにローカルのランタイムを確認します。
npm install -g agent-search-mcp
fasm doctor
Agent Search MCP を選ぶ理由
| 必要なこと | 製品の動作 |
|---|---|
| 無料のウェブ検索 | API アカウントなしで、キー不要のソースを利用できます |
| プロバイダーのコスト管理 | 明示的なルーティングポリシーがある場合にのみ、有料プロバイダーを実行します |
| トークンコストの管理 | 簡潔な出力と単一のエビデンス予算によって、レスポンスサイズを制限します |
| 複数ソースのエビデンス | 結果には、出所、関連度、プロバイダーファミリー数、部分的な障害が保持されます |
| 中国語のウェブ検索 | Sogou と Baidu が、翻訳レイヤーを介さずに中国語のクエリに対応します |
| 軽量なセルフホスト運用 | stdio、Streamable HTTP、CLI に対応する純粋な Node.js ランタイムです |
通常のマルチエンジンラッパーとの違い
| 通常のマルチエンジン集約 | Agent Search MCP |
|---|---|
| 重複を除いた N 件の結果を返します | 結果に加えて、独立したソース(アダプター名ではなく、プロバイダーファミリー)の数を返します |
| プロバイダーに障害が発生すると、一部の結果が何も通知されずに除外されます | すべての障害が partialFailures に残ります(タイムアウト、レート制限、チャレンジ、権限、予算) |
| 結果数が十分に見えると停止します | 品質ゲート(件数、関連性、信頼度、ソースの網羅性)を通過した場合にのみ停止し、stop_reason を返します |
| 固定サイズの出力です | 共通のエビデンス予算で応答トークン数を制限し、コンパクトなテキストでも出典情報を保持します |
| 1 つのアダプターを 1 つのソースとして数えます | 複数のアダプターを通じて同じ上流ソースを利用しても、source_count が水増しされることはありません |
1 分間のオフラインデモでは、本番環境のエビデンススコアラーとフォーマッターを通じて、これらの違いを再現します。
検索エビデンスを確認する
各 JSON 応答には、1 つの検索エビデンスパケットが含まれます。これは、結果を使う前にエージェントが確認する必要のあるルーティングに関する質問に答えます。
| 質問 | 応答フィールド |
|---|---|
| どのアダプターが実行されましたか? | meta.execution.searched_engines |
| ルーターが停止した理由は何ですか? | meta.execution.stop_reason および meta.execution.quality_gate |
| リクエストは作業上限に達しましたか? | meta.execution.budget |
| エビデンスは切り詰められましたか? | meta.evidence_budget |
| 上流のプロバイダーに障害が発生しましたか? | partialFailures |
| 複数のアダプターが独立したソースを表していますか? | results[].source_count は、アダプター名ではなくプロバイダーファミリーを数えます |
1 分間のオフライン契約デモを実行します。
npm run demo:evidence
npm run demo:evidence -- --json
本番環境のエビデンススコアラー、フォーマッター、MCP 出力ヘルパーを通じて、3 つの合成シナリオを再現します。同一ファミリーのアダプターの重複、確認可能なフォールバックの失敗、上限付きの品質ゲートによる停止です。ライブでの利用可能性や検索品質について主張するものではなく、ネットワークリクエストも実行しません。
デフォルトの free_first ポリシーでは、設定された API 認証情報を使用しません。
free_only は有料プロバイダーをブロックします。quality_escalation は、無料エビデンスが品質ゲートを通過しなかった場合に、設定済みの有料プロバイダーを 1 つ呼び出すことができます。一方、paid_first は無料のフォールバックより先にそのプロバイダーを試します。
リクエスト予算は、アダプターの試行回数、経過時間、採用する結果数に上限を設けます。 エビデンス予算は、応答全体でクエリに関連する文章の数を制限します。 コンパクトモードでは、最初の結果には詳細な情報を保持し、後続の項目は出典を保持した参照情報に縮小します。
測定されたトークン削減
チェックイン済みのバイリンガルフィクスチャは、固定されたトークナイザーを使用してフォーマットを測定します。
| 出力 | クエリあたりの平均トークン数 | 通常出力との比較での削減率 |
|---|---|---|
| 通常 | 2396.0 | |
| コンパクト | 1650.1 | 31.1% |
| コンパクト+ | 1633.0 | 31.8% |
このフィクスチャは、出力フォーマットとエビデンスパケットの動作を検証します。ライブでのエンジンの利用可能性や検索品質は測定しません。ベンチマークの手法と制約を参照してください。
検索ルーターの仕組み
flowchart LR
A["AI agent"] --> M["MCP search tools"]
M --> P["Provider and request policy"]
P --> F["Zero-key sources"]
P --> O["Optional paid provider"]
F --> E["Deduplicate, rank, and preserve failures"]
O --> E
E --> B["Evidence and token budget"]
B --> R["Compact multi-source result"]
ルーターは各検索バッチを、結果、関連性、信頼度、プロバイダーファミリーの各ゲートに照らして評価します。エビデンスがこれらのゲートを通過すると停止し、その判断を meta.execution で公開します。プロバイダーの障害は partialFailures に表示されるため、結果が空でも上流のエラーが隠れることはありません。
競合状況の概要(2026-08-07)では、競争の激しい基本領域と製品のギャップを示しています。変化しうる事実について、情報源の日付と固定されたコミットを記録しています。2026-08-10 の更新では、それ以降の競合他社の動向を追加しています。直接競合するローカル製品は活動を休止しており、トークン効率に優れたエビデンスが、業界で明確に意識される差別化要因になりつつあります。以前のソースレベルの製品比較には、アーキテクチャに固有のエビデンスが記載されています。
エンジン
ランタイムには16個のアダプターが登録されています。内訳は、APIキー不要のアダプターが9個、任意のAPIアダプターが7個です。
| エンジン | アクセス | 言語 | 役割 |
|---|---|---|---|
| DuckDuckGo | APIキー不要 | en | 一般的なウェブ検索 |
| Sogou Search | APIキー不要 | zh | 中国語ウェブ検索 |
| Bing | APIキー不要 | en, zh | 多言語ウェブ検索 |
| Baidu | APIキー不要 | zh | 中国語ウェブ検索 |
| Wikipedia | APIキー不要 | en, zh, ja, de, fr, es, auto | 百科事典の参照 |
| Startpage | APIキー不要 | en, auto | プライバシー重視のウェブ検索 |
| Yandex | APIキー不要 | ru, en, auto | ロシア語および国際的なウェブ検索 |
| Mojeek | APIキー不要 | en, auto | 独立系のプライバシー重視インデックス |
| Wiby | APIキー不要 | en | 独立系の小規模ウェブインデックス |
| Brave Search | BRAVE_API_KEY | en, zh | 任意の商用ウェブ検索 |
| Tavily Search | TAVILY_API_KEY | en, zh | 任意のエージェント向け検索 |
| Exa Search | EXA_API_KEY | en, zh | 任意のニューラル検索 |
| You.com Search | YDC_API_KEY | en, zh | 任意の商用ウェブ検索 |
| Tencent Web Search API | TENCENT_WSA_API_KEY | zh | 任意の公式中国語ウェブ検索 |
| Bocha Web Search | BOCHA_API_KEY | zh, en | 任意の中国語を優先するAI検索 |
| Serper Google Search | SERPER_API_KEY | en, zh, auto | 任意のGoogle SERP検索 |
ツール
| ツール | 説明 | 最適な用途 |
|---|---|---|
free_search | 範囲を限定したフォールバック付きのマルチエンジンウェブ検索 | 手早い事実確認と一般的な情報の探索 |
free_search_advanced | フィルター付きの段階的検索と任意の補足情報取得 | ドメインポリシーと段階的な検証 |
free_extract | URLをクリーンなMarkdownとして抽出 | ソースページ全体の閲覧 |
fetch_github_readme | 公開GitHubリポジトリのREADMEを取得 | プロジェクトのドキュメント |
fetch_csdn_article | CSDNの記事を取得 | 中国語の技術記事 |
fetch_juejin_article | Juejinの記事を取得 | 中国語の開発者向け記事 |
search_with_synthesis | LLMによる統合のヒントを付けて根拠を検索 | 引用された根拠に基づく、エージェント作成の回答 |
機能の制御
| 環境変数 | デフォルト | 目的 |
|---|---|---|
ENABLED_TOOLS / DISABLED_TOOLS | all / none | ツール登録の許可リストと拒否リスト。拒否が優先されます |
ALLOWED_ENGINES / DENIED_ENGINES | all / none | エンジン実行の許可リストと拒否リスト。拒否が優先されます |
SEARCH_PROVIDER_MODE | free_first | デフォルトのルーティング:free_first、quality_escalation、paid_first、またはfree_only |
PAID_ENGINE_ORDER | brave,exa,tavily,youcom,tencent_wsa,bocha,serper | 最初に設定済みの任意プロバイダーを選択します。品質を示すものではありません |
SEARCH_BUDGET_MAX_CALLS | 16 | アダプター呼び出し回数の予算 |
SEARCH_BUDGET_MAX_ELAPSED_MS | 30000 | エンドツーエンドの経過時間の予算 |
SEARCH_BUDGET_MAX_RESULTS | 100 | 採用する生の検索結果数の予算 |
EVIDENCE_BUDGET_CHARS | 1200 | 根拠の文字数の予算 |
search_with_synthesis は、主要な検索ツールと同じ標準形式のstructuredContent根拠パケットを使用し、prompt_hintを追加します。テキストコンテンツは、簡潔な互換性用ビューにすぎません。実行メタデータでは、予定されたアダプターと、リトライを含むアダプター試行を区別します。http_requestsは、誤った精度を示すことなくすべてのアダプターのトランスポートが報告できるようになるまで、nullです。
Wibyは、公式JSON APIに基づく実際のAPIキー不要の情報源で、独立系の小規模ウェブ検索を補完するため、無料検索のウォーターフォールの後半で使用されます。任意のプロバイダーの利用にはユーザーの認証情報が必要です。登録特典や試用枠の有無とその内容は各プロバイダーが管理しており、永続的な無料アクセスとして扱われません。
すべてのツールは読み取り専用で、冪等性があります。検索のキャンセルは、レート制限による待機、リトライ、プロバイダーへのリクエスト、任意の補足情報取得に反映されます。補足情報によってスニペットが改善されることはありますが、ソースの信頼度や独立した情報源の数が増えることはありません。
free_search_advanced.time_rangeは、互換性スキーマに引き続き含まれます。一般的なウェブ検索プロバイダー間で強制可能な共通の鮮度基準がないため、サーバーは検索を実行する前にUNSUPPORTED_FILTERを返します。
設定
上記の生成された機能テーブルには、デフォルトのリクエスト予算が記載されています。これらの設定は、一般的なデプロイ方法に対応しています。
| 目的 | 環境変数 |
|---|---|
| オプションのプロバイダーを追加する | BRAVE_API_KEY、TAVILY_API_KEY、EXA_API_KEY、YDC_API_KEY、TENCENT_WSA_API_KEY、BOCHA_API_KEY、または SERPER_API_KEY |
| 支出ポリシーを選択する | SEARCH_PROVIDER_MODE、PAID_ENGINE_ORDER |
| レスポンストークン数を減らす | OUTPUT_STYLE=compact、MAX_FULL_RESULTS、SNIPPET_LENGTH、EVIDENCE_BUDGET_CHARS |
| ツールまたはエンジンを制限する | ENABLED_TOOLS、DISABLED_TOOLS、ALLOWED_ENGINES、DENIED_ENGINES |
| 明示的にプロキシを使用する | DUCKDUCKGO_PROXY_URL、SOGOU_PROXY_URL、MOJEEK_PROXY_URL、WIBY_PROXY_URL、または PROXY_URL とともに USE_PROXY=true |
| ユーザーが所有するプロキシプールを使用する | DUCKDUCKGO_PROXY_URLS、SOGOU_PROXY_URLS、MOJEEK_PROXY_URLS、または WIBY_PROXY_URLS に、HTTP(S) プロキシ URL を 2~16 個含む JSON 配列を指定します |
| 検索結果の完全一致キャッシュを永続化する | SEARCH_CACHE_DIRECTORY、SEARCH_CACHE_TTL_MS、SEARCH_CACHE_MAX_ENTRIES |
| オプションのセマンティック処理を有効にする | SEMANTIC_DEDUP、SEMANTIC_RERANK、DEDUP_THRESHOLD、RERANK_TOP_K |
API キーを追加しても、有料トラフィックが許可されるわけではありません。プロバイダーの使用はルーティングポリシーで制御します。デフォルトの検索結果完全一致キャッシュはメモリ上に保持されます。ローカルへの永続化を有効にするには、SEARCH_CACHE_DIRECTORY を設定します。Python と Model2Vec を使用するオプション機能は、セマンティック処理のみです。
プロキシプールでは、論理クエリに基づいて決定的に最初の出口を選択し、複数ステップにわたるプロバイダーリクエストでは同じ出口を維持します。次に設定された出口へ移行できるのは、トランスポート障害が発生した場合のみです。トランスポート障害が発生した出口は 60 秒間クールダウンされます。403、429、チャレンジページなどの HTTP レスポンスによってプロキシが切り替わることはなく、プロバイダー既存のクールダウン規約に従います。エンジン固有の単一プロキシ変数は、対応するプールより優先されます。fasm doctor でプロキシ認証情報が出力されることはありません。
HTTP デプロイ
HTTP モードでは、HTTP_ALLOW_UNAUTHENTICATED=true を設定しない限り、HTTP_AUTH_TOKEN が必要です。Origin ヘッダーを含むブラウザーリクエストは、ALLOWED_ORIGINS と一致する必要があります。TLS 終端、トークンローテーション、リバースプロキシの例については、HTTP デプロイガイドを参照してください。
CLI
このパッケージには fasm CLI が含まれています。
fasm search "TypeScript MCP server"
fasm search "query" --count 5 --engines bing,baidu,youcom --json
fasm extract "https://example.com"
fasm extract "https://example.com" --json
fasm doctor
fasm doctor --json
HTTP_AUTH_TOKEN=change-me MODE=http npx agent-search-mcp
fasm doctor はネットワークプローブを行わずにローカル設定を読み込み、認証情報やプロキシの値を出力することはありません。
ドキュメントとエビデンス
| ドキュメント | 内容 |
|---|---|
| システムアーキテクチャ | ルーティング、エビデンス、プロバイダーファミリー、設定 |
| 競合状況(2026-08-10) | 2026-08-10 までの競合他社の動向、ポジショニング、改善の優先事項 |
| 競合状況(2026-08-07) | 競合他社のベースライン、期待事項、製品ギャップのスナップショット |
| 製品比較 | Agent 検索製品のソースレベルでのレビュー |
| ベンチマーク | トークンフィクスチャ、ライブ実行の範囲、品質評価方法 |
| v3.2.0 リリースノート | プロバイダーポリシー、予算、移行に関する注記 |
| 以前のリリース候補のエビデンス | 拡張前のパッケージインストールマトリックスと制限事項 |
| MCP 2026 の準備状況 | 分離されたプロトコル実験と残りのゲート |
関連プロジェクト:Slim Guard
Agent Search は検索取得の処理を制御し、検索エビデンスを圧縮します。 mcp-slim-guard は、エージェントと MCP サーバーの間に位置し、ツールスキーマの圧縮とセキュリティポリシーを処理します。
npm install -g mcp-slim-guard
開発
git clone https://github.com/lennney/agent-search-mcp.git
cd agent-search-mcp
npm install
npm run build
npm test
npm run dev # stdio mode
npm run dev:http # HTTP mode (port 3000)
安定版パッケージは Node.js 18、20、22 をサポートしています。分離された MCP 2026 実験には、Node.js 20 以降が必要です。
ライセンス
Aas-ee による open-websearch をベースにしています。
Agent Search MCP がエージェントの役に立ったら、リポジトリにスターを付けて、 ほかの開発者にもこのプロジェクトを見つけてもらいましょう。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。