SearchForge について
SearchForge は、LLM、エージェント、RAGワークフロー向けのオープンソース検索API兼MCPサーバーです。ウェブ、コード、学術、コミュニティの情報源へクエリを振り分け、回答を生成せずに構造化結果や整形済みMarkdownを返します。
主な機能
- 01意図に応じた複数ソース検索
- 02URLを整形済みMarkdownで取得
- 03ソース障害の分離とランキング統合
- 04CLI、REST API、MCP、TypeScript SDK
- 05ソースの状態と遅延の診断
- 06キー不要のソースを標準で有効化
活用シーン
- 01エージェントやRAG用の情報源を検索
- 02コードリポジトリーや学術成果を検索
- 03公開記事をMarkdownで取得
- 04検索ソースの稼働状況を診断
MCP 対応
stdio MCPで `web_search`、`read_url`、`search_status` の3つのツールを提供します。検索と状態確認の応答には、構造化されたMCPコンテンツと読みやすいテキストが含まれます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e SEARCHFORGE_SEARXNG_URL -e GITHUB_TOKEN -e CROSSREF_MAILTO -e BRAVE_SEARCH_API_KEY ghcr.io/divyanshu-iitian/searchforge-mcp:0.2.0SEARCHFORGE_SEARXNG_URLOptional URL of a self-hosted SearXNG instanceGITHUB_TOKENシークレットOptional GitHub token for higher public API quotasCROSSREF_MAILTOOptional email address for Crossref polite-pool routingBRAVE_SEARCH_API_KEYシークレットOptional Brave Search API keyローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/divyanshu-iitian/searchforge-mcp:0.2.0stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
SearchForge
LLM、エージェント、RAG 向けのオープンソース Web 検索 API および MCP サーバー。
1 つのローカルゲートウェイ。意図を認識する検索。整った Markdown。REST、MCP、CLI、TypeScript に対応。
SearchForge は、LLM、AI エージェント、検索拡張生成(RAG)パイプライン向けの無料のオープンソース Web 検索 API および MCP サーバーです。 有料の検索サービスとの連携をすべてのプロジェクトに強制することなく、予測可能な検索レイヤーを提供します。SearchForge は各クエリを適切なソースに振り分け、プロバイダーの障害を分離し、URL を重複排除してランキングを統合し、公開ページを LLM が利用しやすい Markdown に変換します。
回答を生成したり、引用を隠したり、公開 SearXNG インスタンスをスクレイピングしたり、テレメトリーを送信したりすることはありません。
提供機能
| 機能 | デフォルトのソース | 費用/認証情報 |
|---|---|---|
auto | 意図に応じてソースを振り分け | デフォルトではキー不要 |
web | Wikipedia、オプションでプライベート SearXNG | キー不要/セルフホスト可能 |
code | GitHub リポジトリ検索 | キー不要、トークンは任意 |
academic | Crossref の文献情報と DOI メタデータ | キー不要 |
community | Algolia 経由の Hacker News | キー不要、コミュニティサービス |
read_url | Jina Reader | キー不要、現在はレート制限あり |
SearchForge は、キー不要のすべてのアダプターを有効にした状態で起動します。デフォルトの auto は、Web 検索をフォールバックとして維持しながら、コード、研究、最新情報/コミュニティ関連の意図を適切なソースに振り分けます。GitHub トークンを設定すると公開 API のクォータが増えるだけで、Brave はキーを使うオプションのバックエンドとして利用できます。幅広く独立した Web メタ検索には、同梱の SearXNG スタックを利用できます。
クイックスタート
クローンせずに試す
npx --yes --package github:divyanshu-iitian/SearchForge \
searchforge search "latest open-source agent frameworks"
初回実行時に GitHub からパッケージをダウンロードしてビルドします。カテゴリを選択しない場合、検索には意図に応じて振り分ける auto が使われます。
キー不要のローカル CLI
git clone https://github.com/divyanshu-iitian/SearchForge.git
cd SearchForge
npm install
npm run build
node dist/cli.js search "latest open-source agent frameworks"
node dist/cli.js search "retrieval augmented generation" --category academic
node dist/cli.js search "local LLM tooling" --category community
node dist/cli.js read "https://example.com"
node dist/cli.js doctor
プライベート SearXNG によるフル Web 検索
docker compose up --build
curl -s http://localhost:3000/v1/search \
-H "content-type: application/json" \
-d '{"query":"open source vector databases","category":"web","limit":5}'
これにより、SearchForge はポート 3000 で、プライベートかつ JSON が有効な SearXNG はポート 8080 で起動します。このスタックを外部に公開する前に、SearXNG のシークレットを変更し、SEARCHFORGE_API_KEY を設定して、信頼できるプロキシで TLS を終端してください。
無料ツール
機能別に検索
searchforge search "latest open-source agent frameworks"
searchforge search "browser agent" --category code
searchforge search "semantic reranking" --category academic --json
searchforge search "Show HN search engine" --category community
デフォルトの auto カテゴリは、コード、学術、最新情報/コミュニティ関連の兆候を検出し、Web 検索のフォールバックと並行して、該当するソース群にクエリを送信します。カテゴリを明示すると、関係のないプロバイダーへのクエリを防げます。providers リストを明示するとカテゴリによる振り分けが上書きされるため、評価に便利です。
URL を Markdown として読み込む
searchforge read "https://example.com/article"
read_url が受け付けるのは、公開 HTTP(S) URL のみです。認証情報、localhost、プライベート IP リテラル、Web 以外のプロトコルは拒否されます。レスポンスにはサイズ上限とタイムアウトが設定され、キャッシュされます。
検索経路全体を診断する
searchforge doctor
Doctor は、実際の範囲を限定したプローブを実行し、各プロバイダーのアクセス層、機能、レイテンシ、エラーを報告します。ソースに障害が発生しても、誤解を招く全か無かのステータスではなく、degraded と表示します。
MCP
SearchForge は、次の3つの stdio ツールを公開しています。
web_search— ルーティングされ、引用に対応した構造化検索read_url— 公開 URL からクリーンな Markdown を取得search_status— 機能とレイテンシのライブレポート
{
"mcpServers": {
"searchforge": {
"command": "node",
"args": ["/absolute/path/to/SearchForge/dist/mcp.js"],
"env": {
"SEARCHFORGE_SEARXNG_URL": "http://localhost:8080"
}
}
}
}
検索ツールとステータスツールは、読みやすいテキストに加えて、MCP の構造化コンテンツも返します。
クローンせずに、GitHub から MCP サーバーを直接実行できます。
{
"mcpServers": {
"searchforge": {
"command": "npx",
"args": [
"--yes",
"--package",
"github:divyanshu-iitian/SearchForge",
"searchforge-mcp"
]
}
}
}
SearchForge は、
公式 MCP Registry
にも io.github.divyanshu-iitian/searchforge として公開されています。Docker コマンドに対応する MCP クライアントから、Registry に登録された OCI イメージを直接実行するには、次のようにします。
{
"mcpServers": {
"searchforge": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/divyanshu-iitian/searchforge-mcp:0.2.0"
]
}
}
}
REST API
検索
POST /v1/search
Content-Type: application/json
{
"query": "open source reranking models",
"category": "academic",
"limit": 8,
"language": "en",
"freshness": "month",
"safeSearch": "moderate"
}
{
"schemaVersion": "1.0",
"query": "open source reranking models",
"category": "academic",
"results": [
{
"title": "Example work",
"url": "https://doi.org/10.0000/example",
"snippet": "Authors · Publisher · journal-article",
"source": "crossref",
"sources": ["crossref"],
"score": 0.016393
}
],
"providers": [
{
"provider": "crossref",
"ok": true,
"latencyMs": 241,
"resultCount": 8
}
],
"tookMs": 243,
"cached": false
}
読み取り
POST /v1/read
Content-Type: application/json
{"url":"https://example.com/article"}
その他のエンドポイント:
GET /healthz Process liveness
GET /v1/providers Configured capabilities and access tiers
GET /v1/doctor Live dependency health
完全な OpenAPI コントラクトをご覧ください。
TypeScript SDK
import {
CrossrefProvider,
GithubProvider,
JinaReader,
SearchForge,
} from "searchforge-rag";
const forge = new SearchForge({
providers: [new GithubProvider(), new CrossrefProvider()],
reader: new JinaReader(),
timeoutMs: 8_000,
});
const evidence = await forge.search({
query: "agentic retrieval",
category: "academic",
limit: 10,
});
const page = await forge.read("https://example.com/research");
npm でリリースされるまでは、次のようにします。
npm install github:divyanshu-iitian/SearchForge
プロバイダーの詳細
| プロバイダー | 機能 | アクセス | 有効化 |
|---|---|---|---|
| SearXNG | ウェブ | セルフホスト、ベンダー料金なし | SEARCHFORGE_SEARXNG_URL |
| Wikipedia | ウェブ知識のフォールバック | キー不要 | 常時 |
| GitHub | コードリポジトリ | キー不要。認証なしの REST リクエストは1時間あたり60回。検索にはさらに厳しい制限があります | 常時 |
| Crossref | 学術メタデータ | キー不要。mailto を推奨 | 常時 |
| HN Algolia | コミュニティ | キー不要。コミュニティ運営のため、利用可能性は変動します | 常時 |
| Jina Reader | URL から Markdown への変換 | キー不要。現在、公表されているキー不要の利用枠は20 RPMです | 常時 |
| Brave Search | ウェブ | API キー | BRAVE_SEARCH_API_KEY |
SearchForge は、公開されている SearXNG インスタンスを意図的に設定しません。JSON を無効にしていたり、自動化されたトラフィックを制限していたりすることが多いためです。安定した無料の方法は Docker スタックです。
仕組み
Agent / RAG / MCP client
|
validate + route
|
+--------+---------+-----------+
| | | |
web code academic community read_url
| | | | |
SearXNG GitHub Crossref Hacker News Jina Reader
Wikipedia
+--------+---------+-----------+
|
normalize -> canonicalize -> deduplicate -> reciprocal-rank fusion
|
versioned evidence + provenance + per-source health
冪等なプロバイダー呼び出しはそれぞれ、中断可能な独自のタイムアウトを持ちます。1つの障害によって、正常な結果が失われることはありません。重複排除の前にトラッキングパラメーターを削除し、結果に寄与した各プロバイダーを sources に保持します。
この機能優先の設計は、Agent Reach に着想を得ています。Agent Reach は、エージェントが多くの上流ツールを直接操作できるようにします。SearchForge は、RAG アプリケーション向けの安定した埋め込み可能な検索 API を提供することで、このアプローチを補完します。
設定
| 変数 | デフォルト | 用途 |
|---|---|---|
SEARCHFORGE_SEARXNG_URL | 未設定 | プライベートな SearXNG ベース URL |
GITHUB_TOKEN | 未設定 | GitHub のクォータを増やすオプション |
CROSSREF_MAILTO | 未設定 | Crossref の polite-pool 識別情報 |
BRAVE_SEARCH_API_KEY | 未設定 | Brave バックエンドのオプション |
SEARCHFORGE_API_KEY | 未設定 | REST のベアラー認証または x-api-key |
SEARCHFORGE_PORT | 3000 | REST ポート |
SEARCHFORGE_HOST | 127.0.0.1 | バインドアドレス |
SEARCHFORGE_TIMEOUT_MS | 8000 | 依存先ごとのタイムアウト |
SEARCHFORGE_CACHE_TTL_MS | 300000 | メモリ内キャッシュの TTL |
SEARCHFORGE_CACHE_MAX_ENTRIES | 500 | キャッシュエントリ数の上限 |
SEARCHFORGE_RATE_LIMIT | 60 | クライアントあたりのリクエスト数/分 |
本番環境での注意点
- パブリックインターフェースにバインドする前に、API キーを設定してください。
- 検索結果とページコンテンツは信頼できない入力です。これらを区切り、プロンプトインジェクション対策を適用してください。
- 組み込みのキャッシュとレートリミッターはプロセス内でのみ機能します。複数のレプリカを使用する場合は、共有インフラストラクチャを使用してください。
- プロバイダーのレスポンス本文と認証情報は、表示されるエラーには含まれません。
healthzはプロセスが稼働中であることを確認し、/v1/doctorは依存関係を確認します。
SECURITY.md、CONTRIBUTING.md、CHANGELOG.md をご覧ください。
原則
- 生成された回答よりも根拠を重視
- ベンダーロックインよりも無料でセルフホスト可能な選択肢を優先
- 完全な失敗よりも部分的な結果を優先
- 機能とクォータを誠実に報告
- 安定した契約と明示的な出典情報
- デフォルトではテレメトリーを収集しない
ライセンス
MIT © Divyanshu.
SearchForge がエージェントに役立った場合は、リポジトリにスターを付け、Discussions で連携方法を共有してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。