Read any web page as clean, ad-stripped Markdown past robots.txt and bot blocks, plus web search.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"io-github-pzalutski-pixel-netlens": {
"command": "<see-readme>",
"args": []
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Read any web page as clean, ad-stripped Markdown past robots.txt and bot blocks, plus web search.
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.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationBe 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
Web and local search using Brave Search API
An autonomous agent that conducts deep research on any data using any LLM providers
🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
Browser automation with Puppeteer for web scraping and testing
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 |
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 (unconverted HTML) |
max_chars | integer | Optional cap on returned characters (truncates with a note) |
Workflow: web_search to find pages, then web_fetch to read them.
Search is a pluggable, selectable registry. In auto mode NetLens tries engines in
order and returns the first with results, so a rate-limit/challenge page on one
falls through to the next.
| Engine | Notes |
|---|---|
duckduckgo | Default; html.duckduckgo.com endpoint |
bing | Automatic fallback |
mojeek | Independent index; automatic fallback |
searxng | Self-hosted/public SearXNG JSON API — set NETLENS_SEARXNG_URL |
Pick per call with the engine argument, or set a default with
NETLENS_SEARCH_ENGINE.
| Environment Variable | Default | Description | |---|-