Vanshulgoyal101

io.github.vanshulgoyal101Published by GitHub account vanshulgoyal101v1.0.0Updated Oct 24, 2026

Read any web page as clean Markdown for AI agents: fetch, search, metadata, links. SSRF-safe.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & Memory

Overview

AI-generated overview

Remote MCP server that lets an assistant fetch live web pages as clean Markdown, page metadata, outbound links, or query-matched passages.

What you can do
  • Fetch a page's main content as clean Markdown, with optional length limit
  • Search within a page and get only the passages matching a query, ranked with heading breadcrumbs
  • Read page metadata such as title, byline, site name, excerpt and word count
  • Extract all outbound http(s) links with their anchor text for crawling or finding related pages
When to use it
Useful when an assistant needs to read articles, documentation or raw text/JSON endpoints from the live web, or pull a specific detail out of a long page without spending many tokens on the whole body.
Requirements
A remote MCP endpoint over Streamable HTTP; no account, API key or environment variables are declared. Clients that only support stdio can bridge to it with the mcp-remote npm package, which needs Node.js.
Before you install
The server fetches arbitrary public URLs on the assistant's behalf, so page content it returns is untrusted third-party text. It is stateless and stores no page content, and it blocks localhost, private ranges and cloud metadata addresses. Requests are rate limited per IP.

Installation

In SourceWeft

  1. Open Vanshulgoyal101 in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.vanshulgoyal101%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "vanshulgoyal101": {
      "type": "http",
      "url": "https://mcp.vanshul.com/mcp"
    }
  }
}

README

mcp.vanshul.com

[MCP Registry] [Endpoint]

A public Model Context Protocol (MCP) server, running as a Cloudflare Worker, that lets any AI agent read the live web as clean Markdown. It builds on the same extraction pipeline as the sibling reader/ project (Mozilla Readability + Turndown), exposed over the MCP Streamable HTTP transport so agentic clients can plug straight in.

Endpoint

POST https://mcp.vanshul.com/mcp     # JSON-RPC 2.0 (MCP)GET  https://mcp.vanshul.com/health  # { ok: true, tools: [...] }

Tools

ToolInputReturns
fetch_markdown{ url, max_chars? }The page's main content as clean Markdown (optionally truncated to max_chars)
search_page{ url, query, max_matches?, context_chars? }Only the passages matching query, each with its heading breadcrumb, ranked by relevance — token-efficient alternative to fetch_markdown
fetch_metadata{ url }JSON: title, byline, siteName, excerpt, wordCount
extract_links{ url, limit? }JSON: all outbound http(s) links + anchor text

Connect from an MCP client

Remote/HTTP-capable clients (Claude Desktop, Cursor, Continue, …):

json
{  "mcpServers": {    "web-reader": { "url": "https://mcp.vanshul.com/mcp" }  }}

Stdio-only clients can bridge with mcp-remote:

sh
npx mcp-remote https://mcp.vanshul.com/mcp

Add it to your client

  • Cursor — Settings → MCP → Add new server, or drop this into ~/.cursor/mcp.json:
    json
    { "mcpServers": { "web-reader": { "url": "https://mcp.vanshul.com/mcp" } } }
  • Claude Desktop — add the same block to claude_desktop_config.json (Settings → Developer → Edit Config). If your version is stdio-only, use:
    json
    { "mcpServers": { "web-reader": { "command": "npx", "args": ["mcp-remote", "https://mcp.vanshul.com/mcp"] } } }
  • Continue / VS Code — add web-reader with URL https://mcp.vanshul.com/mcp to your MCP servers config.

Try it with curl

sh
curl -s https://mcp.vanshul.com/mcp \  -H 'content-type: application/json' \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -s https://mcp.vanshul.com/mcp \  -H 'content-type: application/json' \  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call",       "params":{"name":"fetch_markdown","arguments":{"url":"https://example.com"}}}'
# Return only the passages matching a query (token-efficient):curl -s https://mcp.vanshul.com/mcp \  -H 'content-type: application/json' \  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call",       "params":{"name":"search_page","arguments":{"url":"https://example.com","query":"more information"}}}'

Layout

mcp/├── src/│   ├── worker.ts     # entry: routes /mcp, /health, rate limit, CORS│   ├── mcp.ts        # JSON-RPC dispatch + tool definitions│   ├── extract.ts    # HTML -> Markdown / links (Readability + Turndown)│   ├── search.ts     # query-focused passage search over extracted Markdown│   ├── fetcher.ts    # fetch with timeout, size cap, re-validated redirects│   └── security.ts   # SSRF guard (block private/internal addresses)├── public/│   ├── index.html    # landing page (served for non-API paths)│   ├── og.png        # social share image (1200×630)│   ├── og.svg        # social image source│   ├── robots.txt│   └── sitemap.xml├── tests/            # vitest: security, extract, search, mcp dispatch, fetcher, worker├── wrangler.toml├── package.json├── tsconfig.json└── README.md

Develop & deploy

sh
cd mcpnpm installnpm run typechecknpm test          # vitest — security, extraction, search, MCP dispatch, fetcher, workernpm run dev        # local worker at http://localhost:8787  (POST /mcp)npm run deploy     # wrangler deploy

After the first deploy, attach the custom domain mcp.vanshul.com in the Cloudflare dashboard (Workers & Pages → this worker → Settings → Domains), or uncomment the [[routes]] block in wrangler.toml.

Security

  • SSRF-safe: only public http(s) URLs; localhost, private ranges, cloud metadata and every redirect hop are blocked/re-validated.
  • Bounded: 10s fetch timeout, ~3 MB page cap, max 5 redirects, per-IP rate limit.
  • Stateless & private: no page content is stored; extraction is deterministic with no LLM in the loop.

MCP protocol

Implements initialize, ping, tools/list, tools/call and notifications (protocol version 2025-06-18). Tool failures are returned as { content, isError: true } so the agent can read the message and recover; malformed requests use standard JSON-RPC error codes.

Documentation

License

MIT © Vanshul Goyal

Source: README.md at commit 20b88d4

Tools

4

fetch_markdown

Fetch a web page and return its main content as clean Markdown (nav, ads and boilerplate removed). Raw Markdown, plain-text and JSON endpoints are returned as-is. Use this to read an article, docs page or raw file.

Parametersurlrequiredmax_chars

fetch_metadata

Fetch a web page and return its metadata as JSON: title, byline, site name, excerpt and word count (no full body).

Parametersurlrequired

search_page

Fetch a web page and return only the passages that match a query, instead of the whole page. Each result includes its heading breadcrumb and is ranked by relevance. Use this to find a specific detail (e.g. pricing, a config option) while spending far fewer tokens than fetch_markdown.

Parametersurlrequiredqueryrequiredmax_matchescontext_chars

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts