Vanshulgoyal101

io.github.vanshulgoyal101由 GitHub 帳號 vanshulgoyal101 發布v1.0.0更新於 Oct 24, 2026

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

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取知識與記憶

概覽

AI 產生的概覽

遠端 MCP 伺服器,讓助理把即時網頁抓取成乾淨的 Markdown、頁面中繼資料、外連或依查詢比對的段落。

可以做什麼
  • 把網頁正文抓取成乾淨的 Markdown,可限制最大字元數
  • 在頁面內依查詢檢索,只回傳符合的段落,依相關度排序並附上標題層級路徑
  • 讀取頁面中繼資料,例如標題、作者、站台名稱、摘要與字數
  • 擷取頁面所有對外 http(s) 連結及錨文字,方便爬取或尋找相關頁面
適用情境
適合助理需要閱讀即時網頁上的文章、文件或純文字/JSON 端點,或想從長頁面中只取某個具體細節、不必花大量 token 讀完整篇內容的情況。
執行需求
一個以 Streamable HTTP 提供的遠端 MCP 端點;未宣告需要帳號、API 金鑰或環境變數。僅支援 stdio 的用戶端可用 mcp-remote 這個 npm 套件橋接,需要 Node.js。
安裝前請注意
伺服器會代助理抓取任意公開網址,回傳的頁面內容屬於不可信的第三方文字。它不保存狀態、不儲存頁面內容,並會阻擋 localhost、私有網段與雲端中繼資料位址。請求依 IP 限流。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Vanshulgoyal101,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.vanshulgoyal101%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

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

來源:README.md,提交 20b88d4

工具

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.

輸入參數url必填max_chars

fetch_metadata

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

輸入參數url必填

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.

輸入參數url必填query必填max_matchescontext_chars

版本歷史

1
  1. v1.0.0最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分