{"adoption": {"forks": 161, "observed_at": "2026-08-28T04:03:37.320719+00:00", "stars": 1109}, "canonical_url": "https://ross.abutalabs.com/products/web-search-mcp", "card": {"archived": false, "artifact_type": "service", "description": "A simple, locally hosted Web Search MCP server for use with Local LLMs", "domain": ["large-language-models", "self-hosted", "developer-tools"], "enriched": true, "function": ["mcp", "web-scraping", "search-engine", "llm-inference", "agent-framework"], "health_score": 55, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["mrkrsl/web-search-mcp"], "name": "mrkrsl/web-search-mcp", "platform": ["self-hosted", "cross-platform"], "pushed_at": "2025-08-08T19:58:47+00:00", "repo": "mrkrsl/web-search-mcp", "stars": 1109, "tags": ["mcp-server", "local-llm", "web-search", "lm-studio", "no-api-keys", "playwright", "bing", "duckduckgo", "brave-search", "search", "ai-agents", "nodejs"], "topics": ["llm", "lmstudio", "local-llm", "mcp", "web-search"], "urls": [], "use_cases": ["give my local llm web search without api keys", "mcp server for lm studio web search", "extract full webpage content for rag with local models", "search the web from librechat with a local model", "self-hosted web search tool for mcp clients", "scrape search results and page content for an ai agent"], "what_it_is": "A locally hosted MCP (Model Context Protocol) server written in TypeScript that gives local LLMs web search capabilities without requiring API keys. It searches via Bing, Brave, and DuckDuckGo using a mix of browser automation (Playwright) and HTTP requests, and offers tools for full-page content extraction, snippet-only search, and single-page content retrieval.", "when_to_avoid": ["you need a cloud-hosted or managed search service", "your MCP client is untested with this server and you need guaranteed compatibility", "you rely on older Llama or DeepSeek R1 models that handle tool calls poorly", "you need high-volume scraping at scale with proxy rotation"], "when_to_choose": ["you run local LLMs in LM Studio or LibreChat and want tool-based web search", "you want to avoid paid search APIs and API keys", "you need full-page content extraction, not just snippets", "you prefer a self-hosted, MIT-licensed solution"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/web-search-mcp", "repo": "mrkrsl/web-search-mcp", "role": "main", "score": 36}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:43:37.001476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6179410f72306cd751e8c511fa05f31a3ca54902a921ba498276a6a39ff7df3b", "fetched_at": "2026-08-28T04:03:37.320719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrkrsl/web-search-mcp"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:43:37.001476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6179410f72306cd751e8c511fa05f31a3ca54902a921ba498276a6a39ff7df3b", "fetched_at": "2026-08-28T04:03:37.320719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrkrsl/web-search-mcp"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:43:37.001476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6179410f72306cd751e8c511fa05f31a3ca54902a921ba498276a6a39ff7df3b", "fetched_at": "2026-08-28T04:03:37.320719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrkrsl/web-search-mcp"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:43:37.001476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6179410f72306cd751e8c511fa05f31a3ca54902a921ba498276a6a39ff7df3b", "fetched_at": "2026-08-28T04:03:37.320719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrkrsl/web-search-mcp"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:43:37.001476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6179410f72306cd751e8c511fa05f31a3ca54902a921ba498276a6a39ff7df3b", "fetched_at": "2026-08-28T04:03:37.320719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrkrsl/web-search-mcp"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:43:37.001476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6179410f72306cd751e8c511fa05f31a3ca54902a921ba498276a6a39ff7df3b", "fetched_at": "2026-08-28T04:03:37.320719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrkrsl/web-search-mcp"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:37.320719+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:43:37.001476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6179410f72306cd751e8c511fa05f31a3ca54902a921ba498276a6a39ff7df3b", "fetched_at": "2026-08-28T04:03:37.320719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrkrsl/web-search-mcp"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:43:37.001476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6179410f72306cd751e8c511fa05f31a3ca54902a921ba498276a6a39ff7df3b", "fetched_at": "2026-08-28T04:03:37.320719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrkrsl/web-search-mcp"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:43:37.001476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6179410f72306cd751e8c511fa05f31a3ca54902a921ba498276a6a39ff7df3b", "fetched_at": "2026-08-28T04:03:37.320719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrkrsl/web-search-mcp"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:43:37.001476+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6179410f72306cd751e8c511fa05f31a3ca54902a921ba498276a6a39ff7df3b", "fetched_at": "2026-08-28T04:03:37.320719+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mrkrsl/web-search-mcp"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 35, "longevity": 30, "rhythm": 42}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 432, "days_push": 390, "days_rel": 391, "gap_med": 4, "n_releases_24m": 8}, "score": 36, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}