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
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.
遠端 MCP 伺服器,讓助理把即時網頁抓取成乾淨的 Markdown、頁面中繼資料、外連或依查詢比對的段落。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.github.vanshulgoyal101%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"vanshulgoyal101": {
"type": "http",
"url": "https://mcp.vanshul.com/mcp"
}
}
}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.
Remote/HTTP-capable clients (Claude Desktop, Cursor, Continue, …):
Stdio-only clients can bridge with mcp-remote:
~/.cursor/mcp.json:
claude_desktop_config.json (Settings → Developer → Edit Config). If your version is stdio-only, use:
web-reader with URL https://mcp.vanshul.com/mcp to your MCP servers config.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.
http(s) URLs; localhost, private ranges, cloud
metadata and every redirect hop are blocked/re-validated.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.
MIT © Vanshul Goyal
來源:README.md,提交 20b88d4
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_charsFetch a web page and return its metadata as JSON: title, byline, site name, excerpt and word count (no full body).
url必填Fetch a web page and return all of its outbound http(s) links (with anchor text) as JSON. Useful for crawling or finding related pages.
url必填limitFetch 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已滿足適用檢查項的 100%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
POST https://mcp.vanshul.com/mcp # JSON-RPC 2.0 (MCP)GET https://mcp.vanshul.com/health # { ok: true, tools: [...] }{ "mcpServers": { "web-reader": { "url": "https://mcp.vanshul.com/mcp" } }}npx mcp-remote https://mcp.vanshul.com/mcp{ "mcpServers": { "web-reader": { "url": "https://mcp.vanshul.com/mcp" } } }{ "mcpServers": { "web-reader": { "command": "npx", "args": ["mcp-remote", "https://mcp.vanshul.com/mcp"] } } }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"}}}'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.mdcd 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