
nkapila6/mcpsurfr
Developer toolsこのページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る
ローカル Web 検索 MCP サーバー, 以前 mcp-local-rag. オンデバイス再評価によるマルチエンジン深層研究。 ✨ APIキーなし ✨
概要
MCP 経由で LLM のローカル Web 検索 マシンにAPIキーがなく、結果がランク付けされます。 旧mcp-local-rag. - 検索はddgsを通過します。 一度に複数のエンジンを尋ね、ブロックされたエンジンをスキップします。 - プレーン数字リランク結果の小さなMobileBERTモデルなので、最高のページだけが取得します。 - ページはブラウザの偽装で取得され、メインコンテンツのみが保存されます。メニュー、クッキーバナー、フッターはありません。 コードブロックとテーブルは行を続けます。 2つのURLの下の同じページが返されます。 - 検索は、問題に答える段落だけを返します, トークンの約10分. 何もうまくマッチしないと、代わりにフルページを望むかどうかを尋ねることができます。 - 結果リストは、理由でページをスキップしました(ブロック、PDF、重複...)、カットされたページは、警告として表示されている、およびフォールバックとエンジンの障害。 Googleブロックはよくありますので、自分で自動に戻ります。 ・ スキルと研究のプロンプトを提供しているので、クライアントはセットアップなしでそれを使用する方法を拾います.
概要(AI 翻訳)
MCP 経由で LLM のローカル Web 検索 マシンにAPIキーがなく、結果がランク付けされます。 旧mcp-local-rag.
それは何ですか。
-APIキーはありません。 ddgs から検索します。 auto モードは複数のエンジンを一度に尋ね、ブロックされたエンジンをスキップします。
-ローカルで禁止されています。 プレーン数字のリランク結果の小さなMobileBERTモデルなので、最高のページだけが取得します。
- テキストをクリーンアップ ページはブラウザの偽装で取得され、メインコンテンツのみが保存されます。メニュー、クッキーバナー、フッターはありません。 コードブロックとテーブルは行を続けます。 2つのURLの下の同じページが返されます。
-ページではなく[
searchではなく、質問に答える段落だけを返す、トークンの10分の1。 何もうまくマッチしないと、代わりにフルページを望むかどうかを尋ねることができます。 - 退去したことを確認する。 結果リストは、理由でページをスキップしました(ブロック、PDF、重複…)、カットページは[[
truncated]マークされ、フォールバックとエンジンの失敗は[warningsとして表示されます。 Google ブロックはよくありますので、自分でauto] に戻ります。 - 独自のガイドを提示する。 スキルと[
researchのプロンプトが機能しているため、クライアントはセットアップなしで使用する方法をピックアップします。
| ツール | ご使用にあたって |
このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。
README
以下は原文 README の抜粋です。原文を見る。
Local web search for your LLM over MCP. No API keys, and results are ranked on your machine. Formerly mcp-local-rag.
%%{init: {'theme': 'base'}}%%
flowchart TD
A[LLM] -->|query| S["Search with ddgs (auto: several engines, no keys)"]
S -->|"rag_search, deep_research"| R["Re-rank results locally (MobileBERT on numpy)"]
R --> P[Fetch top pages, keep the main content]
P -->|page text + URLs| A
S -->|search| T1["Tier 1: pick pages by their snippets"]
T1 --> T2["Tier 2: split into passages, keyword match (BM25)"]
T2 -->|few hits| OUT["Best passages + URLs (about 800 tokens)"]
T2 -->|too many or none| T3[Tier 3: rank them by meaning]
T3 --> OUT
OUT --> A
What’s in it:
- No API keys. Searches go through ddgs. Its
automode asks several engines at once and skips blocked ones. - Ranked locally. A small MobileBERT model on plain numpy re-ranks results, so only the best pages get fetched.
- Clean text. Pages are fetched with browser impersonation, and only the main content is kept: no menus, cookie banners or footers. Code blocks and tables keep their lines. The same page under two URLs comes back once.
- Passages instead of pages.
searchreturns just the paragraphs that answer the question, about a tenth of the tokens. When nothing matches well, it can ask you whether you want the full pages instead. - Says what it left out. Results list skipped pages with a reason (blocked, PDF, duplicate…), cut pages are marked
truncated, and fallbacks and engine failures show up aswarnings. Google blocks often, so it falls back toautoon its own. - Brings its own guide. It serves a skill and a
researchprompt, so clients pick up how to use it without setup.
| Tool | Use it for |
|---|---|
search |
Start here: returns only the relevant passages. Pass keywords for better hits |
rag_search_ddgs |
Full pages as text (the original mode) |
rag_search_google |
Same, via Google (falls back to auto when blocked) |
deep_research |
Several search terms across backends, merged and de-duplicated |
deep_research_ddgs / deep_research_google |
deep_research shortcuts |
Backends: auto (default), brave, duckduckgo, google, grokipedia, mojeek, startpage, wikipedia, yahoo. auto and brave are the dependable ones.
インストール
uvx --from git+https://github.com/nkapila6/mcpsurfr mcpsurfr設定
{
"mcpServers": {
"mcpsurfr": {
"command": "uvx",
"args": ["--from", "git+https://github.com/nkapila6/mcpsurfr", "mcpsurfr"]
}
}
}