
nkapila6/mcpsurfr
Developer tools이 페이지는 AI로 자동 번역되었습니다. 기술적인 세부 사항은 원문을 확인하세요. 원문 보기
로컬 웹 검색 MCP 서버, 이전 mcp-local-rag. 멀티 엔진 딥 연구 on-device re-ranking. ✨ API 키 없음 ✨
개요
MCP를 통해 LLM에 대한 로컬 웹 검색. API 키가 없으며 결과가 기계에 랭크됩니다. 이전 mcp-local-rag. - ddgs를 통해 검색합니다. 자동 모드는 한 번에 여러 엔진을 묻고 차단 된 것을 건너 뛸 수 있습니다. - 일반 numpy re-ranks 결과에 작은 MobileBERT 모델, 그래서 단지 최고의 페이지는 fetched 얻을. - 페이지는 브라우저 impersonation로 fetched, 그리고 주요 콘텐츠는 유지되지 않습니다: 메뉴, 쿠키 배너 또는 발자국. 코드 블록 및 테이블은 라인 유지. 두 URL의 동일한 페이지는 다시 한번 온다. - 검색은 질문에 답하는 단락을 반환, 토큰의 10에 대해. 아무것도 잘 일치 할 때, 당신은 대신 전체 페이지를 원할 수 있습니다. - 결과 목록은 이유 (블록, PDF, 중복 ...), 컷 페이지가 truncated, 및 fallbacks 및 엔진 실패가 경고로 표시됩니다. Google 블록은 종종 자동으로 돌아갑니다. - - - 그것은 기술 및 연구 신속한 역할을하므로 클라이언트가 설정없이 사용하는 방법을 선택합니다.
개요(AI 번역)
MCP를 통해 LLM에 대한 로컬 웹 검색. API 키가 없으며 결과가 기계에 랭크됩니다. [T0]].
그것에 있는 무엇:
- ** API 키가 없습니다. ** 검색은 ddgs를 통해 이동합니다.
auto모드는 한 번에 여러 엔진을 요청하고 차단 된 것을 건너 뛸 수 있습니다. - ** 로컬로 순위.** 일반 numpy re-ranks 결과에 작은 MobileBERT 모델, 그래서 단지 최고의 페이지는 fetched 얻을.
- ** 깨끗한 텍스트.** 페이지는 브라우저의 impersonation과 fetched, 그리고 주요 콘텐츠는 유지되지 않습니다: 메뉴, 쿠키 배너 또는 footers. 코드 블록 및 테이블은 라인 유지. 두 URL의 동일한 페이지는 다시 한번 온다.
- 페이지 대신 패스워드.
search]은 토큰의 10번째에 대한 질문에 답하는 단락을 반환합니다. 아무것도 잘 일치 할 때, 당신은 대신 전체 페이지를 원할 수 있습니다. - **이 남아있는 것. ** 결과 목록은 이유 (블록, PDF, 중복 …)를 가진 페이지를 건너 뛰고, 페이지는
truncated]를 표시하고, 가을과 엔진 실패는warnings로 표시됩니다. Google 블록은 종종 "[T5]]"로 돌아갑니다. - ** 자체 가이드를 묶습니다. ** 그것은 기술과
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"]
}
}
}