mcpField
V
vanshulgoyal101

vanshulgoyal101

Remote
mcp.vanshul.comBrowser Automation1Updated 8w ago

About vanshulgoyal101

vanshulgoyal101 is a public MCP server that extracts live web pages into clean Markdown for AI agents. It also supports passage search, metadata retrieval and link extraction, with URL checks to block SSRF risks.

Key features

  1. 01Extract page content as Markdown
  2. 02Search relevant page passages
  3. 03Retrieve page metadata
  4. 04Extract outbound links
  5. 05Validate URLs and redirects

Use cases

  1. 01Give an agent readable web-page content
  2. 02Find specific information within a page
  3. 03Collect page details and outbound links

MCP support

The server exposes web-reading tools through MCP Streamable HTTP. MCP clients connect to its remote endpoint; stdio-only clients can use the mcp-remote bridge.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://mcp.vanshul.com/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Tools

4
ParameterTypeRequiredDescription
urlstringYesThe absolute http(s) URL of the page.
max_charsnumberNoOptional. Truncate the Markdown to at most this many characters to fit a context budget.

Details

From the project 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, …):

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

Stdio-only clients can bridge with mcp-remote:

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:
    { "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:
    { "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

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

cd mcp
npm install
npm run typecheck
npm test          # vitest — security, extraction, search, MCP dispatch, fetcher, worker
npm 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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.