Research MCP
プライベート検索ゲートウェイ
このプロジェクトは、AIフロントエンド向けの決定論的でセルフホスト型の検索およびページ取得バックエンドです。SearXNG互換の検索エンドポイントを公開し、少数の検索エンジンでソースを発見し、最も有力なページを開き、実際のコンテンツを抽出し、限られた数の関連する同一サイトリンクを辿り、ローカルでエビデンスを再ランク付けし、引用元のURLとページから抽出されたテキストを返します。
有料の検索APIや内部言語モデルは呼び出しません。フロントエンドのモデルが取得したエビデンスを受け取り、回答を記述します。これにより、サービスはプライベートで予測可能に保たれ、カスタムのSearXNGまたはJSON検索プロバイダーを受け入れる任意のフロントエンドで使用できます。
実行されるもの
search-gateway: 唯一のクライアント向けサービス、内部ポート8080searxng: ウェブ、技術、ニュース、画像、研究の発見reranker: ローカルのBAAI/bge-reranker-base関連性ランキングcrawl4ai: JavaScript対応のクローリング、困難なページ用web-runner: 分離されたCrawl4AIおよびPlaywright制御(Unixソケット経由)pdf-runner: ネットワーク分離されたPDF抽出safe-egress: ブラウザのプライベートネットワークおよびメタデータ送信先をブロックredis: レスポンスキャッシュと古い結果のフォールバック
スタックはホストポートを公開しません。フロントエンドは共有Dockerネットワークを介して次に到達します:
http://search-gateway:8080/searchその共有ネットワークに接続されたすべてのコンテナがゲートウェイを呼び出すことができます。他の無関係なコンテナにアクセスさせたくない場合は、専用の共有ネットワークを使用してください。
Related MCP server: wigolo
要件
64ビットLinux VPS
Docker EngineおよびDocker Compose v2.24.4以降
イメージ、Chromium、およびリランカーモデル用に約10 GBの空きディスク容量
完全なスタックには16 GBのRAMを推奨
提供される上限は、共有メモリと通常のDockerオーバーヘッドを除き、合計で約10.5 GBです。これらは予約ではなく制限ですが、16 GBのホストでは十分な余裕があります。最初のビルドは、Chromium、Crawl4AIイメージ、リランカーモデルをダウンロードするため遅くなります。
クリーンインストール
Dockerネットワークがまだ存在しない場合は、一度作成します:
docker network inspect docker-stacks_app-network >/dev/null 2>&1 || \
docker network create docker-stacks_app-networkプロジェクトをクローンして設定します:
git clone https://github.com/ZDOSt/Research-MCP.git
cd Research-MCP
cp .env.example .env
chmod 600 .env2つの異なるシークレットを生成します:
openssl rand -hex 32
openssl rand -hex 32.env を編集し、SEARXNG_SECRET と CRAWL4AI_API_TOKEN をそれらの値に置き換えます。CLIENT_DOCKER_NETWORK は、フロントエンドが異なる外部Dockerネットワークを使用する場合にのみ変更します。
完全なスタックを検証して起動します:
docker compose config --quiet
docker compose up -d --build --wait
docker compose psports: エントリは必要ありません。ゲートウェイをDockerの外部に意図的に公開しない限り、追加しないでください。
検証
ゲートウェイコンテナからヘルスチェックを実行します:
docker compose exec -T search-gateway python -c \
"import urllib.request; print(urllib.request.urlopen('http://127.0.0.1:8080/healthz').read().decode())"共有ネットワーク上の任意のコンテナから実際の検索を実行します。your-frontend-container を anythingllm、librechat、または別のコンテナ名に置き換えます:
docker exec your-frontend-container sh -lc \
"wget -qO- 'http://search-gateway:8080/search?q=how+to+install+docker+compose&format=json' | head -c 1000"レスポンスには results、ソースURL、抽出された content、診断情報が含まれている必要があります。検索スニペットは、サイトが抽出をブロックした場合やリクエスト期限に達した場合にのみ、明確にラベル付けされたフォールバックとして使用されます。
フロントエンドのセットアップ
フロントエンドがSearXNG URLを要求する場所では、次のベースURLを使用します:
http://search-gateway:8080完全な検索パスを要求する場合は、次を使用します:
http://search-gateway:8080/searchAnythingLLMは、そのフィールドが SearXNG API Base URL とラベル付けされていても、完全な検索パスを必要とします。次のように設定します:
http://search-gateway:8080/search標準リクエストは次のとおりです:
GET /search?q=your+question&format=jsonサポートされるクエリパラメータは次のとおりです:
language=autotime_range=day|week|month|yearcategories=general,it,news,science,imagesmax_results=1..8mode=auto|quick|balanced|deep
カテゴリが指定されていない場合、ゲートウェイはリクエストから有用なSearXNGカテゴリを推測します。auto は単純な検索にはクイックモード、技術的な質問や推奨事項にはバランスモードを使用します。
直接統合用に、よりリッチなJSONエンドポイントも利用可能です:
POST /v1/research
Content-Type: application/json
{
"query": "What are the recommended settings for an AW3426DW?",
"mode": "balanced",
"max_results": 5,
"language": "auto",
"categories": []
}更新
VPS上のリポジトリディレクトリから:
git pull --ff-only
docker compose config --quiet
docker compose up -d --build --remove-orphans --wait
docker compose ps通常の更新では docker compose down を実行する必要はありません。既存のRedisキャッシュとリランカーのダウンロードは名前付きボリュームに保持されます。
運用
便利なコマンド:
docker compose ps
docker compose logs --tail=200 search-gateway searxng reranker
docker compose logs --tail=200 crawl4ai web-runner safe-egress pdf-runner
docker compose restart search-gateway
docker compose down
docker compose up -d --waitdocker compose down は名前付きボリュームを保持します。docker compose down -v はキャッシュとダウンロードされたリランカーモデルを削除するため、意図的な完全リセットにのみ使用してください。
制限事項
これは、ドキュメント、トラブルシューティング、製品設定、ゲーム、最新情報、一般的な調査においてホスティング型検索ツールに近づくことができますが、商用プロバイダーと同じカバレッジを保証することはできません。キーレスエンジンはデータセンターIPをレート制限する場合があり、一部のサイトはすべての自動ブラウザをブロックし、また、単一のVPSがGoogle、Brave、または有料の回答エンジンが使用する独自の検索インデックスを持つことはありません。ゲートウェイは、複数のディスカバリープロバイダー、同時抽出、ローカル再ランク付け、制限付きブラウザフォールバック、キャッシング、そして回答を捏造するのではなく正直な部分的な結果を返すことで補償します。
This server cannot be installed
Maintenance
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
- AlicenseBqualityNot gradedmaintenanceProvides advanced Google Custom Search functionality, web content extraction, and specialized research tools such as search analytics, multi-site search, and fact checking. Works as an MCP server compatible with any MCP client.10MIT
- AlicenseAqualityAmaintenanceProvides local-first web intelligence over MCP with tools for search, fetch, crawl, extract, cache, find-similar, research, and autonomous agent loops, requiring no API keys.109044,637AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceZero-auth multi-source research MCP server that enables web search, reading URLs, PDFs, GitHub repos, and querying Hacker News, Stack Overflow, Semantic Scholar, and YouTube transcripts without API keys.10Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables deep research tasks using a multi-agent architecture that integrates any LLM and MCP tools. Available via MCP stdio, streamable HTTP, and SSE transports.17MIT
Related MCP Connectors
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
Stealth web browser for agents: search, fetch, click and type through persistent sessions over MCP.
Turn a GitHub repo or docs site into agent-ready context: pack it or search it, over MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ZDOSt/Research-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server