by nkapila6
Local web search MCP server, formerly mcp-local-rag. Multi-engine deep research with on-device re-ranking. ✨ no API keys ✨
# Add to your Claude Code skills
git clone https://github.com/nkapila6/mcpsurfrLast scanned: 10/28/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-10-28T10:22:54.640Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how mcpsurfr compares with popular alternatives.
mcpsurfr is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by nkapila6. Local web search MCP server, formerly mcp-local-rag. Multi-engine deep research with on-device re-ranking. ✨ no API keys ✨. It has 146 GitHub stars.
Yes. mcpsurfr passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/nkapila6/mcpsurfr" and add it to your Claude Code skills directory (see the Installation section above).
mcpsurfr is primarily written in Python. It is open-source under nkapila6 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh mcpsurfr against similar tools.
No comments yet. Be the first to share your thoughts!
From $49 · 30 days · terms & refunds
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Automated security scan — not a certification.
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:
auto mode asks several engines at once and skips blocked ones.search returns 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.truncated, and fallbacks and engine failures show up as warnings. Google blocks often, so it falls back to auto on its own.research prompt, 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.
With uv:
{
"mcpServers": {
"mcpsurfr": {
"command": "uvx",
"args": ["--from", "git+https://github.com/nkapila6/mcpsurfr", "mcpsurfr"]
}
}
}
Or with Docker (amd64 and arm64):
{
"mcpServers": {
"mcpsurfr": {
"command": "docker",
"args": ["run", "--rm", "-i", "--init", "ghcr.io/nkapila6/mcpsurfr:latest"]
}
}
}
Full-page tools share a 40k-character budget per call (about 10k tokens). To change it, add "env": {"MCPSURFR_MAX_CHARS": "80000"} to the server entry.
Not sure where your config lives? See the MCP quickstart. Tested with Claude Desktop, Claude Code, Cursor and Goose.
Coming from mcp-local-rag? Your old config keeps working, since the old URL redirects and the mcp-local-rag command still exists. Switching to the config above gets you the new name and drops the --python=3.10 pin (3.10 reaches end of life this month).
The mcpsurfr-search skill tells the model which tool and backend to pick and how to cite. The server serves it as skill://mcpsurfr-search/SKILL.md, so most clients need nothing extra. To add it to Claude Desktop by hand: Settings → Skills → Add from folder, then pick src/mcpsurfr/skills/mcpsurfr-search/.
The research(topic) prompt plans a few search terms, runs deep_research and writes a cited summary.
Asking Claude Desktop about something newer than its training data:
Security audit by MseeP · Issues and PRs welcome · MIT licensed · Buy me a coffee if it helps you