Read any web page as clean, ad-stripped Markdown past robots.txt and bot blocks, plus web search.
MCPpedia last refreshed this data
io.github.pzalutski-pixel/netlens is an MCP server that read any web page as clean, ad-stripped Markdown past robots.txt and bot blocks, plus web search. Its tool list has not been published yet over stdio, requires no API key, and scores 70/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"netlens": {
"args": [
"-y",
"netlens-mcp"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
An MCP server for unobstructed web reading. It fetches any URL directly with browser-like headers — past robots.txt and naive bot blocks — and returns the full page as clean, ad-stripped Markdown, not a summary. Plus web search that returns real links. Zero dependencies: pure Python standard library.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in browser / search
Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors
Monitor browser logs directly from Cursor and other MCP compatible IDEs.
The official MCP server implementation for the Perplexity API Platform
Production ready MCP server with real-time search, extract, map & crawl.
MCP Security Weekly
Get CVE alerts and security updates for io.github.pzalutski-pixel/netlens and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
An MCP server for unobstructed web reading. It fetches any URL directly with
browser-like headers — past robots.txt and naive bot blocks — and returns the
full page as clean, ad-stripped Markdown, not a summary. Plus web search that
returns real links. Zero dependencies: pure Python standard library.
AI agents constantly hit pages their built-in tools can't read. NetLens fixes the three usual reasons a fetch comes back empty or useless:
| Native web tools | NetLens |
|---|---|
Honor robots.txt, so crawler-disallowed pages return nothing | Reads like the browser you'd open yourself — doesn't consult robots.txt |
Blocked by header/User-Agent bot filters (403/202 to non-browser clients) | Sends real browser headers via the system curl; commonly turns 403 → 200 |
| Return a summary of the page | Returns the full page content as Markdown |
| Leave ads, cookie banners, nav, and related-links chrome in the output | Strips boilerplate locally so only the content reaches your context |
It does not try to defeat JavaScript/Cloudflare challenge pages or CAPTCHAs — that's out of scope by design. When a page is a hard block, the HTTP status is surfaced honestly rather than faked.
npm (via npx):
{
"mcpServers": {
"netlens": {
"command": "npx",
"args": ["-y", "netlens-mcp"]
}
}
}
PyPI (via uvx):
{
"mcpServers": {
"netlens": {
"command": "uvx",
"args": ["netlens-mcp"]
}
}
}
Add either to your MCP client config (e.g. .mcp.json for Claude Code), then
restart the session so the tools load.
web_searchSearch the web and return real result links (title, URL, snippet), parsed locally —
links, not summaries. Follow up with web_fetch to read a result.
| Argument | Type | Description |
|---|---|---|
query | string (required) | The search query |
limit | integer | Optional cap; default returns the full first page (~10) |
engine | string | auto (default), duckduckgo, bing, mojeek, searxng |
page | integer | Result page, 1-based. SearXNG only |
time_range | string | day, week, month, year. SearXNG only |
categories | string | e.g. it, science, news. SearXNG only |
The result reports which engine answered and what happened to any that were skipped, so falling through to a different backend is visible rather than silent:
{
"query": "…",
"engine": "mojeek",
"results": [ … ],
"engines_skipped": [ { "engine": "duckduckgo", "outcome": "HTTP 202" } ]
}
Outcomes are observations, not conclusions — HTTP 202 is what the server sent;
whether that is throttling, changed markup or genuinely no matches cannot be
determined from the response. With SearXNG configured, direct answers,
infoboxes and suggestions appear alongside the results.
A search fetches a single result page (~10 results), returned in full by default so nothing at position 9/10 is dropped. There's no deep pagination — if the answer isn't in the first page, refine the query.
web_fetchFetch any page and return its full content as clean Markdown.
| Argument | Type | Description |
|---|---|---|
url | string (required) | URL to fetch (scheme optional; https assumed) |
mode | string | article (main content only, default), full (whole body), raw (unconver |